MySql主从重新同步步骤

概要

由于一时大意,在从库里执行了一条delect,本来马上执行跳过一个错误,是可以马上恢复同步的。

stop slave;
set global sql_slave_skip_counter=1;1是指跳过一个错误)
slave start;

可当时没有检查同步功能,结果十几天后再回查看时已为时已晚,主从数据库差异比较大,已无法使用跳过来执行恢复,于是只能重做主从同步。

在网上查了大量资料,于是动手开干,这也是第一次做。

步骤

同步操作步骤:
1、登录从库的mysql停止slave

mysql> stop slave;

2、登录主库的mysql锁定数据库 (期间不能写入数据)
建议半夜执行,这时访问人数不多;

mysql> flush table with read lock;

3、主库清除binlog

mysql>RESET MASTER;

4、主库查看锁定状态下的binlog和位置并截图保存
这步很重要,到时还原后从binlog开始执行;

mysql>show master status\G;

5、主库备份数据库
(我的数据库60GB,估计备份时间18分钟,做参考)

mysqldump --max_allowed_packet=500M -uroot -p  cms > /mysql/backup.sql

输入mysql密码执行备份

6、主库解锁表
备份完成后解锁主库,主库恢复正常使用

mysql>unlock tables;

7、主库传输备份文件到192.168.1.2(从库)

scp /mysql/backup.sql root@192.168.1.2:/mysql/backup.sql

8、进入从库删除已不同步的数据库表(重要:检查是否是从库服务器,不要在主库上操作,以防误删除主库)

mysql>drop database _table;

9、从库创建表_table

mysql>create database _table;

10、从库还原数据库
(我的数据库60GB还原预估时间18个小时,做参考)

mysql>use _table;
mysql>SOURCE /mysql/backup.sql;

11、还原完成,检查数据表是否完整(对比主库的表)

mysql>use _table;
mysql>show tables;

12、重置slave,会重置从库相关设置。
( reset slave不会改变复制连接使用的参数,例如master_host, master_port, master_user, master_password)

mysql>reset slave;

13、修改同步日志和位点(第4步中保存的数据)

mysql>change master to master_log_file='mysql-bin.000001',master_log_pos=123;

14、从库开启slave

mysql>start slave;

15、查看从库同步状态

mysql>SHOW SLAVE STATUS\G;

如果出现
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
则表示同步成功

16、再次在主库中添加测试数据,看从库数据是否同步。

出错

在第15步时,可能出现错误,如下

[ERROR] Slave SQL: Error 'Duplicate entry '1007-443786-0' for key 'PRIMARY'' on query. Default database: 'ufo'. Query: 'insert into misdata (uid,mid,pid,sta
te,mtime) values (443786,1007,0,-1,1262598003)', Error_code: 1062
100104 17:39:05 [Warning] Slave: Duplicate entry '1007-443786-0' for key 'PRIMARY' Error_code: 1062
100104 17:39:05 [ERROR] Error running query, slave SQL thread aborted. Fix the problem, and restart the slave SQL thread with "SLAVE START". We stopped at log 'ufolog.000058
8' position 55793296

Error_code: 1062是主键重复,说明是从库已存在该键值,这时可以直接sql_slave_skip_counter=1跳过,或批量跳过1062。

强制批量跳过 1062错误,可能修改从库的/etc/my.cnf文件
在里面的 [mysqld]下面加入了一行
slave-skip-errors = 1062 (忽略所有的1062错误)
重启下从库的 mysql /etc/init.d/mysqld restart

重新执行查看是否已完成同步

mysql>SHOW SLAVE STATUS\G;

也有因为删除时从库不存在该数据的,也可以按情况跳过

参考

MYSQL主从同步故障解决(主键重复)
mysql数据库重新做主从(完全同步)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
MySQL主从同步是一种数据复制机制,用于将一个MySQL数据库实例中的数据自动复制到其他MySQL数据库实例,从而实现数据的备份、负载均衡和故障恢复等功能。 在主从同步中,一个MySQL实例被配置为主服务器(Master),而其他实例被配置为从服务器(Slave)。主服务器负责接收和处理客户端的写操作,然后将这些操作记录到二进制日志(Binary Log)。从服务器连接到主服务器,并通过读取主服务器的二进制日志来复制这些操作。从服务器将这些操作应用到自己的数据上,以保持与主服务器数据的一致性。 配置MySQL主从同步需要进行以下步骤: 1. 确保主服务器和从服务器之间可以互相通信。 2. 在主服务器上开启二进制日志功能,并配置二进制日志文件的位置和名称。 3. 在主服务器上创建一个用于复制的用户,并为该用户授予复制权限。 4. 在从服务器上配置复制参数,包括指定主服务器的IP地址、连接用户名和密码等。 5. 启动从服务器,并连接到主服务器进行复制。 6. 监控主从同步过程,确保数据的一致性和同步性。 需要注意的是,在配置主从同步时,需要考虑网络延迟、带宽和硬件性能等因素,以确保同步过程的效率和稳定性。另外,主从同步只能复制数据更改操作(如插入、更新、删除),而不能复制结构变更操作(如创建表、修改表结构)。如果需要同步结构变更,可以使用其他工具或方法来实现。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

80后钓鱼大叔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值