zoukankan      html  css  js  c++  java
  • MySQL主从一致性检查

    1.介绍
    主从一致性主要是通过 Percona-Toolkit 这个工具来实现的,Percona Toolkit 是一组高级的命令行工具,用来管理 MySQL 和系统任务,主要功能包括:
    验证主节点和复制数据的一致性
    有效的对记录进行归档
    找出重复的索引

    总结MySQL服务器
    从日志和tcpdump中分析查询
    问题发生时收集重要的系统信息。

    现在,使用这个工具来完成一致性检查和数据同步。
    官网:https://www.percona.com/software/mysql-tools/percona-toolkit

    2.安装Percona-Toolkit工具
    安装的方式有多种,可以编译安装,也可以通过包管理器安装,直接下载rpm包,然后yum进行安装。
    文件下载地址:https://www.percona.com/doc/percona-toolkit/2.2/installation.html
    wget percona.com/get/percona-toolkit.rpm
    yum -y install percona-toolkit.rpm

    wget percona.com/get/percona-toolkit.tar.gz
    tar -zxvf percona-toolkit.tar.gz && cd percona-toolkit

    3.一致性检查
    3.1 注意点:
    需要创建一个既能登录主库,也能登录从库,而且还能同步数据库的帐号。
    只能指定一个host,必须为主库的IP
    在检查时会向表加S锁
    运行之前需要从库的同步IO和SQL进程是YES状态

    3.2 创建检查帐号
    mysql>grant select,process,super,replication slave on *.* to 'mysql_check'@'x.x.x.x' identified by '123456';
    mysql>flush privileges;

    3.3 执行检测(在master上操作)
    pt-table-checksum --nocheck-replication-filters --databases=dy_qqopen --replicate=test.checksums --create-replicate-table --host=192.168.5.5 --port 3306 -umysql_check -pLooking_s123 --recursion-method=hosts
    参数说明:
    --nocheck-replication: 不检查复制过滤器,建议启动。后面可以用--databases来指定需要检查的数据库。
    --databases:指定需要被检查的数据库,多个则用逗号隔开
    --tables:指定需要被检查的标,多个用逗号隔开。
    --replicate:把checksum的信息写入到指定表中,建议直接写到被检查的数据库当中。
    --create-replicate-table:创建存放检查信息的数据表,第一次运行需要加,以后就不需要添加了。
    --recursion-method:查找 Slave 的方式,有三种, processlist, dsn, hosts
    h:Master地址
    u:MySQL的检测用户的用户名
    p:MySQL检测用户的密码
    P:3306, MySQL的端口号

    参数说明:
    TS: 完成检查的时间
    ERRORS:检查时发生错误和警告的数量
    DIFFS:0表示一致,1表示不一致,当指定--no-replicate-check时,会一直为0,当指定--replicate-check-onley则会显示不同的信息
    ROWS:表的行数。
    CHUNKS:被划分到表中的块的数目
    SKIPPED:由于错误或警告过大,则跳过块的数目。
    TIME:执行的时间。
    TABLES:被检查的表名
    说明:如果出现不一致的情况,需要进行修复。

    3.4 命令错误
    问题1:执行命令时提示 "Diffs cannot be detected because no slaves were found. Please read the --recursion-method documentation for information."错误
    解决方法:在从服务器/etc/my.cnf配置文件中添加两行,report_host=192.168.5.9(slave_ip) report_port=3306(slave_port)。然后重启 MySQL服务

    4. 不一致数据修复
    4.1 介绍
    使用 pt-table-sync 这个命令来修复。 pt-table-sync 命令介绍:高效的同步 MySQL 表之间的数据,他可以做单向和双向的表数据。也可以同步单个表,也可以同步整个库。它不同步表结构、索引、或任何其他模式对象。所以在修复一致性之前需要保证他们表存在。

    4.2 修复不一致的数据
    pt-table-sync --print --user=mysql_check --password=Looking_s123 h=192.168.5.5,D=dy_qqopen,t=qq_task h=192.168.5.9
    参数说明:
    --print:打印出修复语句,如果需要修复,将 --print 改成 --execute,会直接执行修复语句,但是建议先使用 print 看一下修复语句,以保证不会出错。
    --user:MySQL 检测用户的用户名
    --password:MySQL 检测用户的密码
    D:目标数据库
    t:数据表
    h:两个h,第一次出现的是 Master 的 IP ,第二次出现的是 Slave 的地址。

  • 相关阅读:
    HDU 6071
    HDU 6073
    HDU 2124 Repair the Wall(贪心)
    HDU 2037 今年暑假不AC(贪心)
    HDU 1257 最少拦截系统(贪心)
    HDU 1789 Doing Homework again(贪心)
    HDU 1009 FatMouse' Trade(贪心)
    HDU 2216 Game III(BFS)
    HDU 1509 Windows Message Queue(队列)
    HDU 1081 To The Max(动态规划)
  • 原文地址:https://www.cnblogs.com/OrcinusOrca/p/14689629.html
Copyright © 2011-2022 走看看