GTID模式下的replication,跳过错误日志的解决方法

日志错误:

大多数replication错误都是因为日志错误引起的。

主日志和中继日志都可能出错。

评判日志错误的辨别方法:

mysqlbinlog  master_binlog_file > /dev/null   屏幕有输出则表示这个binlog有错误,如果没有则表示binlog正常、

mysqlbinlog  slave_binlog_file  >/dev/null

跳过日志错误1:

可以使用手动跳过日志错误,可能会造成数据不一致

如果主日志出错,可以再slave上执行(如果有多个错误可能需要多次操作)

mysql>stop slave;

mysql>set global sql_slave_skip_counter=1;

mysql>start slave;

这个方法不适用于DTID模式的replication,GTIDs模式不允许sql_slave_skip_counter

跳过错误日志2:  不支持GTID

如果是中举日志出错,可以再slave上查看replication状态,根据日志信息跳过出错的日志:

mysql>stop slave;

mysql>change master to

master_log_file=‘relay_master_log_file‘;

master_log_pos=<exec_master_log_pos>;

mysql>start slave;

跳过错误日志3 : GDIT的好处是,计算机自行处理,无需像以前的那样繁琐。

如果master上的binlog除了问题,导致slave无法继续,

如果replication工作在GTID模式下,则需要以下操作:

mysql>stop slave;

mysql>set GTID_NEXT=‘uuid.next_id‘;

mysql>begin;

mysql>commit;

mysql>set GTID_NEXT=‘AUTOCOMMIT‘;

mysql>start slave;

uuid:nextid 例如:8a1f84c4-9d67-11e4-8a9a-3085a9eb338b:12

into

模拟故障:基于DTID模式

in master:

mysql>use viewdb

mysql> select * from t1;

+------+

| id   |

+------+

|  112 |

|  113 |

|  114 |

|  115 |

|  116 |

|  117 |

|  118 |

|  119 |

|  120 |

| 1000 |

|  110 |

|  109 |

mysql>show vaiiables like "%bin%" 找到 sql_bin_log

sql_log_bin                             | ON       全局参数,当前所发生的操作会记录到二进制日中、

mysql> set sql_log_bin=OFF; 表示不记录当前的操作到二进制日志中。接下来的操作会不会同步到slave,这样就会错误

mysql> insert into t1 values (200);

Query OK, 1 row affected (0.00 sec)

mysql> select * from t1;

+------+

| id   |

+------+

| |

|  200 |

+------+

13 rows in set (0.00 sec

mysql> set sql_log_bin=ON; 再次打开,

Query OK, 0 rows affected (0.00 sec)

mysql> insert into t1 values (201); 这是201会被同步到salve,200确不会同步到slave

Query OK, 1 row affected (0.03 sec)

in   master

mysql> select * from t1;

+------+

| id   |

+------+

|  |

200

|  201 |

in SLAVE

mysql> select * from t1;

+------+

| id   |

+------+

|  |

|  201 |

切回到master

mysql>delect from t1 where id=200;  此步骤完了后,此操作记录到binlog,而且会同步到slave,此时slave报错,并指出master的那

个binlog  end_log_pos出错。

IN slave;

mysql>show salve status\G;

Last_SQL_Error: Could not execute Delete_rows event on table viewdb.t1; Can‘t find record in ‘t1‘, Error_code: 1032;

handler error HA_ERR_END_OF_FILE; the event‘s master log localhost-bin.000006, end_log_pos 1360

并且:

Retrieved_Gtid_Set: 61816754-9d68-11e4-8a9f-000c29c1d1ea:1-18

Executed_Gtid_Set: 61816754-9d68-11e4-8a9f-000c29c1d1ea:1-17

不一致

切回到master

mysql>insert into t1 valuses(202);

in slave

这时由于slave故障,所以slave不再会有任何新的数据同步过来。

Retrieved_Gtid_Set: 61816754-9d68-11e4-8a9f-000c29c1d1ea:1-19

Executed_Gtid_Set: 61816754-9d68-11e4-8a9f-000c29c1d1ea:1-17

这是我们跳过这个error,

mysql> stop slave;

Query OK, 0 rows affected (0.01 sec)

mysql> set gtid_next=‘61816754-9d68-11e4-8a9f-000c29c1d1ea:18‘;

mysql> begin;

mysql> commit;

mysql> set gtid_next=‘automatic‘;

mysql> start slave;

mysql>show slave status\G;

mysql>select * from t1;  发现数据已经保持一致。

gtid的好处是,如果有两台slave,只修复一台slave。另一台会自动更新到正常状态。

时间: 2024-12-12 13:14:12

GTID模式下的replication,跳过错误日志的解决方法的相关文章

Win8/8.1下驱动安装“数据无效”错误的有效解决方法

Windows8.1 安装完vmware 后并没有安装 vmnet1,vmnet8 这两个虚拟网卡,纠结了半天,原来是两个服务没打开. 如果你使用的是Windows8或者8.1,并且精简过系统,那么在安装驱动程序的过程中,你可能会遇到"数据无效"的错误.笔者确信所拥有的驱动程序是可以安装在Win8/Win8.1的系统中的,但是查阅了网络上关于所有安装驱动程序过程中出现"数据无效"的解决方法,都尝试无果,后来终于摸索出行之有效的解决方法--开启服务,屡试不爽. 原来,

WCF IIS 服务器 500 错误 检测到在集成的托管管道模式下不适用的ASP.NET设置的解决方法(转)

我们将ASP.NET程序从IIS6移植到IIS7,可能运行提示以下错误: HTTP 错误 500.23 - Internal Server Error 检测到在集成的托管管道模式下不适用的 ASP.NET 设置. 为什么会出现以上错误? 在IIS7的应用程序池有两种模式,一种是"集成模式",一种是"经典模式". 经典模式 则是我们以前习惯的IIS 6 的方式. 如果使用集成模式,那么对自定义的httpModules 和 httpHandlers 就要修改配置文件,需

检测到在集成的托管管道模式下不适用的ASP.NET设置的解决方法(转)

我们将ASP.NET程序从IIS6移植到IIS7,可能运行提示以下错误: HTTP 错误 500.23 - Internal Server Error 检测到在集成的托管管道模式下不适用的 ASP.NET 设置. 为什么会出现以上错误? 在IIS7的应用程序池有两种模式,一种是“集成模式”,一种是“经典模式”. 经典模式 则是我们以前习惯的IIS 6 的方式. 如果使用集成模式,那么对自定义的httpModules 和 httpHandlers 就要修改配置文件,需要将他们转移到<modules

(转)检测到在集成的托管管道模式下不适用的ASP.NET设置的解决方法(转)

我们将ASP.NET程序从IIS6移植到IIS7,可能运行提示以下错误: HTTP 错误 500.23 - Internal Server Error 检测到在集成的托管管道模式下不适用的 ASP.NET 设置. 为什么会出现以上错误? 在IIS7的应用程序池有两种模式,一种是“集成模式”,一种是“经典模式”. 经典模式 则是我们以前习惯的IIS 6 的方式. 如果使用集成模式,那么对自定义的httpModules 和 httpHandlers 就要修改配置文件,需要将他们转移到<modules

关于GTID模式下备份时 --set-gtid-purged=OFF 参数的实验【转】

刚刚听了吴老师是复制章节课程,对于GTID模式下备份数据--set-gtid-purged=OFF 参数有些不理解,于是乎做了实验,加深理解,得出些结论,如有错漏请批评指正! 部分备份: [[email protected] mysql]# /usr/local/mysql/bin/mysqldump -uroot -p -S /data/mysql3306/data/mysql3306.sock lyh2 >/home/backup/lyh2-3306-`date +%Y%d%m`.sql E

MySQL 5.7 GTID模式下 skip 1032 Error

一个偶然的事情,线上一部MySQL slave 被人误删了数据,然后又在 master上执行了同样的 delete 操作,导致从库报了1032错误. 其实这种情况下,如果能将缺少的记录重新insert 进去,再 start slave就可以完美解决: 问题在于不知道他具体操作了什么数据,所以想直接跳过这个事务. 脑海里回想了下GTID模式下跳过1032 的步骤,大概步骤是: mysql> SET @@SESSION.GTID_NEXT= '4ab8feff-5272-11e8-9320-0800

apache下/.htaccess: Invalid command &#39;RewriteEngine&#39;错误信息如何解决。

错误信息. [Wed Nov 05 23:57:10 2014] [alert] [client 127.0.0.1] .../wamp/www/.../.htaccess: Invalid command 'RewriteEngine', perhaps misspelled or defined by a module not included in the server configuration. RewriteEngine命令需要rewrite mod的支持,$>cd /etc/apa

Linux下MySQL的写文件时权限错误(Errcode: 13)解决方法

在数据库中select * into outfile '/home/mysql/data.sql',mysql又提示错误: ERROR 1 (HY000): Can't create/write to file '/home/mysql/data.sql' (Errcode: 13)   权限错误(Errcode: 13)解决方法 1  查看导出目录的权限 是否有mysql用户写的权限 2 如果有多级目录,要确保到处目录的上级目录有可执行权限,如果是/root目录 700要修改705 否则写不进

IOS开发中 常常遇到的遇到的警告,错误汇总,解决方法

从sdk3.2.5升级到sdk 5.1中间废弃了很多的方法,还有一些逻辑关系更加严谨了. 1,警告:"xoxoxoxo"  is deprecated 解决办法:查看xoxoxoxo的这个方法的文档,替换掉这个方法即可. 2,警告:Declaration of "struct sockaddr" will not be visible outside of this function 解决办法:在你的开源.m文件中添加 #import <netinet/in.