pt工具(3)pt-table-checksum数据一致性校验

原理: 在主库执行, 设置会话的binlog格式为statement格式, 设置会话的隔离级别为RR, 执行show processlist或show slave hosts确定从库的连接方式,把校验SQL先在master执行,再传到slave执行,如果主从分别执行的结果一样,那数据就是一致性,否则数据不一致。
其核心原理是把表的所有字段拼成一个值,做hash code运算,得到一个crc32的值,记录到master_cnc和master_cnt
create database percona;
create user checksum@'172.16.123.%' identified by 'chk123!@#';
GRANT SELECT, PROCESS, SUPER, REPLICATION SLAVE, REPLICATION CLIENT ON . TO 'checksum'@'172.16.123.%';
GRANT ALL PRIVILEGES ON percona.* TO 'checksum'@'172.16.123.%';

[root@vdb_172_16_123_101 14:04:39 /root]#
shell> pt-table-checksum --host=172.16.123.101 --port=3306 --user=checksum --password='chk123!@#' --no-check-binlog-format
            TS ERRORS  DIFFS     ROWS  CHUNKS SKIPPED    TIME TABLE
04-12T14:05:22      0      1        2       1       0   0.020 db3306.t1
04-12T14:05:22      0      0        0       1       0   0.024 mysql.columns_priv
04-12T14:05:22      0      0        2       1       0   0.024 mysql.db
04-12T14:05:22      0      0        2       1       0   0.025 mysql.engine_cost
04-12T14:05:22      0      0        0       1       0   0.026 mysql.event
04-12T14:05:22      0      0        0       1       0   0.027 mysql.func
04-12T14:05:22      0      1        1       1       0   0.024 mysql.gtid_executed
04-12T14:05:22      0      0       40       1       0   0.027 mysql.help_category
04-12T14:05:22      0      0      682       1       0   0.034 mysql.help_keyword
04-12T14:05:22      0      0     1340       1       0   0.024 mysql.help_relation
04-12T14:05:22      0      0      637       1       0   0.030 mysql.help_topic
04-12T14:05:22      0      0        0       1       0   0.015 mysql.ndb_binlog_index
04-12T14:05:22      0      0        0       1       0   0.029 mysql.procs_priv
04-12T14:05:22      0      0        1       1       0   0.022 mysql.proxies_priv
04-12T14:05:22      0      0        6       1       0   0.025 mysql.server_cost
04-12T14:05:22      0      0        0       1       0   0.023 mysql.servers
04-12T14:05:22      0      0        1       1       0   0.018 mysql.tables_priv
04-12T14:05:22      0      0        0       1       0   0.023 mysql.time_zone
04-12T14:05:22      0      0        0       1       0   0.034 mysql.time_zone_leap_second
04-12T14:05:22      0      0        0       1       0   0.038 mysql.time_zone_name
04-12T14:05:24      0      0        0       1       0   1.028 mysql.time_zone_transition
04-12T14:05:25      0      0        0       1       0   1.033 mysql.time_zone_transition_type
04-12T14:05:25      0      0        4       1       0   0.036 mysql.user
[root@vdb_172_16_123_101 14:27:39 /root]#
shell> pt-table-checksum --host=172.16.123.101 --port=3306 --user=checksum --password='chk123!@#' --no-check-binlog-format --databases=db3306
            TS ERRORS  DIFFS     ROWS  CHUNKS SKIPPED    TIME TABLE
04-12T14:31:21      0      1        2       1       0   0.022 db3306.t1
[root@vdb_172_16_123_101 14:31:21 /root]#
shell> pt-table-checksum --host=172.16.123.101 --port=3306 --user=checksum --password='chk123!@#' --no-check-binlog-format --ignore-databases=mysql
            TS ERRORS  DIFFS     ROWS  CHUNKS SKIPPED    TIME TABLE
04-12T14:31:43      0      1        2       1       0   0.023 db3306.t1

输出解读
TS 省略年份的日期时间
ERRORS 发生错误的次数
DIFFS 发生了几个chunk里的数据不一致,(chuk默认为1000条记录)
ROWS 表的总行数
CHUNKS 表划分多少个CHUNK
SKIPPED 发生错误跳过的
TIME 校验数据占用的时间
TABLE 校验的表名

使用pt-table-checksum的注意事项:
(1) 在主库执行
(2) 一般忽略mysql库校验

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇