MySQL的一致性如何检测及实现数据同步

  

本文主要给大家简单讲讲MySQL的一致性如何检测及实现数据同步,相关专业术语大家可以上网查查或者找一些相关书籍补充一下,这里就不涉猎了,我们就直奔主题吧,希望MySQL的一致性如何检测及实现数据同步这篇文章可以给大家带来一些实际帮助。

一。部署percona tookit

    <李>

    下载安装包
    ~] https://www.percona.com/downloads/percona # wget - toolkit/3.0.5/binary/redhat/7/x86_64/percona工具包3.0.5 - 1. - el7.x86_64.rpm

    <李>安装
    ~) # yum安装percona -工具- 3.0.5 - 1. - el7.x86_64.rpm李

二。一致性检测工具pt-table-checksum

1。一致性检测原理

pt-table-checksum是percona-toolkit系列工具中的一个,用于检测主从数据库中的一致性。一次只工作在一张表上,会将主库上的表切割成一个一个的块,这种切割要依赖于表上的索引。所以在检测时不需要大量的内存和前期工作,而且还可以在数据尖峰是通过指数衰减算法,快速选择适合的块大小,减轻云服务器压力。将表切割成一个一个的接块下来会对块进行校验和,并记录下来。并对比从库上的校验和是否一致,从而判断数据是否一致。并且在检测过程中会自动判断主负载,以及奴隶延迟,一旦超过阈值就会停止下来。对于线上的环境影响不大。而且他还可以随时停止,只需在重启时加入——简历就会从上次的检测重新开始。接下来介绍其详细过程。

1)表结构的检查

表结构的检查也称之为单行数据校验和值的计算,并获取每一列的数据类型,把所有数据类型都转化为字符串,然后用concat_ws()函数进行连接,由此计算出该行的校验和值.checksum默认采用crc32计算。

2)数据块校验和的计算

pt-table-sync会智能分析表上的索引,然后把表的数据分裂成若干个块,计算的时候以块为单位。可以理解为把块内所有行的数据拼接起来,再计算crc32的值,即得到该块的校验和值,所以它把校验和结果存储到统计表,然后把执行过的sql语句记录到binlog中,任务就算完成。然后从云服务器会读取到binlog的sql语句依次执行,并将校验和保存在表中。

2。校验

1)授权

创建数据库pt字符集utf8;
格兰特更新、插入、删除、选择、过程、超级、复制奴隶alt=" MySQL的一致性如何检测及实现数据同步">

2。主从数据一致性检查

    <李> 1)授权(主主机上)
    mysql>创建数据库pt;,,,#创建数据库pt用于存放校验和的值
    mysql>格兰特更新、插入、选择过程,超级,复制奴隶alt=" MySQL的一致性如何检测及实现数据同步”>
    执行一致性检测(主从上都可执行)
    ~) # pt-table-checksum——nocheck-binlog-format nocheck-plan——nocheck-replication-filters复制=pt。校验和——数据库=hellodb - u & # 39;校验和# 39;- p & # 39; check_pass& # 39;- h 192.168.239.135 <>之前,,,,,,,,,TS错误,差别,,行,块跳过,时间,表   03-14T16:25:21,,,,,,,0,,,1,,,,,,,,8,,,,,,1,,0,,,,,0.011 hellodb.classes   03-14T16:25:21,,,,,,,0,,,0,,,,,,,14,,,,,,1,,,0,,,,,0.017 hellodb.coc   03-14T16:25:21,,,,,,,0,,,0,,,,,,,7,,,,,,,1,,,0,,,,,0.032 hellodb.courses   03-14T16:25:21,,,,,,,0,,,0,,,,,,,15,,,,,,1,,0,,,,,0.015 hellodb.scores   03-14T16:25:21,,,,,,,0,,,0,,,,,,,25,,,,,,1,,0,,,,,0.016 hellodb.students   03-14T16:25:21,,,,,,,0,,,0,,,,,,,4,,,,,,,1,,0,,,,,0.018 hellodb.teachers   03-14T16:25:21,,,,,,,0,,,0,,,,,,,0,,,,,,,1,,0,,,,0.016 hellodb。toc

    显示数据解释
    TS:完成检测表时的时间,不显示年份。
    错误:在校验时发生的错误和警告的次数
    差别:主从之间块不同的个数,如果不为0,表明主从数据有不一致的。
    行:检测表时一个块有多少行。如果使用了——选项,一个表中的块可能不同
    块:表被切割成了多少个块
    跳过:由于某种原因跳过检测块的数量
    时间:校验和此表所花的时间。
    表:被校验和的表明
    由上可知类表中有数据不一致。

3。主从同步

主从实现同步,往往都是借助pt-table-checksum产生的校验和表来说实现数据同步。

1)手动同步

~) # pt-table-sync——打印sync-to-master h=192.168.239.136 u=校验和,p==hellodb check_pass——数据库——复制=pt.checksums
h=192.168.239.136 u=校验和,p=check_pass指明需要同步的奴隶主机,以及登录的用户名和密码
——数据库=hellodb:指明同步的数据
——复制=pt。校验和:同步时使用的校验和数据库。
——sync-to-master:会通过显示奴隶状态去自动找主云服务器同步数据,如果没有此参数,我们需要通过h p u同时指明主人和奴隶,即两组h p u。

MySQL的一致性如何检测及实现数据同步