今日研究数据库rowid的问题,
mysql的binlog是server层的东西,而innodb中的Rowid是存储引擎的东西,server层根本感知不到Rowid的存在,那么复制时从库如何感知哪一行对应哪一个Rowid呢?
这话视乎是老生常谈了,但总感觉有些官方,让人理解一些东西,最好还是拿出一些实证来,
首先创建一个没有主键的表:
mysql> desc t2;
+-------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id | int(11) | YES | | NULL | |
| name | varchar(40) | YES | | NULL | |
+-------+-------------+------+-----+---------+-------+
2 rows in set (0.00 sec)
然后插入5条数据:
mysql> select * from t2;
+---------+----------+
| id | name |
+---------+----------+
| 1212 | aaaaaaaa |
| 99999 | bbbb |
| 8888888 | cccccc |
| 77777 | ddddd |
| 6666 | eeeeeee |
+---------+----------+
5 rows in set (0.00 sec)
# at 1562
#171110 8:19:57 server id 138 end_log_pos 1610 CRC32 0xa3e1f26e Table_map: `test`.`t2` mapped to number 109
# at 1610
#171110 8:19:57 server id 138 end_log_pos 1659 CRC32 0x62f3974a Write_rows: table id 109 flags: STMT_END_F
### INSERT INTO `test`.`t2`
### SET
### @1=1212 /* INT meta=0 nullable=1 is_null=0 */
### @2='aaaaaaaa' /* VARSTRING(1