Some time ago I've noted that one of the tools I use for testing various MySQL and MariaDB cases and to reproduce potential bugs, MySQL-Sandbox, is not updated any more. It turned out that active development switched to its port in Go called dbdeployer. You can find detailed information about dbdeployer and reasons behind developing it provided by its author, Giuseppe Maxia, here and there. See also this post at Percona blog for some quick review of its main features. One of the points of …[Read more]
10 Older Entries »
MySQL 8.0 GA is right around the corner. I
don't have precise information about its release, as I don't work
at Oracle. If I did, I would probably know, but I couldn't tell
when the release is scheduled to appear because of company
policies. I can, however, speculate and infer, based of my
experience with previous releases. My personal assessment is that
the release will appear before 9:00am PT on April 24, 2018. The "before"
can be anything from a few minutes to one week in advance.
Then, again, it may not happen at all if someone finds an atrocious bug that needs to be fixed asap.
Either way, users are keen on testing the new release in its current state of release candidate. Here I show a few methods that allow you to have a taste of the new …[Read more]
Version 0.3.0 of dbdeployer has gained the ability of deploying
multiple sandboxes concurrently. Whenever we deploy a group of
sandboxes (replication, multiple) we can use
--concurrent flag, telling dbdeployer that it
should run operations concurrently.
What happens when a single sandbox gets deployed? There are six sets of operations:
- Create the sandbox directory and write down its scripts;
- Run the initialisation script;
- Start the database server;
- Run the pre-grants SQL commands (if any;)
- Load the grants;
- Run the post-grants SQL commands (if any;)
When several …[Read more]
How it happened
A few years ago I started thinking about refactoring MySQL-Sandbox. I got lots of ideas and a name for the project (dbdeployer) but went no further. The initial idea (this was 2013!) was to rewrite the project in Ruby: I had been using Ruby at work and it looked like a decent replacement for Perl. My main problem was the difficulty of installation in an uncontrolled environment. If you have control over your environment (it's your laptop or you are in charge of the server configuration via Puppet or similar) then the task is easy. But if you ever need to deploy somewhere with little or no notice, it becomes a problem: there are servers where Perl is not installed, and is common that the server also have a policy forbidding all scripting languages from being deployed. …[Read more]
In my previous post, we saw the usage of MySQL Group Replication (MGR) in single-primary mode. We know that Oracle does not recommends using MGR in multi-primary mode, but there is so much in the documentation and in presentations about MGR behavior in multi-primary, that I feel I should really give it a try, and especially compare this technology with the already existing multiple master solution introduced in 5.7: multi-source replication.
To this extent, I will set up two clusters using MySQL-Sandbox. The instructions for MGR in …[Read more]
MySQL-Sandbox installs the MySQL server in
isolation, by rejecting existing option files using the option
--no-defaults. This is usually a good thing, because
you don't want the initialization to be influenced by options in
/etc/my.cnf or other options files in default
However, such isolation is also a problem when you need to add
options during the initialization. One example is innodb-page-size, which can be set to many
values, but only if the server was initialized accordingly. Thus,
you can't set
innodb-page-size=64K in your
configuration file because the default value is different. It
would fail, as InnoDB would conflict.
MySQL-Sandbox 3.1.11 introduces a new utility, different from anything I have put before in the MySQL Sandbox toolkit.
make_sandbox_from_url downloads a tiny MySQL tarball
from a repository and install it straight away.
As of today, the following packages are available
(what you download)
Figure 1: MySQL Sandbox states and where you can run the hooks
There are 3 options to run shell commands, 2 to run SQL queries, and 2 to run SQL files.
## Shell commands
--pre_start_exec=command : runs 'command' after the installation, before the server starts
--pre_grants_exec=command : runs 'command' after the server starts, before loading the grants.
--post_grants_exec=command : runs 'command' after the loading the grants.
## SQL statements
--pre_grants_sql=query : runs 'query' before loading the grants.
--pre_grants_file=filename : runs SQL file 'filename' before loading the grants.
--post_grants_sql=query : runs 'query' …
- MySQL-Docker operations. - Part 1: Getting started with MySQL in Docker.
- MySQL-Docker operations. - Part 2: Customizing MySQL in Docker.
- MySQL-Docker operations. - Part 3: MySQL replication in Docker.
We're going to explore the choices and the differences between various types of deployments. We will consider four use cases:
- [Friendly]: Testing an application on a server where a different version of the same application is already installed (examples: a Python app requiring many …
Docker is one of the fastest growing trends in IT. It allows fast
deployment of services and applications on a Linux machine (and,
with some limits, on other operating systems). Compared to other
methods of deploying databases, such as virtual machines or application
isolation, it offers faster operations and better
Many people, surprised by the sudden advance of this technology, keep asking What is Docker? And why you should use it?
I will write soon an article with a deep comparison of the three methods (VM, container, sandbox), but for now, we should be satisfied with a few basic facts:
- Docker is a Linux container. It deploys every application as a series of binary …
10 Older Entries »