Mysql互為主從,解決主鍵ID衝突的方案

2021-06-20 19:52:34 字數 637 閱讀 8670

mysql資料庫互為主從伺服器a、b,解決資料衝突問題:只要保證兩台伺服器上插入的自增長資料不同就可以了。

比如: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 重複。

MySQL 為什麼推薦自增 id 作為主鍵

在計算機裡,無論是記憶體還是磁碟,作業系統都是按頁的大小進行讀取的 頁大小通常為 4 kb 磁碟每次讀取都會預讀,會提前將連續的資料讀入記憶體中,這樣就避免了多次 io,這就是計算機中有名的區域性性原理,即我用到一塊資料,很大可能這塊資料附近的資料也會被用到,乾脆一起載入,省得多次 io 拖慢速度,...

mysql主鍵id不連續

唯一鍵衝突 事務回滾 批量插入時申請主鍵的策略造成mysql中自增主鍵不連續 批量申請自增主鍵時它的申請數量是乘2遞增的,比如插入4條資料,第一條申請1個主鍵 第二個申請2個滿足第二和三條資料插入時使用,第四條資料插入時還需要再申請一次,這次會分配4個主鍵,但是只用了1個,有3個就浪費了,並出現了i...

mysql主從報1062 主鍵重複錯誤

在主從同步過程中,經常遇見主鍵重複導致同步失敗。last errno 1062 last error error duplicate entry 4 for key primary 昨天研究了主從原理,才理解這種同步失敗跟配置無關,再次檢視兩個表的資料,才恍然大悟。現在造成這種問題的原因分析一下 1...