㈠ 哪些原因会导致mysql主从数据不一致
1.网络的延迟
由于mysql主从复制是基于binlog的一种异步复制,通过网络传送binlog文件,理所当然网络延迟是主从不同步的绝大多数的原因,特别是跨机房的数据同步出现这种几率非常的大,所以做读写分离,注意从业务层进行前期设计。
2.主从两台机器的负载不一致
由于mysql主从复制是主数据库上面启动1个io线程,而从上面启动1个sql线程和1个io线程,当中任何一台机器的负载很高,忙不过来,导致其中的任何一个线程出现资源不足,都将出现主从不一致的情况。
3.max_allowed_packet设置不一致
主数据库上面设置的max_allowed_packet比从数据库大,当一个大的sql语句,能在主数据库上面执行完毕,从数据库上面设置过小,无法执行,导致的主从不一致。
4.key自增键开始的键值跟自增步长设置不一致引起的主从不一致。
5.mysql异常宕机情况下,如果未设置sync_binlog=1或者innodb_flush_log_at_trx_commit=1很有可能出现binlog或者relaylog文件出现损坏,导致主从不一致。
6.mysql本身的bug引起的主从不同步。
7.版本不一致,特别是高版本是主,低版本为从的情况下,主数据库上面支持的功能,从数据库上面不支持该功能。
㈡ mysql主从同步,一个是mysql的5.5.56-MariaDB, 另外一个是 mysql的5.6.14 ,能数据
首先, 我要着重详述下为什么我们没有把MySQL 5.6 直接拿过来作为二次开发的基础,去做一个产品,可以称为 MariaDB 5.6. 这个原因的细节我们直接都没有和众人分享。
1. MySQL5.6 的代码库的文件结构已经被改动了。比如单个代码文件已经被分成多个,又或者是某些代码已经被重新归类到了不同的文件内。所以要把MariaDB 去配合现在这个文件结构一定是一个非常消耗时间的过程。而其实我确实不是很明白MySQL为什么要改动现有的文件结构。
2. MairaDB 5.5 已经有大量的代码不同于MySQL 5.5 的版本,而且也有很多的新的特征被整合到MariaDB 5.5 中,而这些特征直到 5.6 版本才出现在MySQL中。所以我们在比较同样功能的MySQL 和MariaDB的版本,同时在完成设计和QA方面的审核后,一个很明显的结论是MariaDB会是一个更好的产品。在大多数情况下,在选择MariaDB的时候,人们会更多的考虑到功能方面的偏好。
3. 所以MySQL的新代码,至少是修改bug的代码以后都没有必要进行相应的测试了。我们试想一下,当有这样一个功能要加入到一段代码中,而这个功能原本就是来源于这段代码的情况下,测试将是一个异常重要的过程来保证这个功能的正常运行。
sjZ52
翻译于 2年前
0人顶
顶 翻译的不错哦!
和上文中提到的第二点和第三点一样,Stewart Smith在Percona写到关于Mysql最后安全补丁的回归测试和QA如何测试使用MariaDB工程,以及保存在Percona服务器用作回归测试的测试用例的重要性。参考:wrote yesterday about the latest security fix in MySQL introcing a regression
MariaDB不仅仅是Mysql的一个替代品。它的主要目的是创新和提高Mysql的技术,Mysql5.6不是一个合适的创新基础平台,所以我们就做了下面的事情:
1.由于我们引入了一些新功能(像 multi-source replication多源复制, Cassandra integration, engine independent statistics独立统计系统等),所以我们需要搞个新版本。通常当你引入新功能时,你需要新建个版本。
2.下个版本称作“MariaDB5.6”是不准确的,因为他不是基于Mysql5.6,取而代之,我们决定版本号调为10.0
3.MariaDB引入Mysql5.6作为一种替代方案的话,需要提升很多功能,我们已经迈出了第一步,正朝着合并或者重建Mysql5.6的功能方向发展。