1. 主库服务器配置
主服务器MySQ配置参数,参数主要依据《高性能MySQL 第三版》
#replication safe for innodb engine innodb_flush_logs_at_commit innodb_support_xa=1 #replication server-id=100 log-bin=mysql-bin log-error=mysql-bin.err expire_logs_days=30 sync_binlog=1
2. 添加复制用户
只需要赋两个全局的权限: REPLICATION SLAVE, REPLICATION CLIENT
CREATE USER 'repl'@'192.168.10.132' IDENTIFIED BY '***'; GRANT REPLICATION SLAVE , REPLICATION CLIENT ON * . * TO 'repl'@'192.168.10.132' IDENTIFIED BY '***';
3. 备份主库,备份中加入binlog及位置
全面备份主库,备份前需要已经启用二进制日志。
mysqldump -hlocalhost --opt --master-data=1 --all-databases --max_allowed_packet=8M --net_buffer_length=128K -uroot -pyour-password >all.sql
为了获得一致性的备份,考虑加入参数–single-transaction 或 –lock-all-tables,分别针对事务型引擎及非事务型引擎,但它们不能同时使用。
注意其中–master-data=1参数,它将binlog及位置信息生成到备份文件中,大概如下一行
CHANGE MASTER TO MASTER_LOG_FILE=’mysql-bin.000004′, MASTER_LOG_POS=8747725;
4.iptables放行备库连入
针对从服务器ip到本地3306端口的连接
iptables -I INPUT 7 -s 192.168.10.132/32 -p tcp -m state --state NEW -m tcp --dport 3306 -j ACCEPT
5. 配置从服务器
server-id=201 log-bin=mysql-bin relay_log=/var/lib/mysql/mysql-relay-bin log_slave_updates=1 read_only=1
6. 还原到从库服务器上
SOURCE /path/to/bakup.sql;
6. 配置从库,连接到主库
事实上下面的log_file,log_pos可以不用再指定,因为备份里已经有该信息并还原到这里了。当然再指定一次也没负作用。
change master to master_host='106.185.34.99', master_user='repl', master_password='replrepl', master_log_file='mysql-bin.000004', master_log_pos=8747725;
7. 启动slave
start slave
完成
x. 如果异常,复制失败时,或许需要重配置slave才可以解决问题
stop slave; RESET SLAVE; SOURCE /path/to/bakup.sql; RESET SLAVE; change master to ... show slave status; #检查状态,确认主库及连接账号等 START SLAVE;
end
非常详细mysql主从复制步骤。