新接手一个项目,但该项目的mysql数据库主从复制出现故障,之前项目负责人未解决,也是接手过来遇到的第一个坑,网上跳过错误的方式并没有解决该问题,故决定重做主从,恢复全量数据。
一、备份主库数据
mysqldump --socket=/var/lib/mysql/mysql.sock --single-transaction --master-data=2 -uuser -ppasswd -h xxx.xxx.xxx.xxx --all-databases > dbbak_20220318.sql
数据量很大,备份前需注意剩余空间大小,把备份好的数据传到从库主机
二、从库恢复数据
登上从库执行:source /testfile/dbbak_20220318.sql
执行时间根据数据量的多少还有机器配置,我这20多G执行了40分钟左右
确认master备份数据最后的mysql-bin和pos信息:
三、主从同步
1、停止slave
stop slave;
2、同步数据
change master to master_host='xxx.xxx.xxx.xxx',master_user='user',master_password='passwd',master_port=3306,master_log_file='master-bin.000678',master_log_pos=587219620,master_connect_retry=30;
3、启动slave
start slave;
4、检测主从同步状态
show slave status\G
四、mysqldump参数说明
--socket、-u、-p、-h:指定mysql的sock文件、用户名、密码、主机地址 --single-transaction:保证一个事务中所有相同的查询读取到同样的数据,其他innodb引擎的线程修改了表的数据并提交,对该dump线程的数据并无影响,不会锁表 --master-data=2:对于生成的sql文件产生备份时刻的mysql-bion的信息和pos信息 --all-databases:备份全库
【参考:https://blog.csdn.net/qq_35767346/article/details/88947412】