MySQL
MySQL高可用配置
MySQL Slave状态参数详解
基于二进制日志文件的复制
使用全局事务标识符GTID复制
MySQL安装升级
MySQL RPM包安装参考
MySQL编译化安装参考
MySQL Server版本升级
MySQL 操作手册/说明
MySQL导入导出操作
库,表,字段的字符集修改方法
根据字段生成自定义SQL语句
MySQL查询流程概述
MySQL 常用脚本
MySQL数据库冷备脚本
MySQL内存占用分析
MySQL内存消耗分析
检查MySQL引起的高内存占用
InnoDB下的内存分析和优化计算
MySQL常见问题
MySQL告警:Aborted connection日志的分析
MySQL使用命令kill进程后出现killed死锁问题
从库重起初始化relaylog失败
安全插件Connection-Control导致无法登录的问题
MySQL性能优化
MySQL查询慢性能分析
本文档使用 MrDoc 发布
-
+
home page
从库重起初始化relaylog失败
>MySQL VERSION: 5.7.27 ## 报错现象 ```sql mysql> start slave; ERROR 1872 (HY000): Slave failed to initialize relay log info structure from the repository ``` ## 原因分析 1. **查看`error.log`** ```log 2022-04-08T16:12:26.048917Z 0 [Warning] Neither --relay-log nor --relay-log-index were used; so replication may break when this MySQL server acts as a slave and has his hostname changed!! Please use '--relay-log=localhost-mysql-2-relay-bin' to avoid this problem. 2022-04-08T16:12:26.189199Z 0 [ERROR] Failed to open the relay log './localhost-mysql-1-relay-bin.000062' (relay_log_pos 765311807). 2022-04-08T16:12:26.189237Z 0 [ERROR] Could not find target log file mentioned in relay log info in the index file './localhost-mysql-2-relay-bin.index' during relay log initialization. 2022-04-08T16:12:26.190828Z 0 [ERROR] Slave: Failed to initialize the master info structure for channel ''; its record may still be present in 'mysql.slave_master_info' table, consider deleting it. 2022-04-08T16:12:26.190855Z 0 [ERROR] Failed to create or recover replication info repositories. 2022-04-08T16:12:26.190865Z 0 [Note] Failed to start slave threads for channel '' 2022-04-08T16:12:26.190872Z 0 [Note] Some of the channels are not created/initialized properly. Check for additional messages above. You will not be able to start replication on those channels until the issue is resolved and the server restarted. 2022-04-08T16:12:27.396188Z 0 [Note] Event Scheduler: Loaded 0 events 2022-04-08T16:12:27.396624Z 0 [Note] /data/mysql/basedir/bin/mysqld: ready for connections. ``` 检查日志反馈主要信息为: 1. 在中继日志初始化期间,在索引文件中找不到中继日志信息中提到的目标日志文件。 2. 无法初始化通道的主信息结构;它的记录可能仍然存在于“mysql.slave_master_info”表中,请考虑将其删除。 指在mysql库中的slave_relay_log_info表中保留之前relay_log的信息,导致启动slave失败 ## Relaylog说明 在MySQL复制结构下,Slave服务器会产生三种日志文件,用来保存主库的二进制日志事件以及relay log已执行到的位置和状态。 1. relay log 文件:由IO thread线程从主库读取的二进制日志事件组成,该日志被Slave上的SQL thread线程执行,从而实现数据的复制。 2. master info log:该文件保存slave连接master的状态以及配置信息,如用户名,密码,日志执行的位置等。在5.6版本之前,都是使用master.info文件,从5.6开始,通过在my.cnf 中配置 --master-info-repository=TABLE。这些信息会被写入mysql.slave_master_info 表中,代替原来的master.info文件了。 3. relay log info log:该文件保存slave上relay log的执行位置。在5.6版本之前,都是使用relay-log.info文件,从5.6开始,通过在my.cnf中配置 --relay-log-info-repository=TABLE,使用mysql.slave_relay_log_info表代替原来的文件。每次当slave上执行start slave时,就会读取该表中的位置信息。 新版本使用表来代替原来的文件,主要为了crash-safe replication,从而大大提高从库的可靠性。为了保证意外情况下从库的可靠性,mysql.slave_master_info和mysql.slave_relay_log_info表必须为事务性的表,从5.6.6起,这些表默认使用InnoDB存储引擎。在5.6.5及之前的版本默认使用MyISAM引擎,可用下面语句进行转换: ```sql ALTER TABLE mysql.slave_master_info ENGINE=InnoDB;ALTER TABLE mysql.slave_relay_log_info ENGINE=InnoDB; ``` **【注意】 不要试图手工的更新、插入、删除以上两个表的内容,以免出现意料不到的问题。** ## 处理办法 清理`mysql.slave_relay_log_info`表中的记录 **【注意】再次提醒,不要手动删该表数据** 使用MySQL提供的重置工具进行处理: ```sql reset slave; ``` 该命令执行后产生的影响: 1. 删除slave_master_info ,slave_relay_log_info两个表中数据; 2. 删除所有relay log文件,并重新创建新的relay log文件; 3. 不会改变gtid_executed 或者 gtid_purged的值
Nathan
July 6, 2022, 10:59 a.m.
转发文档
Collection documents
Last
Next
手机扫码
Copy link
手机扫一扫转发分享
Copy link
Markdown文件
PDF文件
Docx文件
share
link
type
password
Update password