MySQL主从配置提示Failed to initialize the master info structure错误

大清早收到一个MySQL的自定义语言告警 :replication interrupt,看来是主从同步报错了。
登陆MySQL,执行 show slave status \G 发现salve已经停止了,于是使用 start slave启动,结果有如下报错:

ERROR 1201 (HY000): Could not initialize master info structure; more error messages can be found in the MySQL error log

搜索了下,网上给出的解决办法基本都是:

①、执行 reset slave;
②、重新执行 change master:

mysql> change master to
    -> master_host='192.168.1.100',
    -> master_port=3306,
    -> master_user='repl',
    -> master_password='repl',
    -> master_log_file='mysql-bin.000051',
    -> master_log_pos=254105;
③、执行 start slave

于是试了下,发现还是一样的报错,顺着报错信息,看了下error 日志:

160324  6:40:10 [ERROR] log *** glibc detected *** /data/mysql/bin/mysqld: corrupted double-linked list: 0x00002ab038100ab0 *** listed in the index, but failed to stat
160324  6:40:10 [ERROR] Error counting relay log space
160324  6:40:10 [ERROR] Failed to initialize the master info structure
160324  6:40:10 [Note] Event Scheduler: Loaded 0 events
160324  6:40:10 [Note] /data/mysql/bin/mysqld: ready for connections.
Version: '5.5.13-log'  socket: '/data/mysql/data/mysqld.sock'  port: 3306  Source distribution
160324  9:33:41 [ERROR] log *** glibc detected *** /data/mysql/bin/mysqld: corrupted double-linked list: 0x00002ab038100ab0 *** listed in the index, but failed to stat
160324  9:33:41 [ERROR] Error counting relay log space
160324  9:33:54 [ERROR] log *** glibc detected *** /data/mysql/bin/mysqld: corrupted double-linked list: 0x00002ab038100ab0 *** listed in the index, but failed to stat
160324  9:33:54 [ERROR] Error counting relay log space
160324  9:35:29 [ERROR] log *** glibc detected *** /data/mysql/bin/mysqld: corrupted double-linked list: 0x00002ab038100ab0 *** listed in the index, but failed to stat
160324  9:35:29 [ERROR] Error counting relay log space
160324  9:37:47 [ERROR] log *** glibc detected *** /data/mysql/bin/mysqld: corrupted double-linked list: 0x00002ab038100ab0 *** listed in the index, but failed to stat
160324  9:37:47 [ERROR] Error counting relay log space

发现其中频繁出现如下错误:
 

ist: 0x00002ab038100ab0 *** listed in the index, but failed to stat

于是,把MySQL 数据文件目录下的 index info 文件都看了一遍,结果发现 Centos64-relay-bin.index文件中出现异常内容:MySQL主从报错解决:Failed to initialize the master info structure

这个文件正常情况应该是记录了 bin-log文件名称才对,比如:
 

./Centos64-relay-bin.002064
./Centos64-relay-bin.002065
./Centos64-relay-bin.002066
./Centos64-relay-bin.002067
./Centos64-relay-bin.002068
./Centos64-relay-bin.002069
./Centos64-relay-bin.002070

因此,将 Centos64-relay-bin.index 这个文件mv 重命名,然后重启MySQL,重新按照上文从网上照来的的步骤:reset、change master、start 成功搞定!
如果你也遇到类似问题,可以先按照网上提供的三个步骤试试,如果还是和本文类似的报错,请特别看下MySQL数据目录下的这几种文件:
mysql-bin.index
relay-log.info
主机名-relay-bin.index
可以尝试将他们重命名或移走,重启MySQL再走一遍上面的三个步骤应该可以搞定了!

时间: 2024-10-31 06:57:22

MySQL主从配置提示Failed to initialize the master info structure错误的相关文章

Mysql主从配置,实现读写分离

原文:Mysql主从配置,实现读写分离 大型网站为了软解大量的并发访问,除了在网站实现分布式负载均衡,远远不够.到了数据业务层.数据访问层,如果还是传统的数据结构,或者只是单单靠一台服务器扛,如此多的数据库连接操作,数据库必然会崩溃,数据丢失的话,后果更是 不堪设想.这时候,我们会考虑如何减少数据库的联接,一方面采用优秀的代码框架,进行代码的优化,采用优秀的数据缓存技术如:memcached,如果资金丰厚的话,必然会想到假设服务器群,来分担主数据库的压力.Ok切入今天微博主题,利用MySQL主从

Docker mysql 主从配置详解及实例_Mysql

Docker mysql 主从配置 1.首先创建两个文件my-m.cnf(主库配置) .my-s.cnf(从库配置) my-m.cnf 内容如下 # Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU

完整的mysql主从配置方法

  mysql主从分两个角色 1.主服务器 master 2.从服务器 slave mysql主从复制就是两个服务器之间数据库的同步,也可以理解成对主服务器的一个备份,当主服务器的数据进行了变更,那么从服务器也会自动更新,其实是通过bin-log日志实现的,也就说他们中间是传输binlog日志的.这样我们就可以对数据进行多个节点进行冗余从而保证可用性! 公司现在有三台服务器,一台阿里云,两台VPS,现在需要把阿里云上的数据库同步到其他两台VPS上.阿里云做主服务器其他两台服务器做从服务器 操作如

Mysql主从配置+读写分离(转)

   MySQL从5.5版本开始,通过./configure进行编译配置方式已经被取消,取而代之的是cmake工具.因此,我们首先要在系统中源码编译安装cmake工具.   注:安装前须查看是否已经安装了如下依赖包,如果没有请安装. apt-get -y install gcc g++ libncurses5-dev ncurses-devel openssl   一.主库安装及配置 1.源码安装cmake # tar xf cmake-3.0.0.tar.gz # cd cmake-3.0.0

完整的mysql主从配置方法详解

mysql主从分两个角色        1.主服务器    master        2.从服务器    slave mysql主从复制就是两个服务器之间数据库的同步,也可以理解成对主服务器的一个备份,当主服务器的数据进行了变更,那么从服务器也会自动更新,其实是通过bin-log日志实现的,也就说他们中间是传输binlog日志的.这样我们就可以对数据进行多个节点进行冗余从而保证可用性! 公司现在有三台服务器,一台阿里云,两台VPS,现在需要把阿里云上的数据库同步到其他两台VPS上.阿里云做主服

小记一次mysql主从配置解决方案_Mysql

今天研究了个开源项目,数据库是mysql的,其中的脚本数据需要备份,由于本人的机器时mac pro,而且mac下的数据库连接工具都不怎么好用,就想着如何利用windows下的数据库连接工具使用,并做相关备份,另外windows系统下的sqlyog工具还是非常强大的,在此推荐. 因此为了使用sqlyog等windows系统下的连接工具,便开始了一天的折腾. 首先两种思路,其一是利用另外一台宏碁笔记本电脑,直接在其上安装sqlyog使用,通过无线局域网进行连接使用,这种方式太过麻烦,而且来回换电脑很

MySQL主从配置的一些总结

一.做了mysql主从也有一段时间了,这两天检查磁盘空间情况,发现放数据库的分区磁盘激增了40多G,一路查看下来,发现配置好主从复制以来到现在的binlog就有40多G,原来根源出在这里,查看了一下my.cnf,看到binlog的 size是1G就做分割,但没有看到删除的配置,在mysql里show了一下variables: mysql>show variables like '%log%'; 查到了, | expire_logs_days | 0 | 这个默认是0,也就是logs不过期,这个是

mysql主从配置教程及容错方案详解

主从配置我们需要有两台mysql服务器,我们先要清楚两点 1.mysql配置文件my.cnf的位置 2.如何启动.停止mysql,找好启动文件 假设有两台机器,已经安装好了mysql(尽量同版本,且两台机器同一网络,可以ping通) 有朋友说:"从服务器,不能低于主服务器的版本",不过我是低于的,没有出现问题. 主机A: 192.168.1.100 从机B:192.168.1.101 可以有多台从机 环境windows 2003系统 主服配置文件 server-id = 1 log-b

Centos下nagios监控mysql主从配置的例子

方法一 一.mysql从服务器设置 1.mysql从服务器用户添加  代码如下 复制代码 执行如下语句添加用户: mysql> GRANT REPLICATION CLIENT ON *.* TO monitor@localhost IDENTIFIED BY 'PassWord'; 2.下载check-mysql-slave.pl脚本 cd /usr/local/bin/ wget http://www.centos.bz/wp-content/uploads/2012/10/check-my