Preparing the NDB Cluster for replication consists of the following steps:
Check all MySQL servers for version compatibility (see Section 22.6.2, “General Requirements for NDB Cluster Replication”).
Create a slave account on the master Cluster with the appropriate privileges, using the following two SQL statements:
mysqlM> CREATE USER 'slave_user'@'slave_host' -> IDENTIFIED BY 'slave_password'; mysqlM> GRANT REPLICATION SLAVE ON *.* -> TO 'slave_user'@'slave_host';
In the previous statement,
slave_useris the slave account user name,
slave_hostis the host name or IP address of the replication slave, and
slave_passwordis the password to assign to this account.
mysqlM> CREATE USER 'myslave'@'rep-slave' -> IDENTIFIED BY '53cr37'; mysqlM> GRANT REPLICATION SLAVE ON *.* -> TO ''myslave'@'rep-slave'';
For security reasons, it is preferable to use a unique user account—not employed for any other purpose—for the replication slave account.
Configure the slave to use the master. Using the MySQL Monitor, this can be accomplished with the
CHANGE MASTER TOstatement:
mysqlS> CHANGE MASTER TO -> MASTER_HOST='master_host', -> MASTER_PORT=master_port, -> MASTER_USER='slave_user', -> MASTER_PASSWORD='slave_password';
In the previous statement,
master_hostis the host name or IP address of the replication master,
master_portis the port for the slave to use for connecting to the master,
slave_useris the user name set up for the slave on the master, and
slave_passwordis the password set for that user account in the previous step.
For example, to tell the slave to replicate from the MySQL server whose host name is
rep-master, using the replication slave account created in the previous step, use the following statement:
mysqlS> CHANGE MASTER TO -> MASTER_HOST='rep-master', -> MASTER_PORT=3306, -> MASTER_USER='myslave', -> MASTER_PASSWORD='53cr37';
For a complete list of options that can be used with this statement, see Section 126.96.36.199, “CHANGE MASTER TO Statement”.
To provide replication backup capability, you also need to add an
--ndb-connectstringoption to the slave's
my.cnffile prior to starting the replication process. See Section 22.6.9, “NDB Cluster Backups With NDB Cluster Replication”, for details.
For additional options that can be set in
my.cnffor replication slaves, see Section 17.1.6, “Replication and Binary Logging Options and Variables”.
If the master cluster is already in use, you can create a backup of the master and load this onto the slave to cut down on the amount of time required for the slave to synchronize itself with the master. If the slave is also running NDB Cluster, this can be accomplished using the backup and restore procedure described in Section 22.6.9, “NDB Cluster Backups With NDB Cluster Replication”.
In the event that you are not using NDB Cluster on the replication slave, you can create a backup with this command on the replication master:
shellM> mysqldump --master-data=1
Then import the resulting data dump onto the slave by copying the dump file over to the slave. After this, you can use the mysql client to import the data from the dumpfile into the slave database as shown here, where
dump_fileis the name of the file that was generated using mysqldump on the master, and
db_nameis the name of the database to be replicated:
shellS> mysql -u root -p db_name < dump_file
For a complete list of options to use with mysqldump, see Section 4.5.4, “mysqldump — A Database Backup Program”.Note
If you copy the data to the slave in this fashion, you should make sure that the slave is started with the
--skip-slave-startoption on the command line, or else include
skip-slave-startin the slave's
my.cnffile to keep it from trying to connect to the master to begin replicating before all the data has been loaded. Once the data loading has completed, follow the additional steps outlined in the next two sections.
Ensure that each MySQL server acting as a replication master is configured with a unique server ID, and with binary logging enabled, using the row format. (See Section 17.2.1, “Replication Formats”.) These options can be set either in the master server's
my.cnffile, or on the command line when starting the master mysqld process. See Section 22.6.6, “Starting NDB Cluster Replication (Single Replication Channel)”, for information regarding the latter option.