Difference between revisions of "System/MySQL/Replication"

From LunaSys
Jump to navigation Jump to search
Line 28: Line 28:
 
  cat dump.sql | mysql -u root -p
 
  cat dump.sql | mysql -u root -p
 
  mysql -u root -p -e "start slave"
 
  mysql -u root -p -e "start slave"
 +
 +
== Replication user on Master ==
 +
 +
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%' IDENTIFIED BY 'c8w5d9XXs.#';
 +
 +
== Slave initialization commands ==
 +
 +
CHANGE MASTER TO
 +
  MASTER_HOST = 'x.x.x.x',
 +
  MASTER_USER = 'repl',
 +
  MASTER_PASSWORD = 'passwd',
 +
  MASTER_LOG_FILE = 'mysql-bin.000001',
 +
  MASTER_LOG_POS = 259,
 +
  MASTER_SSL = 0;

Revision as of 15:56, 16 December 2011

Configuration

Edit /etc/my.cnf to have the following options (change server-id if necessary):

...
server-id               = 1
log_bin                 = /var/log/mysql/mysql-bin.log
expire_logs_days        = 10
max_binlog_size         = 100M
auto-increment-increment = 2
auto-increment-offset = 1
...

And for each database you want to replicate:

replicate-wild-do-table = db1.%
replicate-wild-do-table = db2.%
...

Init and start a slave

First, on the master, dump the data _with_ the --master-data and --single-transaction parameters:

mysqldump -u root -p --master-data --single-transaction --databases db1 db2 > dump.sql

Then source it on the slave and start slave:

cat dump.sql | mysql -u root -p
mysql -u root -p -e "start slave"

Replication user on Master

GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%' IDENTIFIED BY 'c8w5d9XXs.#';

Slave initialization commands

CHANGE MASTER TO
  MASTER_HOST = 'x.x.x.x',
  MASTER_USER = 'repl',
  MASTER_PASSWORD = 'passwd',
  MASTER_LOG_FILE = 'mysql-bin.000001',
  MASTER_LOG_POS = 259,
  MASTER_SSL = 0;