mysql 雙向同步的索引值衝突問題的解決方案分享

來源:互聯網
上載者:User

出現的問題(多主自增長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 重複。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.