Mysql雙主自增長沖突處理

Mysql雙主自增長沖突處理

 

多主互備和主從復制有一些區別,因為多主中都可以對伺服器有寫權限,所以設計到自增長重復問題

 

出現的問題(多主自增長ID重復) 

1:首先我們通過A,B的test表結構 

 

2:掉A,在B上對數據表test(存在自增長ID)執行插入操作,返回插入ID為1 

3:後停掉B,在A上對數據表test(存在自增長ID)執行插入操作,返回的插入ID也是1 

4:然後 我們同時啟動A,B,就會出現主鍵ID重復 

 

解決方法: 

我們隻要保證兩臺伺服器上插入的自增長數據不同就可以瞭 

如:A查奇數ID,B插偶數ID,當然如果伺服器多的話,你可以設定算法,隻要不同就可以瞭 

 

在這裡我們在A,B上加入參數,以實現奇偶插入 

 

A:my.cnf上加入參數 

 

auto_increment_offset = 1 

auto_increment_increment = 2 

這樣A的auto_increment字段產生的數值是:1, 3, 5, 7, …等奇數ID瞭 

 

B:my.cnf上加入參數 

 

auto_increment_offset = 2 

auto_increment_increment = 2 

這樣B的auto_increment字段產生的數值是:2, 4, 6, 8, …等偶數ID瞭 

 

可以看出,你的auto_increment字段在不同的伺服器之間絕對不會重復,所以Master-Master結構就沒有任何問題瞭。當然,你還可以 使用3臺,4臺,或者N臺伺服器,隻要保證auto_increment_increment = N 再設置一下auto_increment_offset為適當的初始值就可以瞭,那樣,我們的MySQL可以同時有幾十臺主伺服器,而不會出現自增長ID 重復。

 

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *