Heim > Datenbank > MySQL-Tutorial > mysql同步GLOBAL sql_slave_skip_counter解释_MySQL

mysql同步GLOBAL sql_slave_skip_counter解释_MySQL

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Freigeben: 2016-06-01 13:45:43
Original
1332 Leute haben es durchsucht

bitsCN.com

大家都知道,当slave出现错误时,可以通过SET GLOBAL sql_slave_skip_counter = N来跳过错误,但是这个N,又真正代表什么呢。

This statement skips the next N events from the master
即他是跳过N个events,这里最重要的是理解event的含义
在mysql中,对于sql的 binary log 他实际上是由一连串的event组成的一个组,即事务组。
我们在master上可以通过
SHOW BINLOG EVENTS 来查看一个sql里有多少个event。
通过例子来说明下,真正的event的含义:
在slave上
show slave status
Last_Errno: 1062
Last_Error: Error 'Duplicate entry '193' for key 'PRIMARY'' on query. Default database: 'ssldb'. Query: 'insert slave_no_skip1  values (193,'y10')'
Skip_Counter: 0
在 master 上,执行
mysql> SHOW BINLOG EVENTS in 'mysql-bin.000010' from 46755013;
+------------------+----------+------------+-----------+-------------+--------------------------------------------------------+
| Log_name         | Pos      | Event_type | Server_id | End_log_pos | Info                                                   |
+------------------+----------+------------+-----------+-------------+--------------------------------------------------------+
| mysql-bin.000010 | 46755013 | Query      |         1 |    46755082 | BEGIN                                                  |
1| mysql-bin.000010 | 46755082 | Query      |         1 |    46755187 | use `ssldb`; insert slave_no_skip1  values (193,'y10') |
2| mysql-bin.000010 | 46755187 | Xid        |         1 |    46755214 | COMMIT /* xid=4529451 */                               |
3| mysql-bin.000010 | 46755214 | Query      |         1 |    46755283 | BEGIN                                                  |
4| mysql-bin.000010 | 46755283 | Query      |         1 |    46755387 | use `ssldb`; insert slave_no_skip1 values (194,'y11')  |
5| mysql-bin.000010 | 46755387 | Xid        |         1 |    46755414 | COMMIT /* xid=4529452 */                               |
6| mysql-bin.000010 | 46755414 | Query      |         1 |    46755483 | BEGIN                                                  |
7| mysql-bin.000010 | 46755483 | Query      |         1 |    46755587 | use `ssldb`; insert slave_no_skip1 values (195,'y12')  |
8| mysql-bin.000010 | 46755587 | Xid        |         1 |    46755614 | COMMIT /* xid=4529453 */                               |
9| mysql-bin.000010 | 46755614 | Query      |         1 |    46755683 | BEGIN                                                  |
10| mysql-bin.000010 | 46755683 | Query      |         1 |    46755788 | use `ssldb`; insert slave_no_skip1  values (196,'y13') |
11| mysql-bin.000010 | 46755788 | Xid        |         1 |    46755815 | COMMIT /* xid=4529454 */                               |
12| mysql-bin.000010 | 46755815 | Query      |         1 |    46755884 | BEGIN                                                  |
13| mysql-bin.000010 | 46755884 | Query      |         1 |    46755989 | use `ssldb`; insert slave_no_skip1  values (197,'y14') |
14| mysql-bin.000010 | 46755989 | Xid        |         1 |    46756016 | COMMIT /* xid=4529455 */                               |
15| mysql-bin.000010 | 46756016 | Query      |         1 |    46756085 | BEGIN                                                  |
16| mysql-bin.000010 | 46756085 | Query      |         1 |    46756190 | use `ssldb`; insert slave_no_skip1  values (198,'y15') |
17| mysql-bin.000010 | 46756190 | Xid        |         1 |    46756217 | COMMIT /* xid=4529456 */                               |
18| mysql-bin.000010 | 46756217 | Query      |         1 |    46756286 | BEGIN                                                  |
19| mysql-bin.000010 | 46756286 | Query      |         1 |    46756391 | use `ssldb`; insert slave_no_skip1  values (199,'y16') |
20| mysql-bin.000010 | 46756391 | Xid        |         1 |    46756418 | COMMIT /* xid=4529457 */                               |
21| mysql-bin.000010 | 46756418 | Query      |         1 |    46756487 | BEGIN                                                  |
22| mysql-bin.000010 | 46756487 | Query      |         1 |    46756592 | use `ssldb`; insert slave_no_skip1  values (190,'y17') |
| mysql-bin.000010 | 46756592 | Xid        |         1 |    46756619 | COMMIT /* xid=4529458 */                               |
+------------------+----------+------------+-----------+-------------+--------------------------------------------------------+
24 rows in set (0.00 sec)        
通过错误可知,他是use `ssldb`; insert slave_no_skip1  values (193,'y10') 这条语句导致错误了
如果我们想跳到最后一条语句“use `ssldb`; insert slave_no_skip1  values (190,'y17')“的话 ,我们必须简单计算下中间有多少个event
很明显,是21,那么我们可以执行SET GLOBAL sql_slave_skip_counter =21(这里你SET GLOBAL sql_slave_skip_counter =19或者20都可以)
在slave 在次执行show slave status查看
Last_Errno: 1062
Last_Error: Error 'Duplicate entry '190' for key 'PRIMARY'' on query. Default database: 'ssldb'. Query: 'insert slave_no_skip1  values (190,'y17')'
Skip_Counter: 0
可见 他已经如我所愿,跳到use `ssldb`; insert slave_no_skip1  values (190,'y17')这里了。
以下是我遇到的情况,同事在试命令.搞的同步出错.
          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: 1103
                 Last_Error: Error 'Incorrect table name 'aaaaaa.t_period'' on query. Default database: 'aaaaaa'. Query: 'CREATE TABLE if not exists `aaaaaa.t_period` (  `Fid` bigint NOT NULL AUTO_INCREMENT,  `Ftype` int(3) NOT NULL DEFAULT '0',  `Fuid` int(11) NOT NULL DEFAULT '0',  `Fquest_id` int(11) NOT NULL DEFAULT '0',  `Fstep` int(3) NOT NULL DEFAULT '0',  `Ffinish_time` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',  PRIMARY KEY (`Fid`),  UNIQUE KEY (`Ftype`, `Fuid`, `Fquest_id`)) ENGINE=MyISAM DEFAULT CHARSET=utf8'
               Skip_Counter: 0
        Exec_Master_Log_Pos: 92449874
执行到这句出错了.Exec_Master_Log_Pos: 92449874
在master上查询 mysql -uroot -e "SHOW BINLOG EVENTS in  'mysql-bin.000014' from 92562567 limit 100;"就这一条命令字节跳过即可.
如果错误events比较多,可以按上面的情况处理.
还可以在my.cnf中设置如下选项自动跳过这种错误.
slave-skip-errors=1062

bitsCN.com
Verwandte Etiketten:
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Aktuelle Ausgaben
So ändern Sie MySQL in MySQL
Aus 1970-01-01 08:00:00
0
0
0
MySQL-Startfehler unter Centos
Aus 1970-01-01 08:00:00
0
0
0
MySQL stoppt den Prozess
Aus 1970-01-01 08:00:00
0
0
0
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage