When setting up replication with existing data, transfer the snapshot from the master to the slave before starting replication. The process for importing data to the slave depends on how you created the snapshot of data on the master.
Choose one of the following:
If you used mysqldump:
Start the slave, using the
--skip-slave-start
option so that replication does not start.Import the dump file:
shell> mysql < fulldb.dump
If you created a snapshot using the raw data files:
Extract the data files into your slave data directory. For example:
shell> tar xvf dbdump.tar
You may need to set permissions and ownership on the files so that the slave server can access and modify them.
Start the slave, using the
--skip-slave-start
option so that replication does not start.Configure the slave with the replication coordinates from the master. This tells the slave the binary log file and position within the file where replication needs to start. Also, configure the slave with the login credentials and host name of the master. For more information on the
CHANGE MASTER TO
statement required, see Section 2.2.5.2, “Setting the Master Configuration on the Slave”.Start the slave threads:
mysql> START SLAVE;
After you have performed this procedure, the slave connects to the master and replicates any updates that have occurred on the master since the snapshot was taken.
If the server_id
system
variable for the master is not correctly set, slaves cannot
connect to it. Similarly, if you have not set
server_id
correctly for the
slave, you get the following error in the slave's error log:
Warning: You should set server-id to a non-0 value if master_host
is set; we will force server id to 2, but this MySQL server will
not act as a slave.
You also find error messages in the slave's error log if it is not able to replicate for any other reason.
The slave stores information about the master you have
configured in its master info repository. The master info
repository can be in the form of files or a table, as
determined by the value set for the
master_info_repository
system
variable. When a slave runs with
master_info_repository=FILE
,
two files are stored in the data directory, named
master.info
and
relay-log.info
. If
master_info_repository=TABLE
instead, this information is saved in the
master_slave_info
table in the
mysql
database. In either case, do
not remove or edit the files or table.
Always use the CHANGE MASTER TO
statement to change replication parameters. The slave can use
the values specified in the statement to update the status
files automatically. See Section 5.4, “Replication Relay and Status Logs”, for
more information.
The contents of the master info repository override some of
the server options specified on the command line or in
my.cnf
. See
Section 2.6, “Replication and Binary Logging Options and Variables”, for more details.
A single snapshot of the master suffices for multiple slaves. To set up additional slaves, use the same master snapshot and follow the slave portion of the procedure just described.