当前位置: 首页 > news >正文

06_pt-table-sync 工具解决 MySQL 主从数据不一致

06_pt-table-sync 工具解决 MySQL 主从数据不一致

pt-table-sync 是 Percona Toolkit 中用于修复 MySQL 主从数据不一致的同步工具。


一、准备工作

1. 安装 Percona Toolkit

# 安装 Perl 依赖环境(以 CentOS/RHEL 为例)
yum install -y perl-ExtUtils-CBuilder perl-CPAN perl-devel gcc make perl-DBI perl-DBD-MySQL# 下载 Percona Toolkit 源码
git clone https://github.com/percona/percona-toolkit.git# 编译安装
cd percona-toolkit
perl Makefile.PL
make && make install

如果执行 pt-query-digest --help 出错提示缺少模块 Digest/MD5.pm,执行:

bash复制编辑
yum install perl-Digest-MD5 -y

2. 创建 pt_user 用户及权限

建议在主库和从库都创建 pt_user 用户,并赋予必要权限:

CREATE USER 'pt_user'@'%' IDENTIFIED BY '123456';GRANT SELECT, PROCESS, REPLICATION SLAVE, REPLICATION CLIENT, SUPER ON *.* TO 'pt_user'@'%';
GRANT REPLICATION CLIENT ON *.* TO 'pt_user'@'%';FLUSH PRIVILEGES;

二、pt-table-checksum 使用要求及说明

1. 主库必须启用 binlog,且 binlog_format 为 ROW

因为 pt-table-checksum 依赖 binlog 来将校验 SQL 同步到从库。


2. 从库信息必须对主库可见

  • 从库必须正常运行复制线程(SHOW SLAVE STATUS\GSlave_IO_RunningSlave_SQL_RunningYes
  • 主库能通过 SHOW SLAVE HOSTS; 命令看到从库信息(包含 Server_idHostPort

3. pt-table-checksum 发现从库的方式

  • 默认通过主库 processlist 查找复制连接
  • 或者通过 SHOW SLAVE HOSTS 查找,从库必须正确配置 report_hostreport_port 变量

4. 如果主库可以发现从库,且 pt_user 权限充足,使用以下命令即可校验:

pt-table-checksum \--user=pt_user \--password='123456' \--host=主库IP \--port=主库端口 \--databases=数据库名 \--replicate=percona.checksums \--no-check-binlog-format \--no-check-replication-filters \--recursion-method=processlist

5. 如果无法自动发现从库(比如 SHOW SLAVE HOSTS 无从库记录,或者从库信息不可达),可用 --recursion-method=dsn 手动指定从库 DSN(主从库均需有对应 pt_user 用户和权限):

pt-table-checksum \--user=pt_user \--password='123456' \--host=主库IP \--port=主库端口 \--databases=数据库名 \--replicate=percona.checksums \--no-check-binlog-format \--no-check-replication-filters \--recursion-method=dsn=h=从库IP,P=从库端口,u=pt_user,p=123456

三、pt_user 对 percona 库的权限(存储校验结果)

pt-table-checksum 默认会在主库创建一个名为 percona 的库和 checksums 表,用于存储校验结果。

请确保 pt_user 有权限创建和操作该库:

CREATE DATABASE IF NOT EXISTS percona;GRANT ALL PRIVILEGES ON percona.* TO 'pt_user'@'%';FLUSH PRIVILEGES;

四、总结

  • 确保主库 binlog 格式为 ROW,复制正常
  • 确保主从库 pt_user 用户权限完整
  • 确保主库能通过 SHOW SLAVE HOSTS 或复制连接发现从库
  • 使用 pt-table-checksum 校验数据一致性
  • 如需修复不一致,使用 pt-table-sync(需同时连接主从库)

文章转载自:
http://buttercup.ciuzn.cn
http://arsenite.ciuzn.cn
http://astropologist.ciuzn.cn
http://boozeroo.ciuzn.cn
http://benighted.ciuzn.cn
http://chitlings.ciuzn.cn
http://booming.ciuzn.cn
http://abrader.ciuzn.cn
http://chiefly.ciuzn.cn
http://cellulation.ciuzn.cn
http://adulterous.ciuzn.cn
http://axiology.ciuzn.cn
http://caisson.ciuzn.cn
http://barie.ciuzn.cn
http://backslapper.ciuzn.cn
http://chiefy.ciuzn.cn
http://acidogenic.ciuzn.cn
http://bondage.ciuzn.cn
http://bilinguality.ciuzn.cn
http://anchoveta.ciuzn.cn
http://canuck.ciuzn.cn
http://arblast.ciuzn.cn
http://chiton.ciuzn.cn
http://anteporch.ciuzn.cn
http://audiovisuals.ciuzn.cn
http://awedness.ciuzn.cn
http://cere.ciuzn.cn
http://aeciostage.ciuzn.cn
http://asepticism.ciuzn.cn
http://barterer.ciuzn.cn
http://www.dtcms.com/a/280639.html

相关文章:

  • conda环境保存(后期再来整理)
  • etcd自动压缩清理
  • 2-Nodejs运行JS代码
  • iOS高级开发工程师面试——Swift
  • Fiddler 中文版抓包实战 构建标准化调试流程提升团队协作效率
  • echarts 绘制3D中国地图
  • React强大且灵活hooks库——ahooks入门实践之开发调试类hook(dev)详解
  • PostgreSQL 数据库中 ETL 操作的实战技巧
  • React源码6 三大核心模块之一:commit, finishConcurrentRender函数
  • 前端学习笔记:React.js中state和props的区别和联系
  • haproxy负载均衡
  • AntV G6 基础元素详解(React版)
  • 【PTA数据结构 | C语言版】创建哈夫曼树
  • 使用ZYNQ芯片和LVGL框架实现用户高刷新UI设计系列教程(第二十一讲)
  • 【PDF识别改名】使用京东云OCR完成PDF图片识别改名,根据PDF图片内容批量改名详细步骤和解决方案
  • 同样是“跳转”,为何forward地址栏不变,redirect会变?
  • RNN、GRU 与 LSTM 计算成本深入对比
  • 基于光场相机的激光增材制造熔池温度场原位多眼监测​​
  • 【zynq7020】PL的“Hello LED”
  • FPGA高端图像ISP培训课程,提供工程源码+视频教程+FPGA开发板
  • Softhub软件下载站实战开发(十八):软件分类展示
  • 使用LNMP一键安装包安装PHP、Nginx、Redis、Swoole、OPcache
  • Vmware中安装的CentOS7如何扩展硬盘大小
  • 语言模型玩转3D生成:LLaMA-Mesh开源项目
  • 【鸿蒙HarmonyOS】鸿蒙app开发入门到实战教程(二):封装自定义可复用组件
  • 前端面试专栏-工程化:25.项目亮点与技术难点梳理
  • 手搓RAG
  • 知识增强型Agent开发新范式:基于ERNIE-4.5的检索增强生成架构实践
  • 力扣-使用双指针的方法的题们(持续更新中。。。
  • NipaPlay(视频播放器) v1.3.24 绿色版