本教程操作环境: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: nullmaster_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: 01 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主从同步如何跳过错误的详细内容。
