MySQL NDB Cluster uses row level locks instead of a single shared
commit lock in order to prevent inconsistency in simultaneous
distributed transactions. This gives NDB a great advantage over
all other MySQL clustering solutions and is one reason behind
cluster’s unmatched ability to scale both reads and
writes.
NDB is a transactional data store. The lowest and only isolation
level available in NDB is Read Committed. There are no dirty
reads in NDB and only committed rows can be read by other
transactions.
All write transactions in NDB will result in exclusive row locks
of all individual rows changed during the transaction. Any other
transaction is allowed to read any committed row independent of
their lock status. Reads are lock-free reads.
The great advantage is that committed reads in NDB never block
during writes to the same data and always the latest committed
changes are read. A select doesn't block concurrent …
JSON has proven to be a very import data format with immense
popularity. A good part of my time for the last two or so years
has been dedicated to this area and I even wrote a book on the subject. This is a
comparison of the implementations of handling JSON data in MySQL
and MariaDB. I had requests from the community and customers for
this evaluation.
JSON Data Types Are Not All Equal
MySQL added a JSON data type in version 5.7 and it has proven to
be very popular. MariaDB has JSON
support version 10.0.16 but is actually an alias to a
longtext data type so that statement based replication
from MySQL to MariaDB is possible.
MySQL stores JSON documents are …
MySQL Replication Data Recovery using 'mysqlbinlog' - Part
II
The previous post (PART-I)
http://mysqlhk.blogspot.com/2018/10/mysql-replication-recovery-from-binlog.html
It describes the Replication Recovery from binlog by using those
binlog files to be treated as Relay Log. The Relay Log
mechanism when the server is startup, the recovery is the
SQL_THREAD applier to apply data to the
database. Check on the PART-I post for
details.
Part II is about using the MySQL utility "mysqlbinlog" to dump
the content from binlog files and apply the SQL to the
Database.
Documentation
https://dev.mysql.com/doc/refman/8.0/en/mysqlbinlog.html
https://dev.mysql.com/doc/refman/8.0/en/point-in-time-recovery.html
The following sections describe the tutorial for Replication Data
Recovery using 'mysqlbinlog'.
The tutorial …
A framework can be a great way to allow you to spend more time on the actual application or web site and less time on standard tasks. It can also greatly reduce the amount of custom code needed. Django is one of the best known web frameworks for Python, and the good news is that it works out of the box with MySQL Server 8 and MySQL Connector/Python 8. This blog will look at how to use Django with MySQL 8.
There actually is very little to get Django to work with MySQL 8.
Just install it, configure Django to use MySQL Connector/Python
as a backend, and that’s it. From the Django point of view, you
just have to configure the database option in
settings.py to use MySQL Connector/Python and your
database settings, for example:
DATABASES = { …[Read more]
There are basically two things which I majorly like about using
MyRocks, 1. LSM Advantage – smaller space & lower write
amplification and 2. Best of MySQL like replication,
storage engine centric database infrastructure operations and
MySQL orchestration tools. Facebook built RocksDB as an
embeddable and persistent key-value store with lower
amplification factor () compared to InnoDB. Let me explain a
scenario were InnoDB proves less efficient compared to RocksDB in
SSD:
We know InnoDB is constrained by a fixed compressed page
size. Alignment during fragmentation and compression causes extra
unused space because the leaf nodes are not full. Let’s consider
a InnoDB table with a compressed page size of 8KB. A 16KB
in-memory page compressed to 5KB still uses 8KB on storage.
Adding to this, each entry in the primary key index has 13
bytes of metadata (6 byte transaction id + 7 byte rollback
pointer), and the …
Recently, I’ve been working with a customer to evaluate the different cloud solutions for MySQL. In this post I am going to focus on maintenance windows and requirements, and what the different cloud platforms offer.
Why is this important at all?
Maintenance windows are required so that the cloud provider can do the necessary updates, patches, and changes to our setup. But there are many questions like:
- Is this going to impact our production traffic?
- Is this going to cause any downtime?
- How long does it take?
- Any way to avoid it?
Let’s discuss the three most popular cloud provider: AWS, Google, Microsoft. These three each have a MySQL based database service where we can compare the maintenance settings.
AWS
When you create an instance you can define your maintenance window. It’s a 30 minutes block when AWS can update and restart …
[Read more]We discussed in our previous blogs about the MySQL-related dashboards. We highlighted the things that a DBA can benefit from by studying the graphs, especially when performing their daily routines from diagnostics, metric reporting, and capacity planning. In this blog, we will discuss the InnoDB Metrics and the MySQL Performance Schema, which is very important especially on monitoring InnoDB transactions, disk/cpu/memory I/O, optimizing your queries, or performance tuning of the server.
This blog touches upon the deep topic of performance, considering that InnoDB would require extensive coverage if we tackle its internals. The Performance Schema is also extensive as it covers kernel and core parts of MySQL and storage engines.
Let’s begin walking through the graphs.
MySQL InnoDB Metrics
This dashboard …
[Read more]Schema change is one of the crucial tasks in MySQL with huge tables. Schema change can cause locks.
What is gh-ost?
gh-ost is a triggerless online schema change for MySQL by Github Engineering .It produces light workload on the master during the schema changes . We need online schema change to alter a table without downtime (locking) in production.pt-online schema change is the most widely used tool for making changes in the tables.gh-ost is just an alternative to pt-online schema change.
Why we have to use gh-ost?
…
[Read more]PMM (Percona Monitoring and Management) is a free and open-source platform for managing and monitoring MySQL, MongoDB, and PostgreSQL performance. You can run PMM in your own environment for maximum security and reliability. It provides thorough time-based analysis for MySQL® and MongoDB® servers to ensure that your data works as efficiently as possible.
While much of the team is working on longer-term projects, we were able to provide the following feature:
- MySQL and PostgreSQL support for all cloud DBaaS providers – Use PMM Server to gather Metrics and Queries from remote instances!
- Query Analytics + Metric Series – See Database activity alongside queries
- Collect local metrics using node_exporter + textfile …
When running distributed database clusters, it is quite common to front them with load balancers. The advantages are clear - load balancing, connection failover and decoupling of the application tier from the underlying database topologies. For more intelligent load balancing, a database-aware proxy like ProxySQL or MaxScale would be the way to go. In our previous blog, we showed you how to run ProxySQL as a helper container in Kubernetes. In this blog post, we’ll show you how to deploy ProxySQL as a Kubernetes service. We’ll use Wordpress as an example application and the database backend is running on a two-node MySQL Replication deployed using ClusterControl. The following diagram illustrates our infrastructure:
Since we are going to deploy a similar setup as in …
[Read more]