dongyiqiang 2016-03-14 08:27 采纳率: 25%
浏览 1915
已采纳

关于mysql主从复制自增长列

现有两台mysql服务器A和B
A:auto_increment_offset = 2
auto_increment_increment = 2
binlog_format="STATEMENT"
B:auto_increment_offset = 1
auto_increment_increment = 2

    A和B都有如下表,建表语句如下:

test | CREATE TABLE test (
id int(11) NOT NULL AUTO_INCREMENT,
title varchar(45) DEFAULT NULL,
PRIMARY KEY (id)
ENGINE=InnoDB DEFAULT CHARSET=utf8

test1 | CREATE TABLE test1 (
id int(11) NOT NULL AUTO_INCREMENT,
title varchar(45) DEFAULT NULL,
PRIMARY KEY (id)
ENGINE=InnoDB DEFAULT CHARSET=utf8

test表中数据如下:

+----+-------------------------------------
| id | title
+----+-------------------------------------
| 2 | 2
| 4 | 2
| 6 | efe4aee2-e721-11e5-a858-000c2952edc5
| 8 | 2016-03-11 08:31:18
| 10 | 2016-03-11 08:31:40
| 12 | 97621dc2-e722-11e5-a858-000c2952edc5
| 14 | aaaq
| 16 | aaaq
| 18 | 13
+----+-------------------------------------

现在在A服务器执行如下sql:
insert test1 select * from test where id >= 10

虽然mysql出了警告:
Unsafe statement written to the binary log

using statement format since BINLOG_FORMAT = STATEMENT.

但是我看到B服务器同步A服务器数据后显示如下:
+----+--------------------------------------+
| id | title |
+----+--------------------------------------+
| 10 | 2016-03-11 08:31:40 |
| 12 | 01b889cf-e721-11e5-9568-000c29aa710d |
| 14 | aaaq |
| 16 | aaaq |
| 18 | 13 |
+----+--------------------------------------+

这时候查看A服务器的binlog日志发现
BEGIN
/*!*/;

at 665994732

#160314 15:47:15 server id 136 end_log_pos 665994865 CRC32 0xeb828757 Query thread_id=1675059 exec_time=0 error_code=0
SET TIMESTAMP=1457941635/*!*/;
insert test1 select * from test where id >= 10
/*!*/;

at 665994865

#160314 15:48:38 server id 136 end_log_pos 665994896 CRC32 0x5a745662 Xid = 169785483
COMMIT/*!*/;

A服务器并未提示插入的数据自增长id是多少,为什么B服务器的数据和A服务器的
数据仍然一致。
按自己的理解,B服务器的数据应该是如下,因为是靠B服务器的自己自增长产生id。
+----+--------------------------------------+
| id | title |
+----+--------------------------------------+
| 1 | 2016-03-11 08:31:40 |
| 3 | 01b889cf-e721-11e5-9568-000c29aa710d |
| 5 | aaaq |
| 7 | aaaq |
| 9 | 13 |

求各位师兄解答下为什么,谢谢!

  • 写回答

2条回答 默认 最新

  • oyljerry 2016-03-14 11:43
    关注

    主键也在同步的范围 这样a b都是同样的主键数据 后面插入数据的时候主键也会是同样的数据递增

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 如何解决y_true和y_predict数据类型不匹配的问题(相关搜索:机器学习)
  • ¥15 PB中矩阵文本型数据的总计问题。
  • ¥40 宿舍管理系统设计(c#)
  • ¥15 MATLAB卫星二体模型仿真
  • ¥15 怎么让数码管亮的同时让led执行流水灯代码
  • ¥20 SAP HANA SQL Script 。如何判断字段值包含某个字符串
  • ¥85 cmd批处理参数如果含有双引号,该如何传入?
  • ¥15 fx2n系列plc的自控成型机模拟
  • ¥15 时间序列LSTM模型归回预测代码问题
  • ¥50 使用CUDA如何高效的做并行化处理,是否可以多个分段同时进行匹配计算处理?目前数据传输速度有些慢,如何提高速度,使用gdrcopy是否可行?请给出具体意见。