pt-table-sync 配合pt-table-checksum 修复主从不一致。
先执行下面这条语句,打印出要执行的命令,确认无误后再将 --print 改为 --execute 执行。注意:登录信息指定为从库的信息,--sync-to-master 限于表有主键或者唯一索引。操作将在主库执行,同步到从库
pt-table-sync --sync-to-master --print --databases=test h=192.168.0.117,u=root,p='115433',P=19102
下面这条命令会直接执行
pt-table-sync --sync-to-master --execute --databases=test h=192.168.0.117,u=root,p='115433',P=19102
如果表没有主键
pt-table-sync --print --databases=test --no-check-slave dsn=u=root,p=root,h=172.172.178.75,P=3306 dsn=u=root,p=root,h=172.172.178.76,P=3306
--no-check-slave不检查desitination是否为从库,否则报如下错误:
Can't make changes onA=utf8,P=3306,h=172.172.178.76,p=... because it's a slave. See thedocumentation section 'REPLICATION SAFETY'
此种情况下修改都在从库上进行(不论表是否有唯一键)
--replicate= :指定通过pt-table-checksum得到的表.
--databases= : 指定执行同步的数据库,多个用逗号隔开。
--tables= :指定执行同步的表,多个用逗号隔开。
--sync-to-master :指定一个DSN,即从的IP,他会通过show processlist或show slave status 去自动的找主。
h=127.0.0.1 :服务器地址,命令里有2个ip,第一次出现的是Master的地址,第2次是Slave的地址。
u=root :帐号。
p=123456 :密码。
--print :打印,但不执行命令。
--execute :执行命令。