1、異步復制:這是MySQL默認的復制模式。在這種模式下,主庫在執(zhí)行完客戶端提交的事務后會立即將結果返回給客戶端,并不關心從庫是否已經接收并處理。這種模式的優(yōu)點是實現(xiàn)簡單,但缺點是如果主庫崩潰,已經提交的事務可能沒有傳到從庫,導致數(shù)據(jù)不一致。 2、全同步復制:在這種模式下,主庫執(zhí)行完一個事務后,需要
MySQL提供了多種復制模式,包括異步復制、全同步復制、半同步復制、增強半同步復制和組復制。每種模式都有其特點和適用場景。以下是對各種復制模式的詳細介紹:
1、異步復制:這是MySQL默認的復制模式。在這種模式下,主庫在執(zhí)行完客戶端提交的事務后會立即將結果返回給客戶端,并不關心從庫是否已經接收并處理。這種模式的優(yōu)點是實現(xiàn)簡單,但缺點是如果主庫崩潰,已經提交的事務可能沒有傳到從庫,導致數(shù)據(jù)不一致。
2、全同步復制:在這種模式下,主庫執(zhí)行完一個事務后,需要等待所有從庫都執(zhí)行了該事務才能返回給客戶端。這種模式的優(yōu)點是數(shù)據(jù)一致性高,但缺點是性能影響較大,因為需要等待所有從庫的確認。
3、半同步復制:這種模式介于異步復制和全同步復制之間。主庫在執(zhí)行完客戶端提交的事務后,會等待至少一個從庫接收到并寫入relay log中才返回給客戶端。這種模式提高了數(shù)據(jù)的安全性,但會造成一定的延遲。
4、增強半同步復制:這種模式在半同步復制的基礎上進一步增強了數(shù)據(jù)安全性。主庫將每個事務寫入binlog后,等待從庫刷新到磁盤才返回給客戶端。這種模式的優(yōu)點是進一步減少了數(shù)據(jù)丟失的風險,但缺點是可能會增加事務的延遲。
5、組復制:這種模式是一種高級的復制技術,支持多主多從架構,適用于讀寫參半的場景。它通過組內節(jié)點間的相互通信和投票機制來保證數(shù)據(jù)的一致性和高可用性。
在實際應用中,根據(jù)業(yè)務需求和性能要求選擇合適的復制模式非常重要。
接下來,我們將詳細介紹如何配置MySQL主從復制,以實現(xiàn)數(shù)據(jù)同步。
1、獲取MySQL鏡像
在node1和node2上分別拉取mysql鏡像,該鏡像mysql版本是8.4.3,執(zhí)行以下命令:
docker pull mysql:8
2、獲取默認配置文件
啟動容器,把配置文件copy到本地,(node1和node2同步操作)
# 在/opt/下創(chuàng)建一個mysql目錄
# 臨時啟動一下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 服務ID,保證整個集群環(huán)境中唯一,取值范圍:1 – 2的32次方-1,默認為1
server-id=1
#是否只讀,1 代表當前服務器只讀(不能做增刪改操作), 0代表讀寫
read-only=0
# 設置日志格式,默認值ROW。row(記錄行數(shù)據(jù)) statement(記錄sql) mixed(混合模式)
binlog_format=STATEMENT
# 二進制日志名,默認binlog
log-bin=master_binlog
# 設置需要復制的數(shù)據(jù)庫,默認復制全部數(shù)據(jù)庫
#binlog-do-db=test
# 設置不需要復制的數(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)建專門用于復制的賬戶,并授予復制所需的權限。
# 創(chuàng)建專門用于復制的賬戶
CREATE USER 'backups'@'%' IDENTIFIED BY 'backups';
# 授予此帳戶復制所需的權限
GRANT REPLICATION SLAVE ON *.* TO 'backups'@'%';
獲取復制源二進制日志坐標,要配置副本在正確的點開始復制過程,需要在二進制日志中記下源的當前坐標。要獲取源二進制日志坐標,通過使用命令行客戶端連接到源來啟動源上的會話,并通過執(zhí)行以下語句刷新所有表并阻止寫入語句。
6、配置啟動從庫
在node2上編輯從庫配置文件,并啟動從庫。
7、測試
連接主庫和從庫,創(chuàng)建數(shù)據(jù)庫表并插入數(shù)據(jù),查看從庫是否同步。
至此,主從同步已經完成。如果需要一主多從,只需要在多部署幾個從庫,按照上面從庫的部署方式就可以了。
如果感覺寫的還能看,可以關注公眾號,會將最新消息推送給你。
本站所有軟件,都由網(wǎng)友上傳,如有侵犯你的版權,請發(fā)郵件[email protected]
湘ICP備2022002427號-10 湘公網(wǎng)安備:43070202000427號© 2013~2025 haote.com 好特網(wǎng)