主主複製 主主複製時的主鍵衝突解決

2021-07-02 15:06:04 字數 1196 閱讀 4330

大致思路:

1: 2臺伺服器都設定上二進位制日誌和relay日誌

2: 都設定上replcation賬號

3: 都設定對方為自己的master

主主複製下一定要注意避免的問題---------同步衝突

例:create table stu (

id int primary key auto_increment.

)......

2臺mysql地位相等, 假如2個請求同時到達2臺伺服器, 

請求的a節點,  stu 的id為1

請求的b 節點,  stu的id為1 , 

同步--->衝突

如何解決?

讓1臺伺服器  1,3,5,7來增長

另1臺伺服器  2,4,6,8來增長

一台伺服器:

set global auto_increment_increment = 2;//每步增長2

set global auto_increment_offset = 1; //從1開始增長

set session auto_increment_increment = 2;

set session auto_increment_offset = 1; 

另一台伺服器:

set global auto_increment_increment = 2;

set global auto_increment_offset = 2; 

set session auto_increment_increment=2;

set session auto_increment_offset = 2; 

注:auto-increment-increment 和 auto-increment-offset 要寫到配置檔案 中,防止下次重啟後失效.

操作後得到如下類似效果

如果後期需要加伺服器,這個辦法就有限制了.

我們可以在業務邏輯上來解決,

比如在oracle 有sequnce,序列.

序列每次訪問,生成遞增/遞減的資料.

以redis為例, 我們可以專門構建乙個 global:userid

每次php插入mysql前,先 incr->global:userid, 得到乙個不重複的userid.

mysql集群技術 主主複製

主從複製,2臺伺服器地位有差別,一主一從.從伺服器一是起到備份作用,一是起到分擔查詢壓力的作用.接下來的配置,2臺伺服器之間,沒有明顯的地位差距,兩者可以同步對方的內容.一般的格局如下圖 兩台伺服器相互複製 1 2臺伺服器都設定上二進位制日誌和relay日誌 2 都設定上replcation賬號 3...

MySQL NGINX設定主主複製高可用

該實驗目的是為了 1,使用nginx輪詢來配置mysql主主複製集群的高可用,當兩台mysql正常使用的時候,在他們之間輪詢,分擔伺服器壓力。當其中一台mysql down了之後,nginx會自動輪詢up的那台。當down的mysql啟動之後,資料會自動同步。2,遠端連線mysql的時候,採用ngi...

mysql雙主複製的缺點 mysql雙主複製總結

雙主複製 1 在兩台伺服器上各自建立乙個具有複製許可權的使用者 2 修改配置檔案 主伺服器a上 mysqld server id 10 log bin mysql bin relay log relay mysql auto increment offset 1 起始值 auto increment...