设为首页 加入收藏

TOP

Percona-Toolkit 之 pt-table-sync 总结(一)
2019-09-17 19:01:25 】 浏览:230
Tags:Percona-Toolkit pt-table-sync 总结

pt-table-sync - Synchronize MySQL table data efficiently.

pt-table-sync synchronizes data efficiently between MySQL tables.

pt-table-sync是Percona-Toolkit工具集中的一个组件,主要用于表数据的高效同步。

因为涉及到数据的修改,所以为了安全,建议在工具修改数据前先进行备份。在主从环境下,它所做的变更都是基于主库,而不是直接修改从库,因为这是保持主从复制数据一致性最佳方式。一般情况下出现主从数据不一致都是由于从库发生了变化,因此,工具进行同步数据时并不会影响主库当前的数据,而是影响从库的数据以达到一致性。

pt-table-sync工具可以用来修复由另一个工具pt-table-checksum检查校验出主从不一致的表数据进行修复。关于工具pt-table-checksum的使用可以参考我另一篇博文:Percona-Toolkit 之 pt-table-checksum 总结

本文是关于之前有关pt-table-checksum工具使用的学习笔记进行重新整理,使用最新版本的工具同时也进行原理知识的梳理。

关于获取和安装Percona-Toolkit工具集可以参考我另一篇博文:Percona-Toolkit 之 pt-online-schema-change 总结中的安装部分。

基本说明

pt-table-sync [OPTIONS] DSN [DSN]

常用选项(OPTIONS)

--ask-pass
命令行提示密码输入,保护密码安全,前提需安装模块perl-TermReadKey。

--[no]bin-log
默认值:yes
指定同步操作记录二进制日志,相当于执行SET SQL_LOG_BIN=1。如果指定'--no-bin-log',则对应执行SET SQL_LOG_BIN=0。

--channel
指定当主从复制环境是多源复制时需要进行同步哪个主库的数据,适用于多源复制中多个主库对应一个从库的情形。

--charset,-A
指定连接字符集。

--[no]check-child-tables
默认值:yes
指定检查当同步指定选项'--execute'时是否会对同步的表的子表(如有存在)有影响。当指定选项'--replace'、'--replicate'或'--sync-to-master'时,同步使用的REPLACE语句,如果被同步的表存在子表,并且子表有'ON DELETE CASCADE'、'ON UPDATE CASCADE'或'ON UPDATE SET NULL'选项时,工具会打印报错信息并跳过该表的同步,因为REPLACE语句会先进行DELETE然后再进行INSERT操作,这会导致子表删除数据。
可以指定选项'--no-check-child-tables'不进行检查,如果同时不影响子表还需要指定选项'--no-foreign-key-checks',这样被同步表的操作不会级联影响到它的子表。
该选项对应的检查只当指定选项'--execute'和选项('--replace'、'--replicate'和'--sync-to-master')其中之一同时使用时才会进行。指定选项'--print'并不会进行检查。

--[no]check-master
默认值:yes
指定当选项'--sync-to-master'使用时,尝试验证工具连接到的主库是否是真正的主库。

--[no]check-slave
默认值:yes
指定检查目标服务器是否是从库所在服务器。
如果目标服务器是从库,则对其进行变更是不安全的,但某些情况却必须这么做,比如当主库需要同步的表上没有唯一索引时,指定选项'--replace'是不会进行工作的,所以在这种情况下无法对主库进行变更。默认情况下如果需要对从库上进行变更,则工具会有提示,可以指定选项'--no-check-slave'禁止检查。

--[no]check-triggers
默认值:yes
指定检查目标表是否未定义触发器。

--chunk-index
指定使用哪个索引对表进行chunk分块操作。默认情况下会选择最优的索引,工具会在SQL语句中添加FORCE INDEX子句。

--chunk-size
默认值:1000
指定表分块的chunk大小,每个chunk对应的表行数,也可以是数据块大小,当指定大小时允许的后缀单位为k、M、G。

--chunk-column
指定根据表中字段对表进行chunk操作。

--host,-h
指定连接的数据库IP地址。

--port,-P
指定连接的数据库Port端口。

--user,-u
指定连接的数据库用户。

--password,-p
指定连接的数据库用户密码。

--socket,-S
指定使用SOCKET文件连接。

--databases,-d
指定需要进行同步的数据库,如有多个则用','(逗号)隔开。

--tables,-t
指定仅需要进行同步的表,如有多个则用','(逗号)隔开。表名称可以使用数据库名加以限定。

--columns,-c
指定进行比较的表字段,如有多个则用','(逗号)隔开。

--where
通过where语句条件限制表的同步内容。

--dry-run
分析、选择同步的算法,并打印信息和退出。
意味着指定选项'--verbose'可以得出工具分析的结果。分析结果的输出格式与工具实际执行时的输出一致,但是并不会有数据被影响。

--engines,-e
指定仅同步对应存储引擎的表。

--execute
指定工具执行同步操作使表数据达成一致状态。
工具使用此选项意味着将同步指定出现数据不一致的表,因此表的数据将被更改,除非指定了选项'--verbose',否则表数据的更改将以静默的方式进行。

--explain-hosts
指定打印工具的连接信息和选项信息并退出执行。

--[no]foreign-key-checks
默认值:yes
指定进行外键约束检查,相当于执行SET FOREIGN_KEY_CHECKS=1。如果指定'--on-foreign-key-checks',则对应执行SET FOREIGN_KEY_CHECKS=0。

--[no]unique-checks
默认值:yes
指定唯一键约束检查,相当于执行SET UNIQUE_CHECKS=1。如果指定'--on-unique-check',则对就执行SET UNIQUE_CHECKS=0。

--function
默认值:CRC32
指定校验操作使用的哈希函数。可选函数有SHA1、MD5等。

--ignore-columns
指定需要忽略比较的字段,如有多个则用','(逗号)隔开。

--ignore-databases
指定需要忽略比较的数据库,如有多个则用','(逗号)隔开,系统数据库information_schema和performance_schema默认被忽略。

--ignore-engines
默认值:FEDERATED,MRG_MyISAM
指定需要忽略同步的存储引擎类型的
首页 上一页 1 2 3 4 5 6 7 下一页 尾页 1/13/13
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇mysql关于视图的用法以及作用 下一篇大数据学习(一)-------- HDFS

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目