• 技术文章 >数据库 >mysql教程

    mysql主从同步如何跳过错误

    coldplay.xixicoldplay.xixi2021-01-06 11:19:19原创844

    mysql主从同步跳过错误的方法:1、跳过指定数量的事务,代码为【mysql>SET GLOBAL SQL_SLAVE_SKIP..】;2、修改mysql的配置文件,通过【slave_skip_errors】参数来跳所有错误。

    本教程操作环境:windows7系统、mysql 5.6.14版,DELL G3电脑,该方法适用于所有品牌电脑。

    相关免费学习推荐:mysql视频教程

    mysql主从同步跳过错误的方法:

    1、跳过指定数量的事务:

    mysql>slave stop;
    mysql>SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1        #跳过一个事务
    mysql>slave start

    2、修改mysql的配置文件,通过slave_skip_errors参数来跳所有错误或指定类型的错误

    vi /etc/my.cnf
    [mysqld]
    #slave-skip-errors=1062,1053,1146  #跳过指定error no类型的错误
    #slave-skip-errors=all  #跳过所有错误

    例:下面模拟一个错误场景

    环境(一个已经配置好的主从复制环境)

    master数据库IP:192.168.247.128

    slave数据库IP:192.168.247.130

    mysql版本:5.6.14

    binlog-do-db = mydb

    在master上执行以下语句:

    mysql>use mysql;
    mysql>create table t1 (id int);
    mysql>use mydb;
    mysql>insert into mysql.t1 select 1;

    在slave上查看复制状态

    mysql> show slave status\G
    *************************** 1. row ***************************
                   Slave_IO_State: Waiting for master to send event
                      Master_Host: 192.168.247.128
                      Master_User: repl
                      Master_Port: 3306
                    Connect_Retry: 60
                  Master_Log_File: mysql-bin.000017
              Read_Master_Log_Pos: 2341
                   Relay_Log_File: DBtest1-relay-bin.000011
                    Relay_Log_Pos: 494
            Relay_Master_Log_File: mysql-bin.000017
                 Slave_IO_Running: Yes
                Slave_SQL_Running: No
                  Replicate_Do_DB: 
              Replicate_Ignore_DB: 
               Replicate_Do_Table: 
           Replicate_Ignore_Table: 
          Replicate_Wild_Do_Table: 
      Replicate_Wild_Ignore_Table: 
                       Last_Errno: 1146
                       Last_Error: Error 'Table 'mysql.t1' doesn't exist' on query. Default database: 'mydb'. Query: 'insert into mysql.t1 select 1'
                     Skip_Counter: 0
              Exec_Master_Log_Pos: 1919
                  Relay_Log_Space: 1254
                  Until_Condition: None
                   Until_Log_File: 
                    Until_Log_Pos: 0
               Master_SSL_Allowed: No
               Master_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: No
                    Last_IO_Errno: 0
                    Last_IO_Error: 
                   Last_SQL_Errno: 1146
                   Last_SQL_Error: Error 'Table 'mysql.t1' doesn't exist' on query. Default database: 'mydb'. Query: 'insert into mysql.t1 select 1'
      Replicate_Ignore_Server_Ids: 
                 Master_Server_Id: 1
                      Master_UUID: f0f7faf6-51a8-11e3-9759-000c29eed3ea
                 Master_Info_File: /var/lib/mysql/master.info
                        SQL_Delay: 0
              SQL_Remaining_Delay: NULL
          Slave_SQL_Running_State: 
               Master_Retry_Count: 86400
                      Master_Bind: 
          Last_IO_Error_Timestamp: 
         Last_SQL_Error_Timestamp: 131210 21:37:19
                   Master_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: 2341,Exec_Master_Log_Pos: 1919时出错了Last_SQL_Error: Error 'Table 'mysql.t1' doesn't exist' on query.

    因为只对mydb记录了binlog,当在mydb库操作其它数据库的表,但该表在slave上又不存在时就出错了。

    以上就是mysql主从同步如何跳过错误的详细内容,更多请关注php中文网其它相关文章!

    声明:本文原创发布php中文网,转载请注明出处,感谢您的尊重!如有疑问,请联系admin@php.cn处理
    专题推荐:mysql 主从同步
    上一篇:python如何操作mysql 下一篇:mysql慢查询有影响吗
    大前端线上培训班

    相关文章推荐

    • mysql主从同步配置的方法• MySQL主从同步延迟的原因及解决办法• redis如何主从同步• mysql主从同步是什么

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网