成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

我C,MySQL雙主架構(gòu),原來能這么玩

安全 應(yīng)用安全 MySQL
MySQL最常見的集群架構(gòu),是一主多從,主從同步,讀寫分離的架構(gòu)。但經(jīng)常有朋友問,MySQL雙主的一致性問題,今天簡單聊一聊。

經(jīng)常有朋友問,MySQL雙主的一致性問題,今天簡單聊一聊。

MySQL為什么要使用雙主架構(gòu)?

MySQL最常見的集群架構(gòu),是一主多從,主從同步,讀寫分離的架構(gòu)。通過這種方式,能夠擴(kuò)充數(shù)據(jù)庫的讀性能,保證讀庫的高可用,但此時寫庫仍然是單點。

為了保證MySQL寫庫的高可用,可以在一個MySQL數(shù)據(jù)庫集群中可以設(shè)置兩個主庫,并設(shè)置雙向同步,以冗余寫庫的方式,來保證寫庫的高可用。

MySQL雙主架構(gòu),會存在什么問題?

如果MySQL雙主架構(gòu),同時提供服務(wù),可能會引發(fā)數(shù)據(jù)的一致性問題。因為數(shù)據(jù)的同步有一個時間差,并發(fā)的寫入可能導(dǎo)致數(shù)據(jù)同步失敗,引起數(shù)據(jù)丟失。

舉個栗子:

如上圖所述,假設(shè)主庫使用了auto increment來作為自增主鍵:

  • 兩個MySQL主庫設(shè)置雙向同步可以用來保證主庫的高可用;
  • 數(shù)據(jù)庫中現(xiàn)存的記錄主鍵是1,2,3;
  • 主庫1插入了一條記錄,主鍵為4,并向主庫2同步數(shù)據(jù);
  • 數(shù)據(jù)同步成功之前,主庫2也插入了一條記錄,由于數(shù)據(jù)還沒有同步成功,插入記錄生成的主鍵也為4,并向主庫1也同步數(shù)據(jù);
  • 主庫1和主庫2都插入了主鍵為4的記錄,雙主同步失敗,數(shù)據(jù)不一致;

能否在MySQL層面,保證兩個主庫生成的主鍵一定不沖突呢?

可以的,只需要為兩個主庫的自增ID:

設(shè)置不同的初始值;

設(shè)置相同的增長步長;

如上圖所示:

  • 兩個MySQL主庫設(shè)置雙向同步可以用來保證主庫的高可用;
  • 庫1的自增初始值是1,庫2的自增初始值是2,增長步長都為2;
  • 庫1中插入數(shù)據(jù)主鍵為1/3/5/7,庫2中插入數(shù)據(jù)主鍵為2/4/6/8,不沖突;
  • 數(shù)據(jù)雙向同步后,兩個主庫會包含全部數(shù)據(jù);

如上圖所示,兩個主庫最終都將包含1/2/3/4/5/6/7/8所有數(shù)據(jù),即使有一個主庫掛了,另一個主庫也能夠保證寫庫的高可用。

上述方案,依賴與數(shù)據(jù)庫的配置,能不能由應(yīng)用程序,來保證數(shù)據(jù)的一致性呢?

答案是肯定的,應(yīng)用程序使用統(tǒng)一的ID生成器,可以保證ID的生成不沖突。

如上圖所示,調(diào)用方插入數(shù)據(jù)時,帶入全局唯一ID,而不依賴于數(shù)據(jù)庫的auto increment,也能解決這個問題。

畫外音:如何生成全局唯一趨勢遞增的ID,不展開。

引發(fā)不一致的根本原因,是保證高可用的兩個主庫都對外提供服務(wù),如果只有一個主庫對外提供服務(wù),另一個主庫平時不提供服務(wù),僅僅在主庫掛了的時候提供服務(wù),能否消除上述數(shù)據(jù)不一致呢?

答案是悲觀的,仍然不行。

使用虛IP+keepalived的方式保證數(shù)據(jù)庫主庫的高可用,平時只有一臺主庫提供服務(wù),也可能出現(xiàn)數(shù)據(jù)不一致。

如上圖所示:

  • 兩個MySQL主庫設(shè)置雙向同步可以用來保證主庫的高可用;
  • 只有主庫1對外提供寫入服務(wù);
  • 兩個主庫設(shè)置相同的虛IP,在主庫1掛掉或者網(wǎng)絡(luò)異常的時候,虛IP自動漂移,備用主庫頂上,保證主庫的高可用;

切換過程中,由于虛IP沒有變化,所以切換過程對調(diào)用方是透明的,但在極限的情況下,仍可能引發(fā)數(shù)據(jù)不一致。

如上圖所示:

  • 兩個MySQL主庫設(shè)置雙向同步,可以用來保證主庫的高可用,并設(shè)置了相同的虛IP;
  • 網(wǎng)絡(luò)抖動前,主庫1對上游提供寫入服務(wù),插入了一條記錄,主鍵為4,并向備用主庫2同步數(shù)據(jù);
  • 突然主庫1網(wǎng)絡(luò)異常,keepalived檢測出異常后,實施虛IP漂移,備用主庫2開始提供服務(wù);
  • 在主鍵4的數(shù)據(jù)同步成功之前,主庫2插入了一條記錄,也生成了主鍵為4的記錄,結(jié)果導(dǎo)致數(shù)據(jù)不一致;

有沒有辦法緩解上述問題呢?

虛IP漂移,雙主同步延時導(dǎo)致的數(shù)據(jù)不一致,本質(zhì)上,需要在雙主同步完數(shù)據(jù)之后,再實施虛IP偏移。

使用內(nèi)網(wǎng)DNS探測,緩解上述問題:

  • 使用內(nèi)網(wǎng)域名連接數(shù)據(jù)庫,例如:db.kg.org;
  • 主庫1和主庫2設(shè)置雙主同步,不使用相同虛IP,而是分別使用ip1和ip2;
  • 一開始db.kg.org指向ip1;
  • 用一個小腳本輪詢探測ip1主庫的連通性;
  • 當(dāng)ip1主庫發(fā)生異常時,腳本delay一個x秒的延時,等待主庫2同步完數(shù)據(jù)之后,再將db.kg.org解析到ip2;
  • 應(yīng)用程序以內(nèi)網(wǎng)域名進(jìn)行重連,即可自動連接到ip2主庫,并保證了數(shù)據(jù)的一致性;

畫外音:本質(zhì)上,這是一個可用性與一致性的折衷。

總結(jié)

MySQL主庫高可用,主庫一致性,一些小技巧:

  • 雙主同步是一種常見的保證寫庫高可用的方式;
  • 設(shè)置相同步長,不同初始值,可以避免auto increment生成沖突主鍵;
  • 不依賴數(shù)據(jù)庫,業(yè)務(wù)調(diào)用方自己生成全局唯一ID是一個好方法;
  • 雙主保證寫庫高可用,只有一個寫庫提供服務(wù),并不能完全保證一致性;
  • 內(nèi)網(wǎng)DNS探測,可以實現(xiàn)在主庫1出現(xiàn)問題后,延時一個時間,再進(jìn)行主庫切換,以保證數(shù)據(jù)一致性,但犧牲了幾秒鐘的高可用;

【本文為51CTO專欄作者“58沈劍”原創(chuàng)稿件,轉(zhuǎn)載請聯(lián)系原作者】

戳這里,看該作者更多好文

 

責(zé)任編輯:趙寧寧 來源: 51CTO專欄
相關(guān)推薦

2022-12-06 17:30:04

2018-10-28 17:54:00

分布式事務(wù)數(shù)據(jù)

2018-01-25 14:53:20

iPhone技巧刪除照片

2023-11-01 14:49:07

2021-02-07 08:13:18

@DateTimeFo@NumberFormSpring

2022-01-04 08:00:48

前端技術(shù)Esbuild

2017-11-27 12:24:02

命令行代碼指令

2014-04-11 09:22:17

MySQL雙主架構(gòu)單點故障

2025-05-14 00:00:00

MySQL雙主架構(gòu)循環(huán)復(fù)制

2017-11-06 19:09:45

在線抓娃娃機(jī)

2016-12-02 20:43:28

Android

2014-03-31 14:59:08

大數(shù)據(jù)

2014-04-11 13:47:14

雙主架構(gòu)MySQL

2021-04-19 07:35:01

Linuxhistory命令

2021-04-26 10:24:52

Linux 開發(fā)操作系統(tǒng)

2021-04-19 05:42:51

Mmap文件系統(tǒng)

2022-06-01 07:49:43

索引數(shù)據(jù)Mysql

2022-10-31 08:47:21

人臉識別按鍵鍵盤

2024-10-17 16:55:08

2023-10-11 08:16:42

客戶端服務(wù)器內(nèi)容
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 亚洲区一区二 | 请别相信他免费喜剧电影在线观看 | 粉嫩一区二区三区四区公司1 | 久久精品在线播放 | 国产在线精品一区二区 | 国产日韩欧美 | 99精品欧美一区二区三区综合在线 | 欧美精品在线免费 | 美女午夜影院 | 欧美黄a | 成人欧美一区二区三区在线播放 | 日韩色图视频 | 国产999精品久久久久久绿帽 | 精品自拍视频在线观看 | 九一国产精品 | 久久久91精品国产一区二区三区 | 亚洲精品99 | 色免费看| 精品国产乱码久久久久久88av | 午夜影晥 | 97超碰在线播放 | www.日本国产 | 日韩a | 亚洲视频在线一区 | 国产精品综合网 | 男人天堂视频在线观看 | 亚洲性网 | 国产成人精品在线 | 国产一级电影在线观看 | 欧美亚洲一区二区三区 | 欧美黄色大片在线观看 | 亚洲精品欧洲 | 蜜桃免费一区二区三区 | 天天干天天玩天天操 | 91视频大全 | 成人美女免费网站视频 | 波多野结衣一区二区三区在线观看 | 波多野结衣电影一区 | 亚洲一区中文字幕 | 成人a在线 | 亚洲36d大奶网 |