1. 创建复制账户
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO repl@'192.168.0.%' IDENTIFIED BY 'p4ssword';
2. 打开主库binlog日志
log_bin = mysql-bin
server_id = 10
如果之前没有在MySQL的配置文件中log-bin选项,就需要重新启动MySQL, 使用SHOW MASTER STATUS命令,检查状态
3. 备库上的配置
log_bin = mysql-bin
server_id = 2
relay_log = /var/lib/mysql/mysql-relay-bin
log_slave_updates = 1
expire_logs_days =30
#readonly = 1
4. 启动复制
CHANGE MASTER TO MASTER_HOST='server1',
MASTER_USER='repl',
MASTER_PASSWORD='p4ssword',
MASTER_LOG_FILE='mysql-bin.0000001',
MASTER_LOG_POS=0;
SHOW SLAVE STATUS;
根据参数Slave_IO_State,Slave_IO_Running,Slave_SQL_Running判断运行状态
START SLAVE;
SHOW SLAVE STATUS;
SHOW PROCESSLIST;
5. 给已经运行的主库创建备库
mysqldump --single-transaction --all-databases --master-data=2 --host=server1 | mysql --host=server2
选项--single-transaction使得转储的数据为事务开始前的数据。如果使用的是非事务型表,可以使用--lock-all-tables选项来获得所有表的一致性转储
只需要把备份或快照恢复到备库,然后使用CHANGE MASTER TO指定二进制日志的坐标。
6. 推荐的一些备置
在主库上二进制日志最重要的选项是sync_binlog:
sync_binlog=1
如果开启该选项,MySQL每次在提交事务前会将二进制日志同步到磁盘上,保证在服务器崩溃时不会丢失事件。在一个不需要作为主库的备库上,该选项带来了不必要的开销。它只用于二进制日志,而非中继日志。
推荐明确指定二进制日志的名字
log_bin=/var/lib/mysql/mysql-bin
在备库上,我们同样推荐开启如下配置选项,为中继日志指定绝对路径:
relay_log=/path/to/logs/relay-bin
skip_slave_start
read_only
指定绝对路径可以避免多个MySQL版本中存在的BUG,这些BUG可能会导致中继日志在一个意料外的位置创建。skip_slave_start选项能够阻止备库在崩溃后自动启动复制
如果正在使用MySQL5.5并且不介意额外的fsync导致的性能开销,最好设置以下选项:
sync_master_info =1
sync_relay_log =1
sync_relay_log_info =1
7. 其它操作
跳过二进制日志
STOP SLAVE;
SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; #跳过一个事务
START SLAVE;