1.主库开启log_bin 功能,并设置server_id
2.主库创建主从同步的mysql账号,并授予replication,slave权限
mysql -e "GRANT replication slave *.* to 'repl'@'192.168.137.110/255.255.255.0' identified by 'repl'" -uroot -p
3.主库整库锁表,然后备份已有数据生成sql文件,并拷贝至从库服务器,完成后解锁主库
mysql -e " flush table with read lock " -uroot -p123456
mysqldump -uroot -p123456 -A --master-data=1 > test.sql
scp /tmp/test.sql [email protected]:/tmp
mysql -e " unlock tables " -uroot -p123456
1.设置server_id, 从库一般不需要开启log_bin功能,除非做级联,即同时还作为其他库的主库
[mysqld]
server_id=2222 #需要跟主库不一致
2.先手动复制主库的数据到从库
mysql -uroot -p123456 < repl.sql
3.如果主库配置第三步中,备份数据时没有指定–master-data=1 ,则需要在从库中指定主库信息
mysql -e "change master to \
master_host='192.168.137.110', \
master_log_file='mysqlbin.000004',\
master_user='repl',master_password='repl',\
master_log_pos=428;" -uroot -p123456
mysql> change master to master_host='192.168.137.110',master_port=3306,master_user='repl',master_password='repl';
4.从库开启同步开关
mysql -uroot -p123456 -e " start slave;"
查看从库情况show slave status\G;
通过编辑my.conf
修改参数relay_log_recovery = 1 (自动放弃所有未执行的relay-log,并且重新从master上获取日志,这个参数默认关闭)
mysqlbinlog mysql-bin.000001
mysql> show master status;查看binlog日志确定要恢复的位置
mysqlbinlog --start-position=120 --stop-position=428 mysql-bin.000013 > /tmp/test.sql;将指定位置的binlog文件用mysqlbinlog工具导出sql语句(shell命令行执行)
mysql> source /tmp/test.sql;在数据库中将SQL文件再执行一次
###参考
https://segmentfault.com/a/1190000008942618
https://www.cnblogs.com/fllf/p/10417431.html