南京网站改版,网站注册凡科,佛山网站建设方案咨询,本机建的网站打开却很慢今天介绍两种mysql主从同步跳过错误的方法#xff1a;
一、两种方法介绍
1、跳过指定数量的事务#xff1a;
mysqlslave stop;
mysqlSET GLOBAL SQL_SLAVE_SKIP_COUNTER 1 #跳过一个事务
mysqlslave start2、修改mysql的配置文件#xff0c;通过slav…今天介绍两种mysql主从同步跳过错误的方法
一、两种方法介绍
1、跳过指定数量的事务
mysqlslave stop;
mysqlSET GLOBAL SQL_SLAVE_SKIP_COUNTER 1 #跳过一个事务
mysqlslave start2、修改mysql的配置文件通过slave_skip_errors参数来跳所有错误或指定类型的错误
vi /etc/my.cnf[mysqld]
#slave-skip-errors1062,1053,1146 #跳过指定error no类型的错误
#slave-skip-errorsall #跳过所有错误二、试验环节
下面模拟一个错误场景 1、环境一个已经配置好的主从复制环境 master数据库IP192.168.0.201 slave数据库IP192.168.0.202 mysql版本8.0.23 binlog-do-db mydb
2、在master上执行以下语句
mysqluse mysql;
mysqlcreate table t1 (id int);
mysqluse mydb;
mysqlinsert into mysql.t1 select 1;在slave上查看复制状态
mysql show slave status\G
*************************** 1. row ***************************Slave_IO_State: Waiting for master to send eventMaster_Host: 192.168.0.200Master_User: slave1Master_Port: 3306Connect_Retry: 60Master_Log_File: master-bin.000084Read_Master_Log_Pos: 19843Relay_Log_File: slave-relay-bin.000004Relay_Log_Pos: 1982Relay_Master_Log_File: master-bin.000084Slave_IO_Running: YesSlave_SQL_Running: NoReplicate_Do_DB: Replicate_Ignore_DB: Replicate_Do_Table: Replicate_Ignore_Table: Replicate_Wild_Do_Table: Replicate_Wild_Ignore_Table: Last_Errno: 1146Last_Error: Error Table mysql.t1 doesnt exist on query. Default database: mydb. Query: insert into mysql.t1 select 1Skip_Counter: 0Exec_Master_Log_Pos: 2319Relay_Log_Space: 2145Until_Condition: NoneUntil_Log_File: Until_Log_Pos: 0Master_SSL_Allowed: NoMaster_SSL_CA_File: Master_SSL_CA_Path: Master_SSL_Cert: Master_SSL_Cipher: Master_SSL_Key: Seconds_Behind_Master: NULL
Master_SSL_Verify_Server_Cert: NoLast_IO_Errno: 0Last_IO_Error: Last_SQL_Errno: 1146Last_SQL_Error: Error Table mysql.t1 doesnt exist on query. Default database: mydb. Query: insert into mysql.t1 select 1Replicate_Ignore_Server_Ids: Master_Server_Id: 2013306Master_UUID: ed5a23af-1650-11ee-84bd-0242ac110002Master_Info_File: mysql.slave_master_infoSQL_Delay: 0SQL_Remaining_Delay: NULLSlave_SQL_Running_State: Master_Retry_Count: 86400Master_Bind: Last_IO_Error_Timestamp: Last_SQL_Error_Timestamp: 231210 21:37:19Master_SSL_Crl: Master_SSL_Crlpath: Retrieved_Gtid_Set: Executed_Gtid_Set: Auto_Position: 0
1 row in set (0.00 sec)由结果可以看到Read_Master_Log_Pos: 19843Exec_Master_Log_Pos: 2319时出错了Last_SQL_Error: Error ‘Table ‘mysql.t1’ doesn’t exist’ on query.
因为只对mydb记录了binlog,当在mydb库操作其它数据库的表但该表在slave上又不存在时就出错了。
如果在配置文件中忽略了该错误则主从集群不会因为上述问题而停止工作。