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

MySQL主從同步如何保證數(shù)據(jù)一致性?

數(shù)據(jù)庫(kù) MySQL
MySQL 主從復(fù)制是一種將 MySQL 主數(shù)據(jù)庫(kù)的數(shù)據(jù),同步到其他的數(shù)據(jù)庫(kù)的一種機(jī)制,從而實(shí)現(xiàn)數(shù)據(jù)的冗余備份和負(fù)載均衡,平行擴(kuò)展了數(shù)據(jù)庫(kù)的查詢能力。

MySQL 主從同步是 MySQL 集群方案中的一種,也是實(shí)現(xiàn)難度最低的一種。

然而,現(xiàn)在的面試都不問(wèn) MySQL 主從同步原理了,而是開(kāi)始問(wèn)主從同步怎么保證數(shù)據(jù)一致性問(wèn)題了。

所以,今天就給大家安排上了。

1.什么是數(shù)據(jù)一致性?

數(shù)據(jù)一致性是指在一個(gè)系統(tǒng)中,數(shù)據(jù)在不同的部分、不同的時(shí)間點(diǎn),以及不同的操作之間保持一致的狀態(tài)。

數(shù)據(jù)一致性通常體現(xiàn)在以下幾點(diǎn):

  • 數(shù)據(jù)一致性:確保數(shù)據(jù)的完整性意味著數(shù)據(jù)在存儲(chǔ)和傳輸過(guò)程中沒(méi)有被損壞或丟失。這包括數(shù)據(jù)的準(zhǔn)確性、完整性和有效性。例如,在一個(gè)電商系統(tǒng)中,商品的庫(kù)存數(shù)量應(yīng)該是準(zhǔn)確的。如果一個(gè)用戶購(gòu)買(mǎi)了一件商品,庫(kù)存數(shù)量應(yīng)該相應(yīng)地減少。如果庫(kù)存數(shù)量顯示不正確,就會(huì)導(dǎo)致數(shù)據(jù)不一致。
  • 事務(wù)一致性:在數(shù)據(jù)庫(kù)系統(tǒng)中,事務(wù)是一組操作的集合,這些操作要么全部成功執(zhí)行,要么全部回滾。事務(wù)一致性確保在一個(gè)事務(wù)中對(duì)數(shù)據(jù)的修改在事務(wù)提交后對(duì)所有用戶都是可見(jiàn)的,并且如果事務(wù)失敗,數(shù)據(jù)將恢復(fù)到事務(wù)開(kāi)始之前的狀態(tài)。例如,在一個(gè)在線預(yù)訂系統(tǒng)中,用戶預(yù)訂了一個(gè)酒店房間,系統(tǒng)應(yīng)該確保這個(gè)房間在預(yù)訂期間不能被其他用戶預(yù)訂。如果出現(xiàn)多個(gè)用戶同時(shí)預(yù)訂同一個(gè)房間的情況,就會(huì)導(dǎo)致數(shù)據(jù)不一致。
  • 多副本一致性:在分布式系統(tǒng)中,數(shù)據(jù)通常會(huì)存儲(chǔ)在多個(gè)副本中,以提高系統(tǒng)的可用性和性能。多副本一致性確保不同副本之間的數(shù)據(jù)保持一致。例如,在一個(gè)云存儲(chǔ)服務(wù)中,用戶上傳了一個(gè)文件,這個(gè)文件會(huì)被存儲(chǔ)在多個(gè)數(shù)據(jù)中心的服務(wù)器上。如果用戶對(duì)文件進(jìn)行了修改,云存儲(chǔ)服務(wù)應(yīng)該確保所有副本都被更新,以保證用戶在任何地方訪問(wèn)文件時(shí)都能看到最新的版本。
  • 時(shí)間一致性:時(shí)間一致性要求數(shù)據(jù)在不同的時(shí)間點(diǎn)上保持一致,這包括數(shù)據(jù)的時(shí)效性和順序性。例如,在一個(gè)股票交易系統(tǒng)中,交易訂單的處理應(yīng)該按照時(shí)間順序進(jìn)行。如果訂單的處理順序出現(xiàn)錯(cuò)誤,就會(huì)導(dǎo)致交易數(shù)據(jù)不一致。

PS:我們本文主要討論的是多副本在同一時(shí)間上的數(shù)據(jù)一致性問(wèn)題。

2.主從復(fù)制

MySQL 主從復(fù)制是一種將 MySQL 主數(shù)據(jù)庫(kù)的數(shù)據(jù),同步到其他的數(shù)據(jù)庫(kù)的一種機(jī)制,從而實(shí)現(xiàn)數(shù)據(jù)的冗余備份和負(fù)載均衡,平行擴(kuò)展了數(shù)據(jù)庫(kù)的查詢能力。

主從數(shù)據(jù)庫(kù)基本概念:

  • 主數(shù)據(jù)庫(kù)(Master):主數(shù)據(jù)庫(kù)是數(shù)據(jù)的主要來(lái)源,負(fù)責(zé)接收和處理所有的寫(xiě)操作(INSERT、UPDATE、DELETE 等)。主數(shù)據(jù)庫(kù)將所有的寫(xiě)操作記錄到二進(jìn)制日志(Binary Log)中,這些日志記錄了數(shù)據(jù)庫(kù)的變更歷史。
  • 從數(shù)據(jù)庫(kù)(Slave):從數(shù)據(jù)庫(kù)通過(guò)復(fù)制主數(shù)據(jù)庫(kù)的二進(jìn)制日志來(lái)同步數(shù)據(jù)。從數(shù)據(jù)庫(kù)可以處理讀操作(SELECT),從而分擔(dān)主數(shù)據(jù)庫(kù)的負(fù)載。

MySQL 主從復(fù)制流程如下:

圖片圖片

它的主要執(zhí)行流程如下:

  • 主數(shù)據(jù)庫(kù)接收到一個(gè)寫(xiě)操作(如 INSERT、UPDATE、DELETE)時(shí),會(huì)將這個(gè)操作記錄到二進(jìn)制日志(Binary Log)中,將數(shù)據(jù)修改的操作按順序記錄下來(lái)。
  • 從數(shù)據(jù)庫(kù) IO 線程會(huì)自動(dòng)連接主服務(wù),從二進(jìn)制中讀取同步數(shù)據(jù),記錄到中繼日志(Relay Log)中。
  • 從數(shù)據(jù)庫(kù)的 SQL 線程會(huì)定期從中繼日志中獲取同步數(shù)據(jù),寫(xiě)入到從數(shù)據(jù)庫(kù)中。

3.MySQL主從同步類(lèi)型

MySQL 主從同步方式有以下三種:

圖片圖片

3.1 異步復(fù)制

異步復(fù)制默認(rèn)的主從同步復(fù)制模式,在這種模式下,主服務(wù)器提交事務(wù)后立即返回客戶端,無(wú)需等待從服務(wù)器確認(rèn)是否成功接收并應(yīng)用了事務(wù),從服務(wù)器會(huì)在后臺(tái)獨(dú)立地接收并應(yīng)用事務(wù)日志。

異步同步流程如下(紅色部分為主要執(zhí)行流程):

圖片圖片

優(yōu)點(diǎn)

  • 性能:異步復(fù)制模式下,主服務(wù)器的寫(xiě)操作不會(huì)因?yàn)榈却龔姆?wù)器的確認(rèn)而被阻塞,因此可以提供更高的寫(xiě)入吞吐量。
  • 簡(jiǎn)單:配置和管理相對(duì)簡(jiǎn)單。
  • 成本:不需要額外的硬件資源支持,因?yàn)椴恍枰咚俚木W(wǎng)絡(luò)連接來(lái)保證同步。

缺點(diǎn)

數(shù)據(jù)丟失問(wèn)題:在主服務(wù)器故障的情況下,可能存在數(shù)據(jù)未完全同步到從服務(wù)器的情況,導(dǎo)致數(shù)據(jù)丟失或不一致。

3.2 同步復(fù)制

同步復(fù)制是一種最為嚴(yán)格的復(fù)制模式,它要求主服務(wù)器在提交一個(gè)事務(wù)之前,必須等待所有從服務(wù)器確認(rèn)確認(rèn)接收到并應(yīng)用了事務(wù)之后,主服務(wù)器才會(huì)向客戶端返回事務(wù)提交成功的消息

同步復(fù)制執(zhí)行流程如下:

圖片圖片

優(yōu)點(diǎn)

  • 數(shù)據(jù)一致性:提供了更高的數(shù)據(jù)一致性保障,因?yàn)橹鞣?wù)器必須等待從服務(wù)器確認(rèn)才能完成事務(wù)提交。
  • 容錯(cuò)性:即使主服務(wù)器發(fā)生故障,至少有一個(gè)從服務(wù)器擁有最新的數(shù)據(jù),從而減少了數(shù)據(jù)丟失的風(fēng)險(xiǎn)。

缺點(diǎn)

  • 性能開(kāi)銷(xiāo)大:主庫(kù)需要等待所有從庫(kù)的響應(yīng),這會(huì)導(dǎo)致事務(wù)提交的延遲增加,尤其是在從庫(kù)數(shù)量較多或網(wǎng)絡(luò)狀況不佳時(shí),性能下降明顯。
  • 單點(diǎn)故障風(fēng)險(xiǎn):如果一個(gè)從庫(kù)出現(xiàn)故障,可能會(huì)導(dǎo)致整個(gè)系統(tǒng)的阻塞,因?yàn)橹鲙?kù)需要等待所有從庫(kù)的確認(rèn)。

3.3 半同步復(fù)制

半同步復(fù)制是一種折衷方案,它結(jié)合了異步復(fù)制的高性能和同步復(fù)制的高可靠性。在半同步復(fù)制模式下,主服務(wù)器在提交一個(gè)事務(wù)之前,需要等待至少一個(gè)從服務(wù)器確認(rèn)接收到該事務(wù)的日志,但不需要等待從服務(wù)器完成應(yīng)用。

半同步執(zhí)行流程如下:

圖片圖片

優(yōu)點(diǎn)

  • 數(shù)據(jù)一致性較好:相比異步復(fù)制,提供了更好的數(shù)據(jù)一致性保障。
  • 性能影響較小:相比同步復(fù)制,半同步復(fù)制的性能開(kāi)銷(xiāo)較小,因?yàn)橹恍枰却粋€(gè)從庫(kù)的確認(rèn)。
  • 靈活性較高:可以根據(jù)需要調(diào)整等待的從服務(wù)器數(shù)量,以適應(yīng)不同的性能和可靠性需求。

缺點(diǎn)

  • 性能波動(dòng)風(fēng)險(xiǎn):在網(wǎng)絡(luò)延遲較高或從庫(kù)負(fù)載較大的情況下,可能會(huì)導(dǎo)致主庫(kù)等待從庫(kù)確認(rèn)的時(shí)間過(guò)長(zhǎng),從而影響性能。
  • 配置復(fù)雜:相比異步復(fù)制,配置和管理稍微復(fù)雜一些。

4.小結(jié)

因此,想要保證數(shù)據(jù)完全一致性需要使用同步復(fù)制,但這會(huì)犧牲一定的性能;因此在生產(chǎn)環(huán)境我們可以使用半同步保證較好的數(shù)據(jù)一致性即可;而默認(rèn)的異步方式實(shí)現(xiàn)最簡(jiǎn)單、性能最好,但可能存在數(shù)據(jù)不一致的風(fēng)險(xiǎn),雖然發(fā)生的概率極低(生產(chǎn)環(huán)境也可以使用)。

責(zé)任編輯:武曉燕 來(lái)源: 磊哥和Java
相關(guān)推薦

2023-05-26 07:34:50

RedisMySQL緩存

2024-12-26 15:01:29

2023-09-07 08:11:24

Redis管道機(jī)制

2025-03-27 08:20:54

2021-12-14 07:15:57

MySQLRedis數(shù)據(jù)

2024-01-22 08:52:00

AQS雙異步數(shù)據(jù)一致性

2024-07-04 12:36:50

2023-09-15 14:24:54

ByteHouseClickHouse開(kāi)源

2022-02-17 21:04:27

數(shù)據(jù)庫(kù)MysqlRedis

2022-08-23 07:46:45

數(shù)據(jù)一致性數(shù)據(jù)庫(kù)

2020-06-01 22:09:48

緩存緩存同步緩存誤用

2022-12-05 08:24:32

mongodb數(shù)據(jù)庫(kù)數(shù)據(jù)

2022-02-23 09:17:09

數(shù)據(jù)庫(kù)分離變更

2022-09-15 10:37:46

MySQLRedis數(shù)據(jù)一致性

2022-10-19 12:22:53

并發(fā)扣款一致性

2013-05-16 14:10:02

MySQL主從服務(wù)器數(shù)據(jù)

2023-12-11 12:27:31

并發(fā)Zookeeper數(shù)據(jù)

2019-08-30 12:46:10

并發(fā)扣款查詢SQL

2018-08-14 10:39:04

數(shù)據(jù)錯(cuò)誤DIX

2021-10-14 10:00:46

MYSQL開(kāi)發(fā)數(shù)據(jù)
點(diǎn)贊
收藏

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

主站蜘蛛池模板: 国产在线资源 | 日韩欧美一区二区在线播放 | 亚洲激精日韩激精欧美精品 | 人人做人人澡人人爽欧美 | 综合色久 | 在线播放中文字幕 | 亚洲久视频 | 激情国产| 日本电影网站 | a在线观看 | 看一级毛片视频 | 日本中文字幕在线观看 | 伊人一二三 | 91不卡在线| 亚洲国产中文字幕 | 欧美自拍另类 | 成人在线精品视频 | 成人黄色a | 99re国产 | 美女国内精品自产拍在线播放 | 一级黄色毛片子 | 国产在线观看一区二区三区 | 亚洲综合色婷婷 | 国产精品视频观看 | 中文字幕91| 久国产视频 | 伦理午夜电影免费观看 | 欧美精品福利 | 日韩中文在线观看 | 成人做爰9片免费看网站 | 欧美成人hd| 精品1区2区 | 欧美美女二区 | japanhd美女动 | 一二三四在线视频观看社区 | 精品一二区 | 国产成人免费在线 | 99精品欧美一区二区蜜桃免费 | 婷婷色国产偷v国产偷v小说 | 在线观看中文字幕 | 精品免费在线 |