当前位置: 首页 > article >正文

当mysql的slave无法同步master数据时,如何基本不断业务重置主从同步关系

问题场景

MySQL主从同步失效,slave因为各种原因跟丢了master的数据写入,无法继续正常进行后续数据同步。

解决思路

重置主从同步关系,让slave从当前mster最新数据进行同步,其核心就是两点:

  1. 将master的最新数据导入slave
  2. 让slave访问到导入数据所对应的binlog和binlog position

解决步骤

网上大多数步骤都要求停业务,停业务的目的是能备份到最新的主节点的数据以及这份数据对应的同步状态,否则会同步失败,因为当你重置master再导出主节点数据之间,主节点是可能继续写入数据的,这样会导致你不知道应该从binlog的哪个position进行主从同步。折腾了一下午以后,找到了不用停业务也能准确备份数据和当前数据所在binlog position的方法。

At Slave Server:

停止slave:

mysql> STOP SLAVE;

At Master Server:

停止master:

mysql> RESET MASTER;
mysql> FLUSH TABLES WITH READ LOCK;

导出主节点数据:

root@mysql-0:/# mysqldump -u root -p --add-drop-table --routines --events --all-databases --force --master-data > all-databases.sql

这里有几个关键的参数:

--add-drop-table:在create table语句前会加上drop table语句,这样导入时就不用手动去清理slave的数据了
--all-databases:包含所有的database,就不用一个数据库一个数据库的备份了
--master-data:这个对主从同步是比较重要的参数,加了之后mysqldump会自动记录当前mysqldump时的binlog position

At Slave Server:

导入备份出来的数据:

root@mysql-1:/# mysql -uroot -p < all-databases.sql

导入之后,网上找到的大部分资料都让执行reset slave和CHANGE MASTER TO MASTER_LOG_FILE='mysql-0-bin.000001', MASTER_LOG_POS=1,目的是让slave去跟master重置后的起始节点,但实际上对于我们没有停业务的系统来说,这样做是不现实的,因为binlog pos不会是1,所以我们在前面导出的时候加了--master-data就起作用了,里面就包含change master to语句,刚才导入的时候就已经带上了,就不用单独去执行了。所以接下来直接启动slave就好:

mysql> START SLAVE;

然后通过这个命令查看SLAVE状态,如果Slave_IO_Running和Slave_SQL_Running都是yes的话则重置成功:

mysql> show slave status \G


http://www.kler.cn/a/403731.html

相关文章:

  • 工程师 - 智能家居方案介绍
  • 半导体工艺与制造篇5 光刻
  • 【Golang】协程
  • Springboot + vue 健身房管理系统项目部署
  • 大数据-227 离线数仓 - Flume 自定义拦截器(续接上节) 采集启动日志和事件日志
  • django从入门到实战(一)——路由的编写规则与使用
  • MySQL社区版的启动与连接
  • 数据集-目标检测系列- 花卉 鸡蛋花 检测数据集 frangipani >> DataBall
  • TensorFlow 2.0 windows11 GPU 训练环境配置
  • Unity3D空中突袭(1)场景导入
  • 全面认识AI Agent,一文读懂AI智能体的架构指南
  • Qlik Sense QVD 文件
  • i春秋-Look(sql字符集、超短sql注入、写入shell)
  • [毕业设计]最全计算机专业毕业设计选题推荐汇总(源码+论文)
  • 稳联技术通讯Modbus转 EtherNet IP 网关 在机场行李运输系统中的应用
  • 【前端】将nuxt.js项目部署到域名二级目录下
  • FPGA上板项目(五)——UART测试,串口发送
  • 中间件--laravel进阶篇
  • 网络安全、Web安全、渗透测试之笔经面经总结
  • 浏览器插件调试方法总结
  • Apple Vision Pro开发001-开发配置
  • 【java基础】消息中间件篇
  • Linux应用项目之量产工具(四)——UI系统
  • GPTZero:高效识别AI生成文本,保障学术诚信与内容原创性
  • leetcode-12-整数转罗马数字
  • 马铃薯叶部病害图像分类数据集