数据库 之 Mysql复制的监控和维护

(1) 清理日志:mysql

PURGE ,删除二进制文件,不能直接物理删除,不然重启mysql服务可能会致使各类异常,须要使用命令PURGE进行删除,由于mysql重启后,就不会再找对应的文件,使用purge命令删除会自动更新索引文件,下次mysql重启时,就不会找对应的二进制文件
sql

PURGE { BINARY | MASTER } LOGS { TO 'log_name' | BEFORE datetime_expr };服务器

TO表示到该二进制文件以前的,不包括该二进制文件,都会被清除ide

或者,BEFORE某个时间,则到该时间以前的二进制日志文件都会被删除,若是这个时间刚好是某个二进制文件中间的某个时间点,那么也会把这个文件的该时间点以前的日志都删掉,可是该日志的该时间点后的日志不会被清除。工具

二进制日志必定不能删除,用来恢复数据,若是必定要删除,建议复制二进制文件到其余机器上,而后再用purge命令删除本机上的二进制文件spa

查找当前的二进制文件内容日志

MariaDB [sunnydb]> show binary logs;索引

+-------------------+-----------+资源

| Log_name          | File_size |同步

+-------------------+-----------+

| master-log.000001 |       542 |

| master-log.000002 |       468 |

| master-log.000003 |      1045 |

| master-log.000004 |      1296 |

+-------------------+-----------+

如清除master-log.000003 即清除master-log.000002 和master-log.000001的二进制log,命令以下

MariaDB [sunnydb]> purge binary logs to 'master-log.000003';

(2) 复制监控命令

查看复制相关的状态和文件的命令

MASTER:

查看当前用哪一个二进制文件,以及当前二进制文件的位置

SHOW MASTER STATUS;

查看二进制文件的记录

SHOW BINLOG EVENTS;

查看全部的二进制文件和文件大小

SHOW BINARY LOGS;

SLAVE:

查看从服务器的状态数据

SHOW SLAVE STATUS\G;

判断从服务器是否落后于主服务器的时间:

Seconds_Behind_Master: 0

(3) 如何肯定主从节点数据是否一致?

经过表的CHECKSUM检查,表建立时能够启用checksum功能,可是,一旦启用该功能,每一次更改表的信息都会计算表的校验码,消耗资源;

建议使用percona-tools中percona-toolkit   的功能 pt-table-checksum;计算出主从服务器上表的校验和,并进行比较。percona-toolkit  还能够检查各类系统指标

(4) 主从数据不一致时的修复方法?

从新复制;

若是不一样步的量不多,能够直接手动修改数据便可

注意,工具PXC按位复制,数据不一致的几率小

相关文章
相关标签/搜索