首页 > 数据库 >MySQL主从数据不一致问题处理

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

时间:2024-10-18 12:00:41浏览次数:1  
标签:slave MySQL master 一致 mysql test 从库 主从

分析问题

  • 网络延迟

    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  [email protected]:/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就是用来解决主从数据不一致的情况的。引用

标签:slave,MySQL,master,一致,mysql,test,从库,主从
From: https://www.cnblogs.com/Smile-yun-1996/p/18473974

相关文章

  • 开源免费数据库监控工具,MySQL、Oracle、Postgres或MSSQL
    在信息系统项目中,UI、业务逻辑、数据库操作、文件操作、网络、API调用等许多环节都有可能产生性能问题,其中,数据库读写是最为常见的操作,我们也发现其实许多项目中的大部分瓶颈多来自于数据库操作。因此,在做性能优化的过程中,我们总是特别关注持久层的代码、数据库的设计和数据库的物......
  • 在centos7上安装mysql5.7
    1、此处是在MySQL官网获取的rpm包(也可直接在linux中使用yum获取这个rpm包到本地)   在MySQL官方网站的最底下找到这个此处选择的MySQL版本5.7.44,操作系统选Oracle Linux,OS版本选择linux7下载将下载好的二进制文件包上传到centos7中在windows系统中上传文件到虚拟机里......
  • MySQL基础函数的学习要点和步骤
    MySQL基础函数的学习要点和步骤可以归纳为以下几个方面:学习要点1.函数的概念:  -函数是一段可以直接被另一段程序调用的程序或代码。2.分类理解:  -字符串函数:如`CONCAT()`,`LOWER()`,`UPPER()`,`LPAD()`,`RPAD()`,`TRIM()`,`SUBSTRING()`等,用于处理字符串......
  • 震惊!MySQL竟然可以平滑从5.7.35升级到8.0.37
    一、前言好多网友问我有没有mysql升级的文章,今天它来了!数据库版本操作系统版本5.7.35CentOSLinuxrelease7.9.20098.0.37CentOSLinuxrelease7.9.2009二、升级方法选择in-place升级,顾名思义就是关闭现有版本MySQL,将二进制包替换成新版本并在现有数据目录上启动MySQL......
  • 数据库系列:主从延时优化
    相关文章数据库系列:MySQL慢查询分析和性能优化数据库系列:MySQL索引优化总结(综合版)数据库系列:高并发下的数据字段变更数据库系列:覆盖索引和规避回表数据库系列:数据库高可用及无损扩容数据库系列:使用高区分度索引列提升性能数据库系列:前缀索引和索引长度的取舍数据库系列:My......
  • MySQL数据库在Windows环境的配置
      本文介绍在Windows电脑中,下载、部署MySQL数据库的方法。  MySQL数据库可以说是最为常用的数据库之一了,在GIS领域中其也经常被用到。之前我们介绍过Redis、PostgreSQL、InfluxDB等多种数据库在Windows电脑中的下载、安装与运行方法,这里就再介绍一下MySQL数据库的配置......
  • 【重学 MySQL】七十、揭秘数据库对象,打造高效数据管理之旅
    【重学MySQL】七十、揭秘数据库对象,打造高效数据管理之旅数据库(Database)数据表(Table)视图(View)存储过程(StoredProcedure)触发器(Trigger)索引(Index)在MySQL中,数据库对象是用于存储、管理和操作数据的实体。这些对象在数据库设计中扮演着至关重要的角色,它们共同......
  • 【重学 MySQL】七十一、揭秘数据库魔法——深入探索并引入视图
    【重学MySQL】七十一、揭秘数据库魔法——深入探索并引入视图视图的定义视图的作用视图的注意事项在MySQL数据库中,视图(View)是一种非常强大且灵活的工具,它为用户提供了以更安全、更清晰的方式查看和管理数据的途径。视图的定义视图是一种虚拟表,其内容由S......
  • Ansible操作MySQL常用的几个模块
    1. mysql_user模块mysql_user模块用来添加,删除用户以及设置用户权限创建MySQL数据库的用户与口令(非root@localhost用户),直接通过playbooks中的案例来说明吧。-name:创建MySQL数据库用户--user_testmysql_user:#-----登陆数据库login_host:"localhost"......
  • mysql explain
    参考:[MySQL高级EXPLAIN用法和结果分析](https://blog.csdn.net/why15732625998/article/details/80388236)explain分析表的读取顺序数据读取操作的操作类型哪些索引可以使用哪些索引被实际使用表之间的引用每张表有多少行被优化器查询examplesqlexplainSELECTcoun......