mysql主从数据校验步骤

Percona Toolkit 主从一致性检查和修复
pt-table-checksum是一个在线验证主从数据一致性的工具,主要用于以下场景:
1.数据迁移前后,进行数据一致性检查
2.当主从复制出现问题,待修复完成后,对主从数据进行一致性检查
3.把从库当成主库,进行数据更新,产生了”脏数据”
4.定期校验

percona-toolkit使用方便,安装到任意一台可以连接主从数据库的服务器上即可。

一、percona-toolkit 安装
1.安装依赖

yum install perl-IO-Socket-SSL perl-DBD-MySQL perl-Time-HiRes perl perl-DBI perl-Digest-MD5 -y
2.安装RMP包

wget https://www.percona.com/downloads/percona-toolkit/2.2.7/RPM/percona-toolkit-2.2.7-1.noarch.rpm
rpm -ivh percona-toolkit-2.2.7-1.noarch.rpm
二、pt-table-checksum 检查一致性工具使用
举例:
Master 192.168.1.41
Slave 192.168.1.42

pt-table-checksum \
--nocheck-binlog-format \
--nocheck-plan \
--nocheck-replication-filters \
--recursion-method=dsn=D=database,t=dsns,h=192.168.1.42 \
--databases=database \
--tables=table \
--replicate=database.checksums \
-uroot \
-ppassword \
-h192.168.1.42
–nocheck-binlog-format #不检查复制的binlog模式,要是binlog模式是ROW,则会报错。
–nocheck-plan #不检查查询执行计划的安全性
–nocheck-replication-filters #不需要检查 Master 配置里是否指定了 Filter
–recursion-method=dsn=D=database,t=dsns,h=192.168.1.42 #以递归树方法检查指定数据库:dsn=链接方式,D=数据库,t=类型,h=要检查的从库。如果检查所有从库设置值processlist
–databases=database #要检查的数据库,多个用半逗号分隔
–tables=table #要检查的表,多个用半逗号分隔
–replicate= #检查结果存放的 数据库.表
-u #master 用户名
-p #master 密码
-h #master 地址

三、pt-table-sync 修复错误数据
pt-table-sync \
--nocheck-slave \
dsn=u=root,p=password,h=192.168.1.41,P=3306 \
--databases=database \
--replicate=database.checksums \
--print \
--verbose \
--execute
–nocheck-slave 如果你的表包含唯一索引,你应该使用–sync-to-master和 / 或–replicate选项来同步slave到其master。这通常会做正确的事情。当表上没有唯一索引时,除了在slave上修改数据别无选择,pt-table-sync会发现你想这么做。除非你指定–no-check-slave选项,否则它会发出报错然后死掉。
dsn=数据库连接设置,多个可重复配置
–databases 数据库名
–replicate=检查日志表
–print 输出过程内容
–verbose 输出不一致表信息
–execute 执行修改,建议先不加执行进行测试
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQL主从复制是MySQL数据库中常用的一种数据备份和读写分离方案。以下是MySQL主从复制的步骤: 1. 确保主从服务器的MySQL版本一致,并且主从服务器之间可以互相访问。 2. 在服务器上修改配置文件(my.cnf或my.ini),开启二进制日志(binary logging)。在配置文件中添加以下配置: ``` server-id = 1 log_bin = /var/log/mysql/mysql-bin.log ``` server-id是服务器的唯一标识,可以为任意整数,但每个服务器必须有不同的id。log_bin指定二进制日志文件的位置。 3. 重启服务器以加载新的配置。 4. 在服务器上创建用于复制的用户,并授予复制权限。例如,可以使用以下命令创建一个名为replication_user的用户: ```sql CREATE USER 'replication_user'@'%' IDENTIFIED BY 'password'; GRANT REPLICATION SLAVE ON *.* TO 'replication_user'@'%'; FLUSH PRIVILEGES; ``` 这将创建一个具有复制权限的用户,并刷新权限表。 5. 在从服务器上修改配置文件,开启复制功能。在配置文件中添加以下配置: ``` server-id = 2 replicate-do-db = dbname ``` server-id是从服务器的唯一标识,与服务器不同。replicate-do-db指定需要复制的数据库名,可以根据需要修改或省略。 6. 重启从服务器以加载新的配置。 7. 在从服务器上执行以下命令开始复制: ```sql CHANGE MASTER TO MASTER_HOST='master_ip', MASTER_USER='replication_user', MASTER_PASSWORD='password', MASTER_LOG_FILE='mysql-bin.XXXXXX', MASTER_LOG_POS=XXX; START SLAVE; ``` 其中,MASTER_HOST是服务器的IP地址,MASTER_USER和MASTER_PASSWORD是在第4步中创建的复制用户的用户名和密码。MASTER_LOG_FILE和MASTER_LOG_POS分别指定服务器上要复制的位置。 8. 检查复制状态,可以使用以下命令: ```sql SHOW SLAVE STATUS\G ``` 检查结果中的Slave_IO_Running和Slave_SQL_Running字段是否为"YES",如果是,则表示主从复制已成功启动。 这些步骤概述了MySQL主从复制的基本过程。根据具体情况和需求,可能需要进行进一步的配置和调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值