主从复制错误(持续更新)

1、Got fatal error 1236 from master when reading data from binary log: 'Could not find first log file name in binary log index file'

看字面意思是因为找不到二进制日志而导致的。

解决:

show slave status\G查看Slave_IO_Running       Slave_SQL_Running      。确认IO线程出现错误。那么就是说bin log出现了问题。

登录主库,进入data目录查看是否存在二进制日志。如果存在,说明文件没有损坏,那么就是从库定位出现问题了。show master status;查看当前日志pos。

登录从库,先停止复制:stop slave;    然后重新change master to定位到主库。然后start slave;

2、主从复制错误,跳过错误。

(1)传统方法:

stop slave sql_thread;

 set global sql_slave_skip_counter=1;

start slave sql_thread;

(2)开启GTID后的方法:

show slave status \G;    查看当前在执行的GTID事务号。Retrieved_Gtid_Set:字段。

停止SLAVE进程:STOP SLAVE;

SET SESSION GTID_NEXT=‘’    (查出来的Retrieved_Gtid_Set:字段,如:a986a264-7dbc-11e8-bc4b-000c292c5e19:1-8),那么就是跳过:a986a264-7dbc-11e8-bc4b-000c292c5e19:8(去掉“1-”)

BEGIN; COMMIT;      设置一个空事务

SET SESSION GTID_NEXT = AUTOMATIC;    恢复事务

启动SLAVE:START SLAVE;

GTID跳过报错:

Error executing row event: '@@SESSION.GTID_NEXT cannot be set to ANONYMOUS when @@GLOBAL.GTID_MODE = ON.'

 解决:

先关闭GTID模式。

stop slave sql_thread;

set GLOBAL GTID_MODE = ON_PERMISSIVE;

set GLOBAL GTID_MODE = OFF_PERMISSIVE;

set GLOBAL GTID_MODE = OFF;

start slave sql_thread;

然后再次开启。

在安装MySQL Utilities工具 的情况下,可以使用mysqlslavetrx工具进行跳过错误,以便继续复制:

mysqlslavetrx --gtid-set=af6b22ee-7b0b-11e4-aa8d-606720440b68:7-9 --slaves=user:pass@localhost:3311,user:pass@localhost:3312 --dryrun

 --gtid-set:要跳过的全局事务标识符(GTID)集。

--slaves:从服务器的连接信息。在逗号分隔列表中列出多个从站。

--dryrun:在干运行模式下执行该实用程序,显示为每个从站跳过的事务(GTID),但没有有效地跳过它们。此选项可用于验证是否跳过了正确的事务。

--verbose,-v:定要显示的信息量。多次使用此选项可增加信息量。例如,-v= verbose,-vv= more verbose,-vvv= debug。详细模式。

posted @ 2018-04-12 14:04  叶落千尘  阅读(1150)  评论(0编辑  收藏  举报