一点小笔记
1. 在手动开启start transaction中,第一个SQL是DML,第二条SQL是DDL,手动执行rollback时,发现rollback无效。原因:在执行第二条DDL完成后会隐式执行commit.所以第一条SQL在这个时候就已经commit了的。最后执行rollbakc自然无效。
2. 主从数据不同步解决思路:1. 使用sql_slave_skip_counter让SQL线程跑起来,结果是自然有些表数据不同步。2. 运行pt-table-checksum检查哪些表不同步。3. 运行pt-table-sync,指定--replicate,同步数据。
3.查看binlog新方法: show binlog in 'mysql-bin.xxxxx' from position;
mysql> show binlog events in 'mysql-bin.000032' from 4577235 limit 5;
+------------------+---------+------------+-----------+-------------+----------------------------------------------------------------------+
| Log_name | Pos | Event_type | Server_id | End_log_pos | Info |
+------------------+---------+------------+-----------+-------------+----------------------------------------------------------------------+
| mysql-bin.000032 | 4577235 | Query | 1 | 4577309 | BEGIN |
| mysql-bin.000032 | 4577309 | Query | 1 | 4577428 | use `pango_test`; insert into test2 values(11,'admin10',1234,'abce') |
| mysql-bin.000032 | 4577428 | Query | 1 | 4577547 | use `pango_test`; insert into test2 values(12,'admin10',1234,'abce') |
| mysql-bin.000032 | 4577547 | Xid | 1 | 4577574 | COMMIT /* xid=8749775 */ |
4. sql_slave_skip_counter = N ,这个N指的是N个事务。例如position在4577235 ,执行sql_slave_skip_counter = 1后,position变成了4577547 。