1. How To Setup a Replication Slave With TwinDB Backup Tool

How To Setup a Replication Slave With TwinDB Backup Tool

MySQL Replication

Setting up a replication slave is pretty straightforward, yet cumbersome process that needs a lot of attention to detail. Even if at first glance the six steps are simple, together they constitute something that is everything but easy to grasp.

What’s Our Solution

We decided to fix that. As a result, our very own TwinDB Backup tool can take backups, restore them, copy files over the network. If we put that together we can get a one line command to fire up a replica from a live master. And we did it in the recent TwinDB Backup release.

$ twindb-backup --version
2.14.4
$ twindb-backup clone mysql --help
Usage: twindb-backup clone mysql [OPTIONS] [SOURCE] DESTINATION

  Clone mysql backup on remote server and make it a slave. By default it
  will take a slave from a local MySQL on port 3306.

  Source and destinations are strings hostname:port. E.g. 10.10.10.10:3306.

  If port isn't specified 3306 will be assumed.

Options:
  --netcat-port INTEGER        Use this TCP port for netcat file transfers
                               between clone source and destination.
                               [default: 9990]
  --replication-user TEXT      Replication MySQL user.  [default: repl]
  --replication-password TEXT  Replication MySQL password.  [default:
                               slavepass]
  --help                       Show this message and exit.

How Does It Work

To clone a server, twindb-backup runs XtraBackup on the Master. It streams the backup copy directly to the Slave.

To transfer files over the network, it starts a netcat server on the Slave on a TCP port 9990 by default.

After the copy lands on the Slave, twindb-backup applies the XtrbaBackup redo log, fixes server_id, starts MySQL, and finally configures the replication.

Now this is what I call simple.

However, the most useful application of this feature probably comes with the twindb-backup python module.

def clone_mysql(cfg, source, destination,  # pylint: disable=too-many-arguments
                replication_user, replication_password,
                netcat_port=9990):
    """Clone mysql backup of remote machine and stream it to slave"""

In addition, the module can be used in your MySQL automation framework.

So, check it out and let us know what you think. We distribute twindb-backup packages via TwinDB Software Repository. As always, the source code is on GitHub.

Previous Post Next Post