In the theoretical part of this series, we have seen
the basics of monitoring. In that article, though, we have barely
mentioned the new tools available in MySQL 5.7 and MariaDB 10.
Let’s start from something that has the potential of dramatically
changing replication as we know it.
Crash-safe tables and Global transaction identifiers in MySQL 5.6
and 5.7Global transaction identifiers (GTID) is a feature that
has been in my wish list for long time, since the times I was
working with the MySQL team. By the time I left Oracle, this
feature was not even in the plans.
When MySQL 5.6 was first disclosed, the biggest improvement for
replication was the introduction of crash-safe tables (see
Status persistence in …
The latest MySQL Sandbox, version 3.0.66 is out. It has a few
new features (as always, when I find myself doing the same thing
many times, I script it) and improved support for latest releases
of MySQL. You can now install, among other versions, MySQL 5.7.8
and MariaDB 10.1.x
Some notable additions in this release are in the scripts that
are created and customized for each sandbox. There are many of them and when one more arrives, it's
easy to overlook it. So, here are the new arrivals.
./show_binlog
When I am troubleshooting replication behavior, I often need to
inspect the latest binary log. The sandbox has a shortcut that
gives me the right version of mysqlbinlog for the
deployment:
MySQL 5.7 comes with many changes. Some of them are better
explained than others.
I wanted to see how many changes I could get by comparing SHOW
VARIABLES in MySQL 5.6 and 5.7.
The most notable ones are:
- binlog_format: the default is now ROW. This variable affects the format of the binary log, whether you use it as a backup complement or for replication, the change means bigger binary logs and possibly side effects.
- …
UPDATE: Almost solved! See at the end.
A clean installation of a database server is one where everything
goes according to the expectations. It used to be easy: you only
had to do what the manual says, and, presto! you would see your
database server installed and ready to use. If something went
wrong, you got one or more error messages that informed you of
what needs to be fixed.
Sometimes, rarely, it happened that you got also a warning
message, telling you that while the installation was successful,
you could improve it by fine tuning this and that. No big
deal.
Gone are those times. A clean installation nowadays is a much
harder exercise, if not impossible. Let’s give it a try using
MySQL 5.7.7.
Attempt #1 using mysql_install_db
The first error you could do when using a new version of MySQL is
assuming that basic operations are …
When a new version of MySQL appears, the first source of information for the brave experimenter is a page in the manual named What is new in MySQL X.X, also known as MySQL in a nutshell. For MySQL 5.7, the in-a-nutshell page lists quite a lot of changes. In that page, the list of removed features is enough to send a chill down the spine of most any DBA. Some of the items in the deprecation section are removals in disguise, as they require immediate, rather than delayed, action to use the new version with existing application (SET …
[Read more]
Maintaining a project like MySQL::Sandbox is sometimes tiring, but it has its
advantages. One of them is that everything related to the server
setup comes to my attention rather earlier than if I were an
average DBA or developer.
I try to keep MySQL Sandbox up to date with every release of
MySQL and (to a lesser extent) MariaDB [1].
For this reason, I am used to trying a new release with MySQL
Sandbox, and … seeing it fail.
Of the latest changes in MySQL, probably the most disruptive was
what happened in MySQL 5.7.6, where the mysql.user table
lost the password column.
Yep. No ‘password’ column anymore. And just to make the setup
procedure harder, the syntax of SET PASSWORD …
MySQL, the original brand, the one developed by the MySQL team at Oracle, is steadily evolving. You can feel it if you try every new release that comes out of the milestone release cycle. Or even if you don’t try all of them, just testing a release once in a while gives you something to think about.
The engineers at Oracle are trying hard to improve the defaults. If you are the out-of-the-box type, and just install the new version on top of the previous one, leaving the same setup in place, you may be up for a for a few surprises. It’s the marketing, see? They tell you that just by replacing your old MySQL (5.1 or 5.5) with MySQL 5.6 you get 30% to 70% performance improvement. Which happens to be true, not only because the server is better, but also because they have changed the defaults. However, this change in defaults may come with some serious consequences for the ones who …
[Read more]I was pleased to see Morgan’s announcement about a fix to an old problem of mine. In March 2012 I complained about MySQL verbosity during installation.
In MySQL 5.7.3, this behavior was changed. While the default is still as loud as it can, you can now add an option (log_error_verbosity) to send only errors to STDERR, which allows you to hide the output of mysql_install_db, and still get the errors, if they occur.
Well done!
However, the same obnoxious verbosity is also in MariaDB 10.0.x. Since I discussed this specific bug with a few MariaDB developers early in 2012, I was disappointed to see this same output when running mysql_install_db with MariaDB. Here’s the same appeal: MariaDB …
[Read more]One of the most common errors in development is where a loop or a retrieval by index falls short or long by one unit, usually because of an oversight or a logic in coding.
Of the following snippets, which one will run 10 times?
/* #1 */ for (N = 0 ; N < 10; N++) printf("%d\n", N);
/* #2 */ for (N = 0 ; N <= 10; N++) printf("%d\n", N);
/* #3 */ for (N = 1 ; N <= 10; N++) printf("%d\n", N);
/* #4 */ for (N = 1 ; N < 10; N++) printf("%d\n", N);
The question is deceptive, as there are two snippets that will run 10 times (1 and 3). But they will print different numbers. If you ware aiming for numbers from 1 to 10, only #3 is good.
After many years of programming, off-by-one errors are rare in my code, and I have been able to spot them or prevent them at first sight. That’s why I feel uneasy when I look at the way parallel replication is enabled in …
[Read more]
Overview
First off, the important news. Tungsten Replicator 2.1.0 was released
today.
You can download it and give it a try right now.
Second, I would say that I am quite surprised at how much we have done in this release. The previous release (2.0.7) was in February, which is just a few months ago, and yet it looks like ages when I see the list of improvements, new features and bug fixes in the Release Notes. I did not realized it until I ran my last batch of checks to test the upgrade from the previous release, which I hadn’t run for quite a long time. It’s …
[Read more]