首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

揭秘MySQL主从数据不一致

但是主从架构运行时间长久后容易出现数据不一致的情况,比如因从库可写造成的误操作或者复制bug等,本篇文章将会详细探究出现主从不一致及如何解决这种问题。...1.造成主从不一致的原因 造成主从不一致的可能原因有很多,下面简单列举几条: 主库binlog格式为Statement,同步到从库执行后可能造成主从不一致。...2.主从不一致修复方法 下面介绍下主从不一致的修复方法,注意,这里讲的是修复主从不一致而不是修复主从同步错误。 想要修复主从不一致,我们首先要发现主从不一致,下面将根据不同情形给出合适的修复方法。...不过有时候情况并不是那么简单,可能遇到比较多的情况是:主从两个实例已经运行很久了,某日进行一致性检验发现主从不一致了,很难找到具体发生不一致的原因及时间。...总结: 本篇文章详细介绍了造成主从不一致的原因,修复不一致的方法及如何避免主从不一致。特别是不一致修复方法,可能还有其他方案,这个要考虑实际情况选择合适的方法修复。

1.9K20

主从结构不一致复制问题验证

背景说明: 在一次断网测试过程中,在主库发起了DDL操作,备库丢失该DDL,导致主从表结构不一致,接下来的测试竟然都正常,表结构不一致,不影响复制进程,感觉比较奇怪,在这之前都是认为主从表结构不一致会导致复制异常...c4', 'd4'); Query OK, 4 rows affected (0.01 sec) Records: 4 Duplicates: 0 Warnings: 0 mysql> 5、模拟主从表结构不一致...,即主库相比从库多了字段、少了字段,都不影响同步,甚至在部分场景下,数据类型不一致都是可以正常同步的 主从表字段数量不一致的条件及验证 主从相同的字段,其定义顺序必须一致 比如本次测试中刚开始的建表语句...主从差异字段,必须有默认值 我们上面测试的int、varchar(10)数据类型都是有默认值的,此处直接给出所有具有默认值的数据类型 主从表字段类型不一致也能同步的情况 这种情况比较好理解,核心思路就是字段精度或者存储范围扩大...至此,由主从不一致测试带来的几个疑问都解开了,记录一下,方便以后回顾 参考资料 https://dev.mysql.com/doc/refman/8.0/en/replication-features-row-searches.html

75750
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    数据库主从不一致

    主从不一致 在没缓存的情况下 1.当服务写完主库 2.有一个请求读取从库数据 3.主从同步完成 这时出现主从不一致(写后立即读) 处理方案 1.业务允许的情况,直接忽略 2.强制读主节点 3.选择性读主节点...即在主从同步这段时间读取主节点,同步完成之后读取从节点 可以利用一个缓存记录必须读主的数据。...如上图,当写请求发生时: (1)写主库 (2)将哪个库,哪个表,哪个主键三个信息拼装一个key设置到cache里,这条记录的超时时间,设置为“主从同步时延” (key的格式为“db_table_PK”)...当读请求发生时: 这是要读哪个库,哪个表,哪个主键的数据呢,也将这三个信息拼装一个key,到cache里去查询,如果, (1)cache里有这个key,说明1s内刚发生过写请求,数据库主从同步可能还没有完成...,此时就应该去主库查询 (2)cache里没有这个key,说明最近没有发生过写请求,此时就可以去从库查询以此,保证读到的一定不是不一致的脏数据。

    46010

    主从导致缓存不一致的思考

    image.png 问题在于主从数据同步管道延迟是不可知的, 当网络抖动或写入业务高峰期时, 很容易出现数据同步管道延迟, 导致缓存不是最新的数据...., 读写都切换为主库, 这样是可以避免写入的缓存可能不一致的问题。...这种方案问题也在于延迟时间内存在不一致的情况, 即使收到 binlog event 通知后也不一定会通知完所有从库, 同样存在不一致的风险, 但相比指定时间方案来说, 这种方案最大的优势是可以根据系统的实际情况进行删除缓存...被动式缓存对应的是主动式缓存, 指的是当数据发生编辑、新增时, 主动构建缓存, 这种方案可以最大避免因为主从延迟造成的问题, 缺点就是缓存管理成本高, 缓存节点变为有状态节点, 架构不灵活, 缓存污染发现不及时...虽然不能完全能够解决掉一致性问题, 但可以有效缩短不一致时间和机率.

    67840

    MariaDB 主从同步与热备

    MariaDB数据库自身提供的主从复制功能可以方便的实现数据的多处自动备份,还能实现数据库的拓展,多个数据备份不仅可以加强数据的安全性,通过实现读写分离还能进一步提升数据库的负载性能,为大规模企业MariaDB...mariadb-serversystemctl restart mariadbmysql_secure_installation2.将 MariaDB1 的数据拷贝到 MariaDB2 上,实现数据的一致性,(注意:这里应先锁定表结构,防止数据不一致.../mysqld.pid #MySQL进程号保存位置datadir=/var/lib/mysqla #数据文件保存位置socket=/var/lib/mysqla/mysql.sock...user=mysql #MySQL登陆用户名2.初始化数据库mysql_install_db --datadir=/var/lib/mysqla...mysql -P 3306 -S /var/lib/mysqla/mysql.sock #登陆147数据库mysql -P 3306 -S /var/lib/mysqlb/mysql.sock

    1.8K10

    手把手教你搭建 MySQL 主从复制经典架构(一主一从、主主、一主多从、多主一从)

    什么是主从复制及其原理(面试必问) 1. 什么是主从复制? 主从复制,是用来建立一个和主数据库完全一样的数据库环境,称为从数据库;主数据库是业务数据库, 从库相当于主库的备份。 2....主从复制原理(实现过程)?.../ pid-file=/var/lib/mysqla/mysqld.pid socket=/var/lib/mysqla/mysql.sock user=mysql server-id=30 [mysqld20...4)在从服务器上初始化数据库,生成目录mysqla,mysqlb mysql_install_db --datadir=/var/lib/mysqla --user=mysql ?...4)设置mysqla,myslb目录以及以下文件的属主为mysql(防止出权限问题) chown -R mysql /var/lib/mysqla/ chown -R mysql /var/lib/mysqlb

    19.4K66

    故障解析 | 主从数据不一致竟然不报错?

    1故障现象 主从数据不一致,但是看复制是正常状态(双 Yes)。此时主库执行,从库本该报错 1062 或者 1032 的 SQL,从库复制线程还是双 Yes,没有报错。...因为案例中复制进程为双 Yes,无法被监控捕获,同时无法得知数据不一致出现的时间点,所以无法通过分析 binlog 恢复。...本案例中的实例还进行过主从切换,只能联系业务方做一次全量的数据对比,得到一个完整数据的实例,然后重新构建从库。 4总结 最后总结一下 Auto_Position 的作用。...生产上实例开了 GTID 的话,主从复制建议用 AUTO_POSITION MODE 的方式,即 Auto_Position=1。...故障解析 | MySQL 主从复制遇到 1590 报错 故障解析 | 生产环境遇到 MySQL 数据页损坏问题如何解决?

    22720

    数据库主从不一致,怎么解?

    答:一主多从,主从同步,读写分离。 ?...如上图: (1)一个主库提供写服务 (2)多个从库提供读服务,可以增加从库提升读性能 (3)主从之间同步数据 画外音:任何方案不要忘了本心,加从库的本心,是提升读性能。 问:为什么会出现不一致?...答:主从同步有时延,这个时延期间读从库,可能读到不一致的数据。 ?...如上图: (1)服务发起了一个写请求 (2)服务又发起了一个读请求,此时同步未完成,读到一个不一致的脏数据 (3)数据库主从同步最后才完成 画外音:任何数据冗余,必将引发一致性问题。...问:如何避免这种主从延时导致的不一致? 答:常见的方法有这么几种。 方案一:忽略 任何脱离业务的架构设计都是耍流氓,绝大部分业务,例如:百度搜索,淘宝订单,QQ消息,58帖子都允许短时间不一致

    1.2K30

    时间精度引起MySQL主从不一致问题剖析

    主从数据不一致          近日接报某实例一个datetime字段主从数据不一致,其它数据暂未发现异常。...初步分析          对比数据发现从机比主机少一秒的数据经常出现,但主从复制状态一直正常,主机binlog中未发现有语句被跳过。...至此可以认定,异常数据在innodb引擎中存的值和binlog中的值是不一致的,在这里需要说明的是master上binlog格式是mixed,非row格式并不能完全保证binlog数据可靠。         ...精度问题前端页面和入库有不一致可以接受,但是在入库后binlog与innodb存的数据不一致,没有任何提示、报错直接导致主从数据不一致,这是不能接受的,必须挖出根本原因,保证数据的可靠性。         ...这里引擎层落盘数据和sql层转换拼接还原sql语句写入binlog是两个独立的过程,因此,如果sql层和引擎层对精度处理逻辑不一致,innodb引擎层对秒以下做四舍五入,而sql层直接舍弃秒以下精度,那么就可能造成这个问题

    2.5K20

    MySQL 主从复制数据不一致,怎么办?

    今天来说说 MySQL 主从复制数据不一致的问题,通过几个具体的案例,来向小伙伴们展示 binlog 不同 format 之间的区别。 1. 准备工作 以下配置基于 Docker。...注意,由于 MySQL8 密码插件的问题,这个问题同样会给主从配置带来问题,所以在 MySQL8 配置主从上,上面这行命令需要添加 get_master_public_key=1,完整命令如下: change...数据不一致问题 接下来我们创建一个 javaboy_db 的数据库,并在里边创建一个 user 表,user 表的定义如下: CREATE TABLE `user` (   `id` int(11) unsigned...这句 SQL 将来同步到 slave 之后,slave 照着执行一下,那必然出现执行结果不一致的问题,因为 uuid() 函数每次执行结果都不一样。 现在小伙伴们看明白问题的原因了吧。 4....接下来我们看下面记录的 SQL,如下: 这就是日志中记录的内容,可以看到,每个字段上具体的值是啥,都写下来了,这样当然就不会发生数据不一致的情况了。 5.

    63930

    敢说你没遇到过,主从数据库不一致

    一主多从,主从同步,读写分离。...问:为什么会出现不一致主从同步有时延,这个时延期间读从库,可能读到不一致的数据。...如上图: (1)服务发起了一个写请求; (2)服务又发起了一个读请求,此时同步未完成,读到一个不一致的脏数据; (3)数据库主从同步最后才完成; 画外音:任何数据冗余,必将引发一致性问题。...问:如何避免这种主从延时导致的不一致? 常见的方法有这么几种。 方案一:忽略。 任何脱离业务的架构设计都是耍流氓,绝大部分业务,例如:百度搜索,淘宝订单,QQ消息,58帖子都允许短时间不一致。...:PK”,假设主从延时为1s,这个key的cache超时时间也为1s。

    37530

    【黄啊码】MySQL入门—16、什么是数据库主从同步?怎么解决主从数据不一致

    流程如下:​今天我们就从一下几个方面了解数据库主从同步问题:为什么需要主从同步 首先不是所有的应用都需要对数据库进行主从架构的设置,毕竟设置架构本身是有成本的, 如果我们的目的在于提升数据库高并发访问的效率...主从同步的优点:读写分离我们可以通过主从复制的方式来同步数据,然后通过读写分离提高数 据库并发处理能力数据备份我们通过主从复制将主库上的数据复制到了从库上,相当于是一 种热备份机制,也就是在主库正常运行的情况下进行的备份...主从同步的原理实际上主从同步的原理就是基于 Binlog 进 行数据同步的。在主从复制过程中,会基于 3 个线程来操作,一个主库线程,两个从库线程。...进行主从同步的内容是二进制日志,它是一个文件,在进行网络传输的过程中就一定会存在延迟(比如 500ms),这样就可能造成用户在从库上读取的数据不是最新的数据,也就是主从同步中的数据不一致性问题。...COMMIT 之后不需要等从库返回任何结果,而是直接将结果返回给客户端,这样做的好处是不会影响主库写的效率,但可能会存在主库宕机,而 Binlog 还没有同步到从库的情况,也就是此时的主库和从库数据不一致

    87710

    扫码

    添加站长 进交流群

    领取专属 10元无门槛券

    手把手带您无忧上云

    扫码加入开发者社群

    相关资讯

    热门标签

    活动推荐

      运营活动

      活动名称
      广告关闭
      领券