Docker部署MySQL主從復(fù)制的實(shí)現(xiàn)
平臺(tái)說(shuō)明
- 操作系統(tǒng):Windows 11
- Docker:20.10.22
- MySQL:8.0.32
一、Docker創(chuàng)建網(wǎng)絡(luò)
說(shuō)明:方便后續(xù)MySQL主從連接
1. 創(chuàng)建網(wǎng)絡(luò)
docker network create net-mysql
2. 查看網(wǎng)絡(luò)

二、創(chuàng)建MySQL主從容器
1.拉取鏡像
docker pull mysql
2.查看鏡像
docker images

3.創(chuàng)建啟動(dòng)容器
創(chuàng)建MySQL主機(jī)
docker run -d -p 3310:3306 -v D:/ProgramData/docker_config/mysql/master/config:/etc/mysql/conf.d -v D:/ProgramData/docker_config/mysql/master/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --network net-mysql --name mysql-master mysql:latest
創(chuàng)建MySQL從機(jī)
docker run -d -p 3311:3306 -v D:/ProgramData/docker_config/mysql/slave-1/config:/etc/mysql/conf.d -v D:/ProgramData/docker_config/mysql/slave-1/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --network net-mysql --name mysql-slave-1 mysql:latest
查看容器是否啟動(dòng)成功
docker ps

三、主從配置
1.主機(jī)配置文件
在D:\ProgramData\docker_config\mysql\master\config文件夾下創(chuàng)建my.cnf
[mysqld] #主服務(wù)器唯一ID server-id=1 #啟用二進(jìn)制日志 log-bin=mysql-bin #設(shè)置不要復(fù)制的數(shù)據(jù)庫(kù)(可設(shè)置多個(gè)) binlog-ignore-db=mysql binlog-ignore-db=information_schema #設(shè)置需要復(fù)制的數(shù)據(jù)庫(kù) 需要復(fù)制的主數(shù)據(jù)庫(kù)名字 binlog-do-db=db_test #設(shè)置logbin格式 binlog_format=STATEMENT
2.從機(jī)配置文件
在D:\ProgramData\docker_config\mysql\slave-1\config文件夾下創(chuàng)建my.cnf
[mysqld] #從服務(wù)器唯一ID server-id=2 #啟用中繼日志 relay-log=mysql-relay
3.注意事項(xiàng)
編寫結(jié)束后,進(jìn)行對(duì)應(yīng)的容器中查看,以主機(jī)為例
進(jìn)入主機(jī)的bash
docker exec -it mysql-master bash
進(jìn)入啟動(dòng)容器時(shí)文件掛載的目錄
cd /etc/mysql/conf.d
當(dāng)前目錄下應(yīng)該是my.cnf.txt文件,需要修改文件名稱,并將my.cnf內(nèi)容復(fù)制到/etc/mysq目錄下的my.cnf文件中,才能生效
# 查看當(dāng)前目錄下的文件 ls # 修改文件名 mv my.cnf.txt my.cnf # 復(fù)制到/etc/mysql目錄下 cp my.cnf /etc/mysql/my.cnf
4.重啟容器
docker restart mysql-master mysql-slave-1
5.連接主從數(shù)據(jù)庫(kù) 主機(jī)配置
進(jìn)入主機(jī)的bash
docker exec -it mysql-master bash
在bash中連接mysql
mysql -uroot -p

創(chuàng)建用戶并授權(quán)
GRANT REPLICATION SLAVE ON *.* TO 'dev'@'%' IDENTIFIED BY '123456';
查看master狀態(tài)
show master status;

停在這里,不要在主機(jī)上執(zhí)行其他命令
從機(jī)配置
進(jìn)入從機(jī)的bash
docker exec -it mysql-slave-1 bash
連接mysql
mysql -uroot -p123456
在從機(jī)的mysql中執(zhí)行一下命令
CHANGE MASTER TO MASTER_HOST='172.19.0.2', MASTER_USER='dev', MASTER_PASSWORD='123456', MASTER_PORT=3306, MASTER_LOG_FILE='mysql-bin.000002', MASTER_LOG_POS=1325;
補(bǔ)充說(shuō)明
獲取主機(jī)的IP地址
docker network inspect net-mysql

MASTER_PORT是3306,不是映射到宿主機(jī)的端口,千萬(wàn)別搞錯(cuò)了
MASTER_LOG_FILE和MASTER_LOG_pOS的值對(duì)應(yīng)著主機(jī)最后一步操作的值

啟動(dòng)從機(jī)復(fù)制
在mysql中執(zhí)行
start slave;
查看從機(jī)狀態(tài)
show slave status\G;

Slave_IO_Running和Slave_SQL_Running顯示為Yes即為成功
四、測(cè)試主從復(fù)制
MySQL主庫(kù)中執(zhí)行
create database db_test;
use db_test;
CREATE TABLE user ( id int UNSIGNED NOT NULL AUTO_INCREMENT, name varchar(20) NOT NULL, age int NOT NULL, PRIMARY KEY (id) );
insert into user(name, age) values('Jack', 20);
MySQL從庫(kù)中查詢
show databases;

use db_test; show tables;

select * from user;

到此這篇關(guān)于Docker部署MySQL主從復(fù)制的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)Docker部署MySQL主從復(fù)制內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- docker搭建mysql主從同步的全過(guò)程
- Docker安裝mysql主從復(fù)制的實(shí)現(xiàn)步驟
- docker實(shí)現(xiàn)MySQL的主從復(fù)制
- 使用Docker搭建MySQL主從數(shù)據(jù)庫(kù)的方法步驟
- Docker上部署mysql8主從復(fù)制的實(shí)現(xiàn)
- docker-compose啟動(dòng)mysql雙機(jī)熱備互為主從的方法實(shí)現(xiàn)
- docker實(shí)現(xiàn)MySQL主從雙備的示例代碼
- 兩臺(tái)互通的服務(wù)器使用Docker部署一主兩從MySQL8.0.35的方法
相關(guān)文章
docker鏡像拉取過(guò)程和遠(yuǎn)程代理配置過(guò)程
Docker鏡像拉取過(guò)程涉及客戶端、守護(hù)進(jìn)程、注冊(cè)表和網(wǎng)絡(luò)通信,客戶端發(fā)送請(qǐng)求,守護(hù)進(jìn)程處理并從注冊(cè)表下載鏡像層,配置包括Docker守護(hù)進(jìn)程的代理、TLS設(shè)置和防火墻規(guī)則,確保網(wǎng)絡(luò)策略和安全措施到位,以優(yōu)化鏡像拉取和保護(hù)傳輸過(guò)程2024-11-11
docker 移除掉運(yùn)行不正常的container操作
這篇文章主要介紹了docker 移除掉運(yùn)行不正常的container操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-03-03
解決docker登錄私倉(cāng)失敗cannot validate certificate for
文章主要講述了如何搭建和配置Harbor鏡像倉(cāng)庫(kù),并詳細(xì)描述了解決在登錄Harbor私倉(cāng)時(shí)遇到的問(wèn)題的方法,包括重啟Docker服務(wù)、解決登錄報(bào)錯(cuò)、重新配置認(rèn)證等步驟,最后成功拉取鏡像2026-04-04
Docker中鏡像構(gòu)建文件Dockerfile與相關(guān)命令的詳細(xì)介紹
這篇文章主要介紹了Docker中鏡像構(gòu)建文件Dockerfile與相關(guān)命令的相關(guān)資料,文中介紹的很詳細(xì),相信對(duì)大家具有一定的參考價(jià)值,有需要的朋友們下面來(lái)一起看看吧。2017-02-02
Docker部署Mysql8.0.20并配置主從復(fù)制的實(shí)現(xiàn)步驟
主從復(fù)制是指數(shù)據(jù)可以從一個(gè)MySQL數(shù)據(jù)庫(kù)服務(wù)器主節(jié)點(diǎn)復(fù)制到一個(gè)或多個(gè)從節(jié)點(diǎn),本文主要介紹了Docker部署Mysql8.0.20并配置主從復(fù)制的實(shí)現(xiàn)步驟,具有一定的參考價(jià)值,感興趣的可以了解一下2024-06-06
Docker核心知識(shí)點(diǎn)和常用指令(命令)速通
Docker是一種容器化平臺(tái),它通過(guò)容器技術(shù)將所有依賴項(xiàng)打包到一個(gè)鏡像中,再通過(guò)鏡像運(yùn)行一個(gè)獨(dú)立并且可移植的容器,這篇文章主要介紹了Docker核心知識(shí)點(diǎn)和常用指令(命令)的相關(guān)資料,需要的朋友可以參考下2026-04-04
dockerfile echo指定文件多行文本的方法實(shí)現(xiàn)
這篇文章主要介紹了dockerfile echo指定文件多行文本的方法實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09

