您好,欢迎访问一九零五行业门户网

处理MySQL主从库数据不一致的问题【Slave_SQL_Running: No】

有同事需要把从库中的数据,同步一份到新环境,但发现在主库上执行count语句,和从库上执行count语句得出的结果不同。
场景:有同事需要把从库中的数据,同步一份到新环境,但发现在主库上执行count语句,和从库上执行count语句得出的结果不同。
解决思路:
在从库上执行 show slave status \g ,查看返回结果:
*************************** 1. row ***************************
              slave_io_state: waiting for master to send event
                master_host: 192.168.1.118
                master_user: bak
                master_port: 3306
              connect_retry: 60
            master_log_file: mysql-bin.000728
        read_master_log_pos: 586670704
              relay_log_file: mysqld-relay-bin.002178
              relay_log_pos: 457911949
      relay_master_log_file: mysql-bin.000709
            slave_io_running: yes
          slave_sql_running: no
            replicate_do_db: mydb
        replicate_ignore_db:
          replicate_do_table:
      replicate_ignore_table:
    replicate_wild_do_table:
 replicate_wild_ignore_table:
last_errno: 1062
                  last_error: error 'duplicate entry 'xxxxxxx' for key 2' on query. default database: 'mydb'. query: 'insert into `network` (`uuid`, `machine_name`, `port`, `update_time`) values ('5''
                skip_counter: 0
        exec_master_log_pos: 457911812
            relay_log_space: 20988097167
            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
 1 row in set (0.00 sec)
发现从库在同步时出错,没有能正常同步,解决方法:
第一:停止slave,slave stop;
第二:跳过一条出错的语句:set global sql_slave_skip_counter=1;
第三:启动slave,slave start;
第四:使用show slave status \g 查看当前的同步情况,如果slave_sql_running: yes,则成功,如果slave_sql_running: no,则再次执行一到四。如果不想一次次重复,可以在第二步中跳过多条错误的语句。
最后看看当前从库与主库的时间差:seconds_behind_master: 197011

其它类似信息

推荐信息