怎样解决线上MySQL主从不一致问题探讨

发布网友 发布时间:2022-04-22 00:41

我来回答

2个回答

热心网友 时间:2022-04-07 23:11

由于各种原mysql主架构经现数据致情况现致归结几类 1:备库写数据 2:执行non-deterministic query 3:滚掺杂事务表非事务表事务 4:binlog或者relay log数据损坏 数据同步给应用带危害致命现主数据致情况见应先库线找半夜三更间应用停掉重新执行同步数据库体积十庞工作量想知让崩溃本文介绍使用percona-toolkit工具mysql主数据库同步状态进行检查重新同步 :安装percona-toolkit 二:修改mysql binlog格式binlog_format参数row格式 mysql binlog志三种格式别Statement, Mixed,及ROW 1.Statement: 每条修改数据sql都记录binlog 优点:需要记录每行变化减少binlog志量节约IO提高性能(相比row能节约少性能与志量取决于应用SQL情况同条记录修改或者插入row格式所产志量于Statement产志量考虑带条件update操作及整表删除alter表等操作ROW格式产量志考虑否使用ROW格式志应该跟据应用实际情况其所产志量增加少及带IO性能问题) 缺点:由于记录执行语句些语句能slave确运行必须记录每条语句执行候些相关信息保证所语句能slavemaster端执行候相同 结另外mysql 复制,像些特定函数功能slave与master要保持致相关问题(sleep()函数 last_insert_id()及user-defined functions(udf)现问题). 2.Row 记录sql语句文相关信息仅保存哪条记录修改 优点: binlog记录执行sql语句文相关信息仅需要记录条记录修改所rowlevel志内容非清楚记录每行数据修改细节且现某些特定情况存储程或function及trigger调用触发确复制问题 缺点:所执行语句记录志候都每行记录修改记录能产量志内容,比条update语句修改条记录则binlog每条修改都记录造binlog志量特别执行alter table类语句候由于表结构修改每条记录都发改变该表每条记录都记录志 3.Mixed 两种level混合使用般语句修改使用statment格式保存binlog些函数statement完主复制操作则采用row格式保存binlog,MySQL根据执行每条具体sql语句区待记录志形式StatementRow间选择种.新版本MySQL队row level模式做优化并所修改都row level记录像遇表结构变更候statement模式记录至于update或者delete等修改数据语句记录所行变

热心网友 时间:2022-04-08 00:29

由于各种原因,mysql主从架构经常会出现数据不一致的情况出现,大致归结为如下几类1:备库写数据2:执行non-deterministic query3:回滚掺杂事务表和非事务表的事务4:binlog或者relay log数据损坏数据不同步给应用带来的危害是致命的,当出现主从数据不一致的情况,常见的应对方法是先把从库下线,然后找个半夜三更的时间把应用停掉,重新执行同步,如果数据库的体积十分庞大,那工作量可想而知,会让人崩溃。本文介绍使用percona-toolkit工具对mysql主从数据库的同步状态进行检查和重新同步。一:安装percona-toolkit

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com