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ù)庫(kù)上配置復(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ù)庫(kù)上配置復(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ù)庫(kù)上配置從第二個(gè)主數(shù)據(jù)庫(kù)同步
進(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ù)庫(kù)的File值 MASTER_LOG_POS=154; -- 使用第二個(gè)主數(shù)據(jù)庫(kù)的Position值 START SLAVE;
4、在第二個(gè)主數(shù)據(jù)庫(kù)上配置從第一個(gè)主數(shù)據(jù)庫(kù)同步:
進(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ù)庫(kù)的File值 MASTER_LOG_POS=154; -- 使用第一個(gè)主數(shù)據(jù)庫(kù)的Position值 START SLAVE;
六、驗(yàn)證主從復(fù)制
到這里,L雙主復(fù)制就配置完成了,你可以嘗試在一個(gè)主數(shù)據(jù)庫(kù)上插入數(shù)據(jù),并在另一個(gè)主數(shù)據(jù)庫(kù)上檢查數(shù)據(jù),確定雙主復(fù)制配置成功。正確的結(jié)果是,在一個(gè)數(shù)據(jù)庫(kù)進(jìn)行了新增、刪除、修改等操作后的結(jié)果,在第二個(gè)數(shù)據(jù)庫(kù)中會(huì)進(jìn)行同步。
到此這篇關(guān)于Docker搭建MySQL雙主復(fù)制詳細(xì)教程的文章就介紹到這了,更多相關(guān)Docker MySQL雙主復(fù)制內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
使用Docker配置redis sentinel哨兵的方法步驟
本文主要介紹了Docker配置redis sentinel哨兵的方法步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-07-07Docker 教程之鏡像創(chuàng)建及修改詳細(xì)介紹
這篇文章主要介紹了Docker 教程之鏡像創(chuàng)建及修改詳細(xì)介紹的相關(guān)資料,需要的朋友可以參考下2016-12-12Docket Desktop安裝redis并設(shè)置密碼方式
在DockerDesktop中安裝Redis并設(shè)置密碼的步驟包括啟動(dòng)Docker、拉取Redis鏡像、創(chuàng)建并運(yùn)行Redis容器設(shè)置密碼、驗(yàn)證容器運(yùn)行、連接并驗(yàn)證密碼,以及可選的持久化數(shù)據(jù)設(shè)置2025-03-03關(guān)于docker安全之Docker-TLS加密通訊問(wèn)題
這篇文章主要介紹了docker安全之Docker-TLS加密通訊,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-12-12如何利用Docker部署一個(gè)簡(jiǎn)單的springboot項(xiàng)目
這篇文章主要介紹了如何利用Docker部署一個(gè)簡(jiǎn)單的springboot項(xiàng)目,本文通過(guò)實(shí)例圖文實(shí)例代碼相結(jié)合給大家介紹的非常詳細(xì),需要的朋友可以參考下2024-02-02基于Docker+Selenium Grid的測(cè)試技術(shù)應(yīng)用示例代碼
Selenium Grid允許我們?cè)诙嗯_(tái)計(jì)算機(jī)上并行運(yùn)行測(cè)試,并集中管理不同的瀏覽器版本和瀏覽器配置。這篇文章給大家介紹基于Docker+Selenium Grid的測(cè)試技術(shù)應(yīng)用示例代碼,需要的朋友參考下吧2021-08-08