Difference between revisions of "System/MySQL/Replication"
Jump to navigation
Jump to search
Line 42: | Line 42: | ||
MASTER_LOG_POS = 259, | MASTER_LOG_POS = 259, | ||
MASTER_SSL = 0; | MASTER_SSL = 0; | ||
+ | |||
+ | == Restarting after a failed replicated statement == | ||
+ | |||
+ | SHOW SLAVE STATUS; | ||
+ | STOP SLAVE; | ||
+ | SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; | ||
+ | START SLAVE; | ||
+ | SHOW SLAVE STATUS; |
Revision as of 13:25, 19 December 2011
Contents
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 'passwd';
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;
Restarting after a failed replicated statement
SHOW SLAVE STATUS; STOP SLAVE; SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; START SLAVE; SHOW SLAVE STATUS;