MySQL管理工具MySQL Utilities — 检查复制数据一致性(52)

复制建立后,时常会担心从的数据是否与主一致。在正常的情况下,主从数据是一样的。不过,在数据层面上的故障引起数据更改而不抛出任何类型的错误导致不一致。这些数据的不一致可能是由bug、硬件故障、人为错误或未经授权的访问导致的。

理想的状态是检测这些问题,如有问题解决之,并防止再次发生。确定发生的原因可能不是一件容易的事,然而,解决检测数据一致性问题并确保服务器之间复制是同步的。

mysqlrplsync 工具来检测数据一致性问题,确保主从同步。

假设主服务器server1:3310,从服务器server2:3311, server3:3312,它们之间的复制没有出现错误。

实例

启动mysqlrplsync工具,检查指定的服务器

上面的例子说明如何使用mysqlrplsync工具来检查复制拓扑中的所有数据是否同步的。--master选项指定主,--slaves选项列出所有的从,也可以使用 --discover-slaves-login 选项来代替 --slaves 选项自动发现连接到主的从,要指定用户名和密码的。

在上面的例子中,数据一致性没有问题。如果有发现数据差异,会在前面显示[diff]并显示简洁的信息,此外,还在最后显示发现问题的数量的摘要。

该工具也允许查看从,而不必指定主,不过,不能保证与主的数据一致的。

注意:每个表的检查是有时效性的,这是因为数据在持续的改变,除非锁定表。

权限

对于主,用户必须要有锁定表、校验和获取主状态信息的权限。具体来说要有SUPER 或 REPLICATION CLIENT, LOCK TABLES 和 SELECT 权限。

对于从,用户必须要有 start/stop 从、校验和获取从状态信息的权限。具体来说要有SUPER 和 SELECT。

小技巧

在上述的例子中,mysqlrplsync工具检查服务器上的所有的数据,也是可以只检查特定的数据库和表的,在使用时指定目标数据库和表。也可以排除某些数据库和表的,使用--exclude选项。如'--exclude=test_rplsync_db,test_db.t0'排除test_rplsync_db库和test_db.t0表。

该工具提供了校验超时时间和等待从达到既定同步点时间的选项,分别是--checksum-timeout 和 --rpl-timeout 选项。更具体的用法参见前文mysqlrplsync。

teakki

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

目前评论:3   其中:访客  3   博主  0

  1. Cnck 5

    mscheck

  2. svan.xiean 5

    自己写的?