您的位置:首頁 > 軟件教程 > 教程 > MySQL復(fù)制模式及配置步驟詳解

MySQL復(fù)制模式及配置步驟詳解

來源:好特整理 | 時(shí)間:2024-10-22 09:48:34 | 閱讀:179 |  標(biāo)簽: S 復(fù)制 配置   | 分享到:

1、異步復(fù)制:這是MySQL默認(rèn)的復(fù)制模式。在這種模式下,主庫在執(zhí)行完客戶端提交的事務(wù)后會立即將結(jié)果返回給客戶端,并不關(guān)心從庫是否已經(jīng)接收并處理。這種模式的優(yōu)點(diǎn)是實(shí)現(xiàn)簡單,但缺點(diǎn)是如果主庫崩潰,已經(jīng)提交的事務(wù)可能沒有傳到從庫,導(dǎo)致數(shù)據(jù)不一致。 2、全同步復(fù)制:在這種模式下,主庫執(zhí)行完一個(gè)事務(wù)后,需要

MySQL提供了多種復(fù)制模式,包括異步復(fù)制、全同步復(fù)制、半同步復(fù)制、增強(qiáng)半同步復(fù)制和組復(fù)制。每種模式都有其特點(diǎn)和適用場景。以下是對各種復(fù)制模式的詳細(xì)介紹:

1、異步復(fù)制:這是MySQL默認(rèn)的復(fù)制模式。在這種模式下,主庫在執(zhí)行完客戶端提交的事務(wù)后會立即將結(jié)果返回給客戶端,并不關(guān)心從庫是否已經(jīng)接收并處理。這種模式的優(yōu)點(diǎn)是實(shí)現(xiàn)簡單,但缺點(diǎn)是如果主庫崩潰,已經(jīng)提交的事務(wù)可能沒有傳到從庫,導(dǎo)致數(shù)據(jù)不一致。

2、全同步復(fù)制:在這種模式下,主庫執(zhí)行完一個(gè)事務(wù)后,需要等待所有從庫都執(zhí)行了該事務(wù)才能返回給客戶端。這種模式的優(yōu)點(diǎn)是數(shù)據(jù)一致性高,但缺點(diǎn)是性能影響較大,因?yàn)樾枰却袕膸斓拇_認(rèn)。

3、半同步復(fù)制:這種模式介于異步復(fù)制和全同步復(fù)制之間。主庫在執(zhí)行完客戶端提交的事務(wù)后,會等待至少一個(gè)從庫接收到并寫入relay log中才返回給客戶端。這種模式提高了數(shù)據(jù)的安全性,但會造成一定的延遲。

4、增強(qiáng)半同步復(fù)制:這種模式在半同步復(fù)制的基礎(chǔ)上進(jìn)一步增強(qiáng)了數(shù)據(jù)安全性。主庫將每個(gè)事務(wù)寫入binlog后,等待從庫刷新到磁盤才返回給客戶端。這種模式的優(yōu)點(diǎn)是進(jìn)一步減少了數(shù)據(jù)丟失的風(fēng)險(xiǎn),但缺點(diǎn)是可能會增加事務(wù)的延遲。

5、組復(fù)制:這種模式是一種高級的復(fù)制技術(shù),支持多主多從架構(gòu),適用于讀寫參半的場景。它通過組內(nèi)節(jié)點(diǎn)間的相互通信和投票機(jī)制來保證數(shù)據(jù)的一致性和高可用性。

在實(shí)際應(yīng)用中,根據(jù)業(yè)務(wù)需求和性能要求選擇合適的復(fù)制模式非常重要。

接下來,我們將詳細(xì)介紹如何配置MySQL主從復(fù)制,以實(shí)現(xiàn)數(shù)據(jù)同步。

1、獲取MySQL鏡像

在node1和node2上分別拉取mysql鏡像,該鏡像mysql版本是8.4.3,執(zhí)行以下命令:

docker pull mysql:8

2、獲取默認(rèn)配置文件

啟動容器,把配置文件copy到本地,(node1和node2同步操作)

# 在/opt/下創(chuàng)建一個(gè)mysql目錄
# 臨時(shí)啟動一下mysql
docker run -d \
    --name mysql-master \
    -p 3306:3306 \
    -e MYSQL_ROOT_PASSWORD=123456 \
    mysql:8
    
# 把數(shù)據(jù)和配置目錄copy到本地
node1上執(zhí)行
docker cp mysql-master:/etc/my.cnf /opt/mysql/my.cnf
node2上執(zhí)行
docker cp mysql-master:/etc/my.cnf /opt/mysql/my.cnf

3、配置啟動主庫

在node1修改主庫配置文件,編輯以下配置:

[mysqld]
#mysql 服務(wù)ID,保證整個(gè)集群環(huán)境中唯一,取值范圍:1 – 2的32次方-1,默認(rèn)為1
server-id=1
#是否只讀,1 代表當(dāng)前服務(wù)器只讀(不能做增刪改操作), 0代表讀寫
read-only=0
# 設(shè)置日志格式,默認(rèn)值ROW。row(記錄行數(shù)據(jù))  statement(記錄sql)  mixed(混合模式)
binlog_format=STATEMENT
# 二進(jìn)制日志名,默認(rèn)binlog
log-bin=master_binlog
# 設(shè)置需要復(fù)制的數(shù)據(jù)庫,默認(rèn)復(fù)制全部數(shù)據(jù)庫
#binlog-do-db=test
# 設(shè)置不需要復(fù)制的數(shù)據(jù)庫
# binlog-ignore-db=test

4、在node1上啟動主庫

執(zhí)行以下命令:

docker run -d \
    --name mysql-master \
    -p 3306:3306 \
    -e MYSQL_ROOT_PASSWORD=123456 \
    -v /opt/mysql/mysql_data:/var/lib/mysql \
    -v /opt/mysql/my.cnf:/etc/my.cnf \
    --restart=always \
    --privileged=true \
    mysql:8

5、創(chuàng)建主備賬號

在主庫中創(chuàng)建專門用于復(fù)制的賬戶,并授予復(fù)制所需的權(quán)限。

# 創(chuàng)建專門用于復(fù)制的賬戶
CREATE USER 'backups'@'%' IDENTIFIED BY 'backups';
# 授予此帳戶復(fù)制所需的權(quán)限
GRANT REPLICATION SLAVE ON *.* TO 'backups'@'%';

獲取復(fù)制源二進(jìn)制日志坐標(biāo),要配置副本在正確的點(diǎn)開始復(fù)制過程,需要在二進(jìn)制日志中記下源的當(dāng)前坐標(biāo)。要獲取源二進(jìn)制日志坐標(biāo),通過使用命令行客戶端連接到源來啟動源上的會話,并通過執(zhí)行以下語句刷新所有表并阻止寫入語句。

6、配置啟動從庫

在node2上編輯從庫配置文件,并啟動從庫。

7、測試

連接主庫和從庫,創(chuàng)建數(shù)據(jù)庫表并插入數(shù)據(jù),查看從庫是否同步。

至此,主從同步已經(jīng)完成。如果需要一主多從,只需要在多部署幾個(gè)從庫,按照上面從庫的部署方式就可以了。

如果感覺寫的還能看,可以關(guān)注公眾號,會將最新消息推送給你。

MySQL復(fù)制模式及配置步驟詳解

小編推薦閱讀

好特網(wǎng)發(fā)布此文僅為傳遞信息,不代表好特網(wǎng)認(rèn)同期限觀點(diǎn)或證實(shí)其描述。

復(fù)制 1.2
復(fù)制 1.2
類型:動作冒險(xiǎn)  運(yùn)營狀態(tài):正式運(yùn)營  語言: 英文   

游戲攻略

游戲禮包

游戲視頻

游戲下載

游戲活動

《復(fù)制》(Replica)是游戲商ZeroRockEntertainment旗下的一款文字冒險(xiǎn)手游,這是一款通過手機(jī)和社交媒體

相關(guān)視頻攻略

更多

掃二維碼進(jìn)入好特網(wǎng)手機(jī)版本!

掃二維碼進(jìn)入好特網(wǎng)微信公眾號!

本站所有軟件,都由網(wǎng)友上傳,如有侵犯你的版權(quán),請發(fā)郵件[email protected]

湘ICP備2022002427號-10 湘公網(wǎng)安備:43070202000427號© 2013~2024 haote.com 好特網(wǎng)