Docker搭建MySQL雙主復(fù)制詳細(xì)教程
在此之前需要提前安裝好Docker和 Docker Compose 。
一、創(chuàng)建目錄
首先創(chuàng)建一個(gè)本地?cái)?shù)據(jù)掛載目錄。
mkdir -p master1-data master2-data
二、編寫docker-compose.yml
version: '3.7'
services:
mysql-master1:
image: mysql:5.7.36
container_name: mysql-master1
environment:
MYSQL_ROOT_PASSWORD: rootpassword
MYSQL_DATABASE: mydb
volumes:
- ./master1-data:/var/lib/mysql
ports:
- "3306:3306"
command: --server-id=1 --log-bin=mysql-bin --gtid-mode=ON --enforce-gtid-consistency=ON
mysql-master2:
image: mysql:5.7.36
container_name: mysql-master2
environment:
MYSQL_ROOT_PASSWORD: rootpassword
MYSQL_DATABASE: mydb
volumes:
- ./master2-data:/var/lib/mysql
ports:
- "3307:3306"
command: --server-id=2 --log-bin=mysql-bin --gtid-mode=ON --enforce-gtid-consistency=ON
volumes:
master1-data:
master2-data:
三、拉取鏡像
我是使用的mysql5.7.36版本的,如果不同,需要自行修改
docker pull mysql:5.7.36

四、啟動(dòng) Docker Compose
docker-compose up -d

五、初始化雙主復(fù)制
1、在第一個(gè)主數(shù)據(jù)庫上配置復(fù)制用戶
進(jìn)入 mysql-master1 容器
docker exec -it mysql-master1 bash
登錄 MySQL
mysql -u root -p
執(zhí)行以下 SQL 命令
CREATE USER 'replica'@'%' IDENTIFIED BY 'replica_password'; GRANT REPLICATION SLAVE ON *.* TO 'replica'@'%'; FLUSH PRIVILEGES; SHOW MASTER STATUS;
記下 File 和 Position 的值。
2、在第二個(gè)主數(shù)據(jù)庫上配置復(fù)制用戶
進(jìn)入 mysql-master2 容器
docker exec -it mysql-master2 bash
登錄 MySQL
mysql -u root -p
執(zhí)行以下 SQL 命令
CREATE USER 'replica'@'%' IDENTIFIED BY 'replica_password'; GRANT REPLICATION SLAVE ON *.* TO 'replica'@'%'; FLUSH PRIVILEGES; SHOW MASTER STATUS;
記下 File 和 Position 的值。
3、在第一個(gè)主數(shù)據(jù)庫上配置從第二個(gè)主數(shù)據(jù)庫同步
進(jìn)入 mysql-master1 容器
docker exec -it mysql-master1 bash
登錄 MySQL
mysql -u root -p
執(zhí)行以下 SQL 命令
CHANGE MASTER TO MASTER_HOST='mysql-master2', MASTER_USER='replica', MASTER_PASSWORD='replica_password', MASTER_LOG_FILE='mysql-bin.000001', -- 使用第二個(gè)主數(shù)據(jù)庫的File值 MASTER_LOG_POS=154; -- 使用第二個(gè)主數(shù)據(jù)庫的Position值 START SLAVE;
4、在第二個(gè)主數(shù)據(jù)庫上配置從第一個(gè)主數(shù)據(jù)庫同步:
進(jìn)入 mysql-master2 容器
docker exec -it mysql-master2 bash
登錄 MySQL:
mysql -u root -p
執(zhí)行以下 SQL 命令
CHANGE MASTER TO MASTER_HOST='mysql-master1', MASTER_USER='replica', MASTER_PASSWORD='replica_password', MASTER_LOG_FILE='mysql-bin.000001', -- 使用第一個(gè)主數(shù)據(jù)庫的File值 MASTER_LOG_POS=154; -- 使用第一個(gè)主數(shù)據(jù)庫的Position值 START SLAVE;
六、驗(yàn)證主從復(fù)制
到這里,L雙主復(fù)制就配置完成了,你可以嘗試在一個(gè)主數(shù)據(jù)庫上插入數(shù)據(jù),并在另一個(gè)主數(shù)據(jù)庫上檢查數(shù)據(jù),確定雙主復(fù)制配置成功。正確的結(jié)果是,在一個(gè)數(shù)據(jù)庫進(jìn)行了新增、刪除、修改等操作后的結(jié)果,在第二個(gè)數(shù)據(jù)庫中會(huì)進(jìn)行同步。
到此這篇關(guān)于Docker搭建MySQL雙主復(fù)制詳細(xì)教程的文章就介紹到這了,更多相關(guān)Docker MySQL雙主復(fù)制內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
使用遠(yuǎn)程Docker進(jìn)行集成測試的環(huán)境搭建過程
使用docker可以幫助我們快速的搭建項(xiàng)目依賴環(huán)境,但是本地化的docker依賴,依然讓我們的代碼在測試時(shí),不夠純粹,對(duì)其各個(gè)運(yùn)行環(huán)境,都有本地docker安裝的要求2021-07-07
Docker?Kill/Pause/Unpause命令使用與區(qū)別小結(jié)
本文詳細(xì)介紹了Docker中的三個(gè)重要命令,kill、pause和unpause,這些命令在管理和操作運(yùn)行中的容器時(shí)非常有用,具有一定的參考價(jià)值,感興趣的可以了解一下2024-03-03
docker-compose部署Java應(yīng)用和相關(guān)依賴方式
介紹如何使用docker-compose一鍵部署Java應(yīng)用及依賴,并實(shí)現(xiàn)MySQL數(shù)據(jù)庫的自動(dòng)初始化2024-10-10
Docker Compose網(wǎng)絡(luò)配置指南分享
本文詳細(xì)介紹了Docker網(wǎng)絡(luò)配置的各個(gè)方面,包括基礎(chǔ)網(wǎng)絡(luò)架構(gòu)、自定義網(wǎng)絡(luò)配置、典型場景配置、高級(jí)網(wǎng)絡(luò)技巧、調(diào)試與診斷以及最佳實(shí)踐,通過多個(gè)實(shí)戰(zhàn)案例和常見問題解決方案,幫助讀者更好地理解和應(yīng)用Docker網(wǎng)絡(luò)技術(shù)2025-11-11
Docker 容器文件系統(tǒng)詳細(xì)介紹(圖文)
這篇文章主要介紹了Docker 容器文件系統(tǒng)詳細(xì)介紹(圖文)的相關(guān)資料,這里對(duì)Docker 容器文件系統(tǒng)進(jìn)行了具體的分析詳解,需要的朋友可以參考下2016-12-12
docker Nginx PHP-FPM單機(jī)多站點(diǎn)布署的方法
這篇文章主要介紹了docker Nginx PHP-FPM單機(jī)多站點(diǎn)布署的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-07-07
Docker中鏡像構(gòu)建文件Dockerfile與相關(guān)命令的詳細(xì)介紹
這篇文章主要介紹了Docker中鏡像構(gòu)建文件Dockerfile與相關(guān)命令的相關(guān)資料,文中介紹的很詳細(xì),相信對(duì)大家具有一定的參考價(jià)值,有需要的朋友們下面來一起看看吧。2017-02-02

