MySQL主从数据不一致问题处理

news/2024/10/18 12:07:41/文章来源:https://www.cnblogs.com/Smile-yun-1996/p/18473974

分析问题

  • 网络延迟

    mysql主从复制默认的是异步复制,通过网络传输binlog日志文件,可能你从库在设计之初就是跨机房或者网络故障,导致binlog传输出现延迟或故障,从而导致不同步或不一致。
  • 服务器负载

    如果其中某一台服务器负载太高或者磁盘占用100%,涉及msyql主从复制的3个线程可能会出现资源分配不足的情况,任何一个线程出现罢工现象,都会导致主从不同步或者同步不一致
  • 其它可能

    max_allowed_packet设置不一致,主从库的key自增键开始的键值跟自增步长不一致,出现binlog或者relaylog文件出现损坏,mysql本身的bug,主从数据库版本不一致等等。

解决问题

  • 忽略错误,继续同步

#第1步:先登入从库mysql
mysql -uroot -p密码
#第2步:停止slave
stop slave;
#第3步:表示跳过1步错误(后面的数字可自行调整)
set global sql_slave_skip_counter =1;
#第4步:启动slave
start slave
#第5步:检查同步状态,查看IO线程和SQL线程是否为Yes
show slave status\G
  • 保证主从完全一致,再重新同步

#第1步:登入主库mysql,禁止写入(全局读锁定),并保持该对话
flush tables with read lock;
#第2步:新建对话,备份主库数据,比如这里指定test库
mysqldump -uroot -p test > /tmp/test.sql;
#第3步:将备份文件远程复制到从库
scp /tmp/test.sql  root@192.168.xx.xx:/tmp/test.sql;
#第4步:查看主库状态,记下file和position,后面要用
show master status
#第5步:登入从库mysql,停止从库的状态
stop slave
#第6步:在从库还原备份数据
use test
source /tmp/test.sql
#第7步:设置主从同步,注意master_log_file 和master_log_pos的值要和master中的保持一致
change master to master_host = '192.168.xx.xx', master_user = 'syncuser', master_port=3306, master_password='xxxx', master_log_file = 'mysql-bin.000003', master_log_pos=1560;
#第8步:开启从库状态
start slave
#第9步:退出主库mysql对话或手动解锁
unlock tables
#第10步:查看同步状态
show slave status\G
  • 提示:
    1)在flush tables with read lock成功获得锁之前,必须等待所有语句执行完成(包括SELECT)。所以如果有个慢查询在执行,或者一个打开的事务,或者其他进程拿着表锁,flush tables with read lock就会被阻塞,直到所有的锁被释放,另外在退出mysql终端的时候都会隐式的执行unlock tables
    2)数据库备份最好写个shell脚本定期进行备份

  • 以上就是MySQL主从不同步或同步不一致的解决方案,不过对于具体问题还得具体分析,当然有兴趣的也可以使用一些开源工具进行主从数据库不一致进行修复,比如percona toolkit工具中的mk-table-sync就是用来解决主从数据不一致的情况的。引用

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/816790.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

20222410 2024-2025-1 《网络与系统攻防技术》实验三实验报告

1.实验内容正确使用msf编码器,veil-evasion,自己利用shellcode编程等免杀工具或技巧正确使用msf编码器,使用msfvenom生成如jar之类的其他文件 veil,加壳工具 使用C + shellcode编程通过组合应用各种技术实现恶意代码免杀 如果成功实现了免杀的,简单语言描述原理,不要截图…

构建自己的DEX

构建自己的DEX 简介:用户可通过主流钱包Dapp浏览器,访问URL地址,进行Swap, BSC链界面演示技术栈Solidity React Typescript Vite Wagmi Openzeppelin环境配置PancakeSwap V2 路由地址 0xB6BA90af76D139AB3170c7df0139636dB6120F7e https://remix.ethereum.org/ 开发部署环境…

ubantu20.4重置密码

一、重启ubantu系统,按shift键一直不放,再按E键 二、更改这里,删除ro 在Splash 后配置(rw init=/bin/bash),再按CTRL+X键 三、输入passwd root ,输入两次密码,直到看到“password updated successfully”表示成功了 四、输入exit退出,重启即可完成密码重置 五、如果重…

TB 级数据入库无压力:Apache DolphinScheduler 助力 ClickHouse 优化

引言 🚀 如今,随着大数据、物联网、人工智能等技术的快速发展,数据量呈现指数级增长。企业迫切需要一个既能快速处理大规模数据,又能保障性能稳定的数据库系统。ClickHouse 在数据分析与查询性能方面表现优异,但随着数据规模不断增长,其在数据写入与合并阶段的瓶颈也日渐…

20222417 2024-2025-1《网络与系统攻防技术》实验二实验报告

1.实验内容 1.1实践目标 (1)使用netcat获取主机操作Shell,cron启动某项任务(任务自定) PS:cron是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程 (2)使用socat获取主机操作Shell, 任务计划启动 (3)使用MSF meterpreter(或其他软件)生成可执行文件(后…

开源免费数据库监控工具,MySQL、Oracle、Postgres或MSSQL

在信息系统项目中,UI、业务逻辑、数据库操作、文件操作、网络、API调用等许多环节都有可能产生性能问题,其中,数据库读写是最为常见的操作,我们也发现其实许多项目中的大部分瓶颈多来自于数据库操作。因此,在做性能优化的过程中,我们总是特别关注持久层的代码、数据库的设…

Unity生命周期

基础概念 游戏的本质就是一个死循环,每一次循环都会处理游戏逻辑并更新一次游戏画面之所以能看到画面在动,是因为切换画面速度达到一定速度时人眼就会认为画面是动态且流畅的一帧就是执行了一次循环,Unity底层已经封装好了这个死循环我们只需要利用Unity的生命周期函数的规则…

索引器

基础概念 索引器,将一个对象变的可以像数组一样使用下标访问,索引器的创建类似属性,都需要设置Get和Set方法。 创建格式: type this[int index] {// get 访问器get{// 返回 index 指定的值}// set 访问器set{// 设置 index 指定的值} }注意事项属性的各种用法同样适用于索引…

在centos7上安装mysql5.7

1、此处是在MySQL官网获取的rpm包(也可直接在linux中使用yum获取这个rpm包到本地)在MySQL官方网站的最底下找到这个此处选择的MySQL版本5.7.44,操作系统选Oracle Linux,OS版本选择linux 7下载将下载好的二进制文件包上传到centos7中在windows系统中上传文件到虚拟机里面,可…

第36篇 linux服务器上启动framework应用程序流程

framework开发的应用程序,一般是不会在linux服务器上运行的,但是我们可以通过mono进行应用部署 1.查看linux服务上是否已经安装mono-core 方式1: rpm命令查看 rpm -qa | grep mono-core有结果返回,说明已经安装方式2:使用yum list installed yum list installed | grep mo…

GCM

GaloisCounter Mode (GCM) 运算符与函数$0^s$包含了$s$个$0$的比特串。$\mbox{CIPH}_K⁡(X)$在密钥$K$下对分组$X$应用分组密码得到的输出。$\mbox{GCTR}_K⁡(ICB,X)$在密钥K下对包含初始组计数$ICB$的比特串X应用包含给定分组加密的 $\mbox{GCTR}$函数的输出。$\mbox{GHASH}_H…