mysql備份恢復實例丟失事務分析

看到了一篇server id導致MySQL備份恢復的時候丟失事務的文章,特此重現一下。

成都創新互聯專注于網站建設,為客戶提供成都網站建設、網站設計、網頁設計開發服務,多年建網站服務經驗,各類網站都可以開發,品牌網站設計,公司官網,公司展示網站,網站設計,建網站費用,建網站多少錢,價格優惠,收費合理。

主備開啟了GTID,實驗過程如下:

1.主庫執行:
create database test1;
create database test2;
2.主從沒有延遲后備份,利用從庫備份,物理或者邏輯都可以:
mysqldump -uroot -poracle --single-transaction --master-data=2 --all-databases > dump.sql
3.主庫執行:
create database test3;
4.將主庫干掉
5.從庫提升為主庫,并且:
create database test4;
6.利用從庫的備份恢復老的主庫,并指向新主
這個時候會發現,恢復出來的從庫丟失了一個事務test3:
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| ming               |
| mysql              |
| performance_schema |
| sakila             |
| sys                |
| test1              |
| test2              |
| test4              |
| tt                 |
| world              |
+--------------------+
11 rows in set (0.00 sec)

文章說是因為server_id的緣故。

server id一個很大的作用是避免數據回環。所以事務中記錄的sever id會是持久不變的,就像我們的身份證一樣,

走到哪兒都不變。

老主庫因為是利用從庫的備份集還原出來的,執行過的事務是 6f5b02b9-1f08-11ea-9853-000c2970dcdf:1-4,

那么就要去向新主請求6f5b02b9-1f08-11ea-9853-000c2970dcdf:5事務。

新主的master-bin log文件中該事務如下:server id是1573854809 。而該server id正好是老主的server id,

此時該條記錄就會被過濾掉。就不會傳遞到老主那邊去。

# at 836
#200328 11:23:25 server id 1573854809  end_log_pos 901 CRC32 0x23ffdc70         GTID    last_committed=4        sequence_number=5     rbr_only=no
SET @@SESSION.GTID_NEXT= '6f5b02b9-1f08-11ea-9853-000c2970dcdf:5'/*!*/;
# at 901
#200328 11:23:25 server id 1573854809  end_log_pos 998 CRC32 0x2f611a1d         Query   thread_id=2     exec_time=4290974348    error_code=0
SET TIMESTAMP=1585365805/*!*/;
create database test3
/*!*/;

那么為什么test4會被傳遞到老主被應用呢?因為該事務在新主master-bin log中如下,server id 1051295是新主的,

就不會被IO thread過濾.

# at 998
#200211  6:19:19 server id 1051295  end_log_pos 1063 CRC32 0xec9c6a1e   GTID    last_committed=5        sequence_number=6       rbr_only=no
SET @@SESSION.GTID_NEXT= '4c312339-ab38-11e9-86a8-000c29050245:1'/*!*/;
# at 1063
#200211  6:19:19 server id 1051295  end_log_pos 1160 CRC32 0xaccb28ab   Query   thread_id=2     exec_time=0     error_code=0
SET TIMESTAMP=1581373159/*!*/;
SET @@session.sql_mode=1151336480/*!*/;
create database test4
/*!*/;

那么為什么兩條記錄不一致呢?這是因為test3事務是老主傳遞過來的,那么在relay log中,master-bin log中,

以及向后傳遞到其它從庫中的時候,server id是會一直被帶下去的。test4事務是新主自己的事務,

那么從他自己的master-bin log,以及向后傳遞的從庫的relay log和應用后生成的master-bin log中都會是新主的server id。

所以test3會被過濾,test4會被應用。

老的主庫此時:

mysql> show master status\G
*************************** 1. row ***************************
             File: mysql-bin.000002
         Position: 1443
     Binlog_Do_DB: 
 Binlog_Ignore_DB: 
Executed_Gtid_Set: 1508afe9-70a7-11ea-8d70-000c2970dcdf:1-3,    --自己庫里執行的事務
4c312339-ab38-11e9-86a8-000c29050245:1,--主從傳遞下來的事務
6f5b02b9-1f08-11ea-9853-000c2970dcdf:1-4--自己作為主的時候執行的事務
1 row in set (0.00 sec)

新的主庫:

mysql> show master status\G
*************************** 1. row ***************************
             File: mysql-bin.000002
         Position: 1322
     Binlog_Do_DB: 
 Binlog_Ignore_DB: 
Executed_Gtid_Set: 4c312339-ab38-11e9-86a8-000c29050245:1-2,
6f5b02b9-1f08-11ea-9853-000c2970dcdf:1-5
1 row in set (0.00 sec)

文章名稱:mysql備份恢復實例丟失事務分析
URL鏈接:http://m.kartarina.com/article6/gecpog.html

成都網站建設公司_創新互聯,為您提供網站改版、品牌網站制作、微信公眾號ChatGPT、外貿建站、全網營銷推廣

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

網站優化排名
主站蜘蛛池模板: 亚洲国产精品无码久久久久久曰 | 成人免费无码视频在线网站| 亚洲av无码成人精品区在线播放| 免费无遮挡无码视频网站| 曰韩人妻无码一区二区三区综合部| 小13箩利洗澡无码视频网站| 最新中文字幕av无码专区| 午夜无码一区二区三区在线观看| 亚洲第一极品精品无码久久| 国产成人无码专区| 亚洲av无码专区在线电影| 国产精品无码无需播放器| 久久水蜜桃亚洲AV无码精品| 十八禁无码免费网站| 亚洲AV无码乱码在线观看性色扶| 亚洲AV无码无限在线观看不卡| av无码东京热亚洲男人的天堂| 久久久久亚洲AV成人无码| heyzo高无码国产精品| 色综合久久久无码中文字幕| 色欲A∨无码蜜臀AV免费播 | 亚洲精品无码aⅴ中文字幕蜜桃| 亚洲AV无码久久精品狠狠爱浪潮 | AV无码精品一区二区三区| 亚洲无码高清在线观看| 国产精品无码久久av| 无码精品不卡一区二区三区| 小12箩利洗澡无码视频网站| 色欲AV永久无码精品无码| 亚洲精品一级无码鲁丝片| 亚洲AV无码国产丝袜在线观看| 国产真人无码作爱免费视频| 亚洲自偷自偷偷色无码中文| 超清无码无卡中文字幕| 无码人妻一区二区三区精品视频 | 中文无码不卡的岛国片| 久久亚洲精品无码av| 国产V亚洲V天堂A无码| 无码丰满熟妇浪潮一区二区AV| 潮喷失禁大喷水无码| av无码久久久久久不卡网站|