故障诊断流程
- 检查错误日志:查看MariaDB的错误日志文件(通常位于
/var/log/mysql/error.log
),查找与relay - log相关的错误信息,如“relay log read failure”等,确定故障是否由relay - log损坏或丢失引起。
- 查看复制状态:在主从节点上执行
SHOW SLAVE STATUS \G
命令,重点关注Relay_Log_File
和Relay_Log_Pos
字段,确认从节点当前正在使用的relay - log文件及位置。如果这些值显示异常,比如文件不存在,可判断relay - log存在问题。
- 检查文件系统:使用
ls -l
等命令确认relay - log文件在文件系统中的实际存在情况及权限。若文件丢失,需进一步查看文件系统是否有异常,如磁盘空间满、文件系统损坏等。
数据恢复流程
- 从主库获取二进制日志:如果relay - log损坏或丢失,可从主库获取相应的二进制日志。在主库上执行
SHOW MASTER STATUS
,记录下当前的二进制日志文件名和位置。然后通过scp
等方式将主库对应时间段的二进制日志文件拷贝到从库。
- 停止从库复制:在从库上执行
STOP SLAVE
命令,停止复制进程,防止进一步错误。
- 重置从库复制配置:执行
RESET SLAVE
命令,清除从库当前的复制状态信息。
- 重新配置从库复制:根据主库的二进制日志信息,使用
CHANGE MASTER TO
命令重新配置从库连接主库的参数,包括主库的IP、端口、用户名、密码以及主库二进制日志文件名和位置等。例如:
CHANGE MASTER TO
MASTER_HOST='主库IP',
MASTER_USER='复制用户',
MASTER_PASSWORD='复制密码',
MASTER_LOG_FILE='主库二进制日志文件名',
MASTER_LOG_POS=主库二进制日志位置;
- 启动从库复制:执行
START SLAVE
命令,启动从库复制进程,从库会根据新配置从主库同步数据。
关键技术点
- 二进制日志与relay - log关系:理解主库二进制日志是记录数据库变更操作的日志,从库通过relay - log接收并应用主库的二进制日志内容。确保在恢复过程中准确获取和应用主库二进制日志,是数据恢复的关键。
- 复制配置参数:正确设置
CHANGE MASTER TO
中的各项参数,特别是MASTER_LOG_FILE
和MASTER_LOG_POS
,这两个参数决定了从库从主库的哪个位置开始同步数据,设置错误可能导致数据同步不准确或无法同步。
- 文件传输与权限:在从主库获取二进制日志文件时,要确保文件传输的完整性,并且在从库上文件的权限设置要符合MariaDB的运行要求,否则可能无法正常读取和应用日志。
预防措施
- 定期备份:定期对主库和从库进行备份,包括数据库文件和日志文件。可以使用
mysqldump
结合二进制日志备份,或者使用专业的备份工具如Percona XtraBackup。这样在relay - log出现问题时,可以基于备份进行恢复。
- 监控与预警:通过监控工具(如Zabbix、Prometheus等)实时监控relay - log的状态,包括文件大小、增长速度、是否存在等。设置合理的预警规则,当relay - log出现异常时及时通知管理员。
- 磁盘管理:确保存储relay - log的磁盘空间充足,定期检查磁盘健康状态,避免因磁盘故障导致relay - log损坏或丢失。可以考虑使用RAID等磁盘冗余技术提高磁盘的可靠性。
- 合理配置复制参数:在设置主从复制时,合理设置复制相关参数,如
sync_relay_log
,它决定了relay - log写入磁盘的频率。适当的值可以在保证数据安全的同时,减少I/O开销,避免因频繁写入导致的文件损坏风险。