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 的地址。

  • 相关阅读:
    天文漫谈章测试题【第四章】
    天文漫谈章测试题【第三章】
    天文漫谈章测试题【第二章】
    天文漫谈-章测试题【第一章】
    天文漫谈期末考试
    《中国特色社会主义理论与实践》笔记 202001
    教育法学期末考试02MOOC
    教学法学期末考试MOOC01
    教育法学第九章单元测试MOOC
    在Linux平台上如何使用接静态库和共享库
  • 原文地址:https://www.cnblogs.com/OrcinusOrca/p/14689629.html
Copyright © 2011-2022 走看看