程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> 關於MYSQL數據庫 >> mysql 雙向同步的鍵值沖突問題的解決方法分享

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 重復。
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved