日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql避免回环复制_【20181204】 MySQL 双主复制是如何避免回环复制的

發布時間:2025/3/12 数据库 13 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql避免回环复制_【20181204】 MySQL 双主复制是如何避免回环复制的 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

想要了解這個問題的原因在于有一次面試的時候,面試官問我一個問題,就是MySQL的雙主復制的時候是如何避免回環復制這個問題的,說老實話在基于GTID復制的時候我還是比較了解的,因為GTID復制是MySQL本身是不會執行已經執行過的GTID事務,即使MySQL本身并不會執行已經執行過的GTID事務,但是還是會形成一個回環復制。那么MySQL到底是如何解決回環復制的呢?

猜想

在我們搭建主從的時候我們可以清楚的知道,要想成功的搭建主從,那么主從的server_id必須不能一模一樣的,所以猜想可能是因為server_id的原因。

在MySQL 5.5以及一切,我們搭建一主多從的時候,假如slave使用了相同的server_id就會發現在master和slave上面發現slave會經常的斷開重連,這個是因為slave在注冊的時候會去比對server_id,假如server_id存在的話則會有一個刪除操作,但是MySQL 5.6的版本以后引入了uuid,它會優先去比對uuid,假如不存在的話則會去比對server_id。所以在MySQL5.6以及以后是因為uuid的原因呢。

實驗

A. 搭建雙主。非gtid模式(具體過程不在描述)

master 1

........

........

Connect_Retry: 60

Master_Log_File: mysql-bin.000001

Read_Master_Log_Pos: 2175

Relay_Log_File: rep_relay_log.000004

Relay_Log_Pos: 283

Relay_Master_Log_File: mysql-bin.000001

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

........

master 2

Connect_Retry: 60

Master_Log_File: mysql-bin.000001

Read_Master_Log_Pos: 3385

Relay_Log_File: rep_relay_log.000004

Relay_Log_Pos: 1235

Relay_Master_Log_File: mysql-bin.000001

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

B . master 1 上面執行創建表語句

mysql> show create table test \G

*************************** 1. row ***************************

Table: test

Create Table: CREATE TABLE `test` (

`class_num` int(11) NOT NULL AUTO_INCREMENT,

`class_name` varchar(25) DEFAULT NULL,

PRIMARY KEY (`class_num`)

) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8mb4

1 row in set (0.00 sec)

C. master 1和2上面分別插入部分數據進行驗證。

+-----------+------------+

| class_num | class_name |

+-----------+------------+

| 4 | 物理 |

| 5 | 化學 |

| 6 | 生物 |

| 7 | 體育 |

| 8 | 123 |

+-----------+------------+

D. master 1 上面執行

mysql> stop slave;

mysql> set global server_id=3306;

mysql> start slave;

E. master 2上面執行

mysql> stop slave;

mysql> set global server_id=3307;

mysql> start slave;

F. master 1 上面執行

mysql> insert into test(class_name) values(‘321‘);

G. master 1上面觀察

mysql > show slave status;

......

Last_SQL_Error: Error ‘Duplicate entry ‘9‘ for key ‘PRIMARY‘‘ on query. Default database: ‘test‘. Query: ‘insert into test(class_name) values(‘321‘)‘

Replicate_Ignore_Server_Ids:

......

H. master 1上面執行下面命令,你會發現還是會有這個錯誤。

mysql> delete from test where class_num=9;

mysql> start slave;

mysql> show slave status;

......

Last_SQL_Error: Error ‘Duplicate entry ‘9‘ for key ‘PRIMARY‘‘ on query. Default database: ‘test‘. Query: ‘insert into test(class_name) values(‘321‘)‘

......

I. 解析binlog日志信息:

#181204 16:15:00 server id 3306 end_log_pos 2762 CRC32 0xad6f9e83 Intvar

SET INSERT_ID=9/*!*/;

#181204 16:15:00 server id 3306 end_log_pos 2878 CRC32 0x5cf6d5f2 Query thread

_id=54 exec_time=124 error_code=0

SET TIMESTAMP=1543911300/*!*/;

insert into test(class_name) values(‘321‘)

/*!*/;

# at 2878

#181204 16:15:00 server id 3306 end_log_pos 2909 CRC32 0x9ccd43ee Xid = 139

COMMIT/*!*/;

# at 2909

#181204 16:30:52 server id 52213306 end_log_pos 2988 CRC32 0xc9831ff7 Query thread

_id=54 exec_time=0 error_code=0

SET TIMESTAMP=1543912252/*!*/;

BEGIN

/*!*/;

# at 2988

#181204 16:30:52 server id 52213306 end_log_pos 3096 CRC32 0x37f9c65e Query thread

_id=54 exec_time=0 error_code=0

SET TIMESTAMP=1543912252/*!*/;

delete from test where class_num=9

/*!*/;

# at 3096

#181204 16:30:52 server id 52213306 end_log_pos 3127 CRC32 0xc68f6eae Xid = 151

COMMIT/*!*/;

# at 3127

#181204 16:15:00 server id 3306 end_log_pos 3206 CRC32 0xd5fc40b3 Query thread

_id=54 exec_time=959 error_code=0

SET TIMESTAMP=1543911300/*!*/;

BEGIN

/*!*/;

# at 3206

# at 3238

#181204 16:15:00 server id 3306 end_log_pos 3238 CRC32 0x52663932 Intvar

SET INSERT_ID=9/*!*/;

#181204 16:15:00 server id 3306 end_log_pos 3354 CRC32 0xc642ad10 Query thread

_id=54 exec_time=959 error_code=0

SET TIMESTAMP=1543911300/*!*/;

insert into test(class_name) values(‘321‘)

/*!*/;

# at 3354

#181204 16:15:00 server id 3306 end_log_pos 3385 CRC32 0xd5e2ad2a Xid = 155

COMMIT/*!*/;

DELIMITER ;

# End of log file

可以明顯得看得到 insert into test(class_name) values(‘321‘); 這條SQL執行了好多次,這個時候明顯可以驗證在非GTID復制得情況下面是由于server_id才避免了回環復制。

結論

在進行修改uuid得時候發現這是一個只讀參數,不能在修改。并且uuid是MySQL初始化得時候先去auto.cnf文件里面查找,若不存在則會隨機生成一串隨機碼,所以可以直接去除這個。再上面得實驗中可以獲取得到MySQL再非GTID下面是由server_id得原因才避免了回環復制的,但是GTID環境下面會不會也是因為server_id的原因呢,暫時就沒有去驗證了。不過我還是認為gtid下面也是因為GTID的原因。

原文:http://blog.51cto.com/11819159/2326030

總結

以上是生活随笔為你收集整理的mysql避免回环复制_【20181204】 MySQL 双主复制是如何避免回环复制的的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 日韩制服在线 | 国产永久av| 男女日批在线观看 | 中文字幕在线播放视频 | 99精品一级欧美片免费播放 | 最新在线视频 | 五月天婷婷影院 | 国产精品三级电影 | 欧美精品aaa | 国产经典三级 | 卡一卡二卡三 | 中文字幕第一区综合 | 午夜伦理视频 | 日本少妇激情舌吻 | 久热国产精品视频 | 一级大片黄色 | av最新网址 | 国产精品作爱 | 人妻 校园 激情 另类 | 一区二区视频网站 | 国产精品精品软件视频 | 97视频免费在线 | 操操操免费视频 | 日中文字幕 | 精品日本一区二区 | 国产亚洲美女精品久久久2020 | 中文字幕一区二区三区日韩精品 | 日韩成人高清视频在线观看 | 69成人免费视频 | 伊人精品视频在线观看 | 2018天天弄 | 野花视频免费在线观看 | 三上悠亚中文字幕在线播放 | 午夜中文字幕 | 日韩大尺度在线观看 | 高清在线一区二区三区 | 麻豆综合网 | 九色porny丨精品自拍视频 | 一级片啪啪 | 日本中文字幕免费 | 亚洲一区福利视频 | 亚洲AV无码成人精品一区 | 国内视频精品 | 好吊操这里有精品 | 久久久免费电影 | 在线视频资源 | 亚洲综合婷婷 | 夜夜爽夜夜操 | 婷婷天堂 | 亚洲乱码久久 | 能在线观看的av | 毛片基地免费 | 污视频在线 | 少妇一级淫免费播放 | 99国产精品一区 | 少妇呻吟视频 | 国内自拍网站 | 别揉我奶头一区二区三区 | 久久成人网18网站 | 黄网视频在线观看 | 天天干天天综合 | 久艹在线 | 精品黄色在线观看 | 国模无码国产精品视频 | 国内久久 | 精品久久久久久中文字幕人妻最新 | 尤物在线视频 | 成人av一区二区三区 | 国产高清在线观看 | 日本一区精品视频 | 欧美有码在线 | 偷自拍 | 69久久夜色精品国产69 | 国产精品乱 | 国产一区二区三区四区hd | 国产精品免费av一区二区三区 | 野花视频在线免费观看 | 成人黄色激情视频 | 国产亚洲精品成人无码精品网站 | 极品少妇一区二区 | 久久成人18免费观看 | 国产a级片视频 | 欧美黑人又粗又大高潮喷水 | 天堂中文资源在线观看 | 亚洲天堂av一区二区三区 | 国产中年熟女高潮大集合 | 欧美一区二区三区观看 | 日韩高清av | 特黄特色免费视频 | 青青久久av | 美国黄色一级视频 | 欧美美女一区二区 | 性的免费视频 | 天天色综合久久 | 天天操欧美| 伦理片久久 | 欧美色图日韩 | 欧美色图亚洲天堂 | 波多野结衣在线免费视频 |