mysql出现Could not initialize master info structure 报错解决办法

回复 收藏
出现Could not initialize master info structure 报错解决办法
mysql> slave start;
ERROR 1201 (HY000): Could not initialize master info structure; more error messages can be found in the MySQL error log
mysql> reset slave;
Query OK, 0 rows affected (0.00 sec)

mysql> slave start;
Query OK, 0 rows affected (0.01 sec)

mysql> show slave status\G

因为在网上看到  relay-log=relay-bin 参数 包括论坛帖子里也有看到 从配置文件需要添加,
他的作用是  :从服务器I/O线程将主服务器的二进制日志读取过来记录到从服务器本地文件,然后SQL线程会读取relay-log日志的内容并应用到从服务器
因为我在做主从默认 配置文件里没有添加 relay-log=relay-bin 参数 他也是会默认同步的,在他的数据目录下边会默认产生localhost-relay-bin.000001,localhost-relay-bin.index,文件
自己就试了一下在配置文件添加次  relay-log= 参数
重启 mysql 服务,数据目录下会产生新的文件relay-bin.000002  relay-bin.index,也就是我在配置文件里自定义的  relay-log=relay-bin,只是默认按照我添加的relay-bin 换了个名字;
随后我进入 mysql 命令后 启动 slave start; 从,报错 Could not initialize master info structure; more error messages can be found in the MySQL error log,
执行 show slave status\G;
               Slave_IO_Running: NO
                 Slave_SQL_Running: NO
在网上又查看报错认识了 reset,
解决办法 reset slave;
关于 restart 有在网上查过资料
重置master服务
    RESET MASTER;
    这个是重置master的核心语法,看一下官方解释。
    RESET MASTER removes all binary log files that are listed in the index file, leaving only a single, empty binary log file with a numeric suffix of .000001, whereas the numbering is not reset by PURGE BINARY LOGS.
    RESET MASTER is not intended to be used while any replication slaves are running. The behavior. of RESET MASTER when used while slaves are running is undefined (and thus unsupported), whereas PURGE BINARY LOGS may be safely used while replication slaves are running.
    大概的意思是RESET MASTER将删除所有的二进制日志,创建一个.000001的空日志。RESET MASTER并不会影响SLAVE服务器上的工>作状态,所以盲目的执行这个命令会导致slave找不到master的binlog,造成同步失败。
    但是我们就是要重置同步,所以必须执行它。
执行 mysql> show slave status\G   
               Slave_IO_Running: YES
                 Slave_SQL_Running: NO
                    Last_Error: Error 'Can't create database 'db1'; database exists' on query. Default database: 'db1'. Query: 'create database db1'
报错原因可以看到是 db1 库的问题,是因为我在主上 删掉 db1库里的一个表造成的结果,从没有进行同步
解决办法 
mysql>slave stop;
mysql>SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
mysql> slave start;
mysql> show slave status\G
              Slave_IO_Running: Yes
                 Slave_SQL_Running: Yes
大工告成,SHOW SLAVE STATUS\G 检查同步状态,一切正常
2016-06-16 14:02 举报
已邀请:
0

kevinjin

赞同来自:

reset master 和 reset slave 很好地解决了我的问题,多谢多谢

回复帖子,请先登录注册

退出全屏模式 全屏模式 回复
评分
可选评分理由: