Docker部署MySQL主從復(fù)制的實(shí)現(xiàn)
平臺(tái)說明
- 操作系統(tǒng):Windows 11
- Docker:20.10.22
- MySQL:8.0.32
一、Docker創(chuàng)建網(wǎng)絡(luò)
說明:方便后續(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ǔ)充說明
獲取主機(jī)的IP地址
docker network inspect net-mysql
MASTER_PORT是3306,不是映射到宿主機(jī)的端口,千萬別搞錯(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)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Docker服務(wù)器存儲(chǔ)資源池不足的問題解決
這篇文章主要給大家介紹了關(guān)于Docker服務(wù)器存儲(chǔ)資源池不足的問題解決方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11詳解Docker+Jenkins+Gitlab+Django應(yīng)用部署實(shí)踐
這篇文章主要介紹了Docker+Jenkins+Gitlab+Django應(yīng)用部署實(shí)踐,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2019-01-01Dockerfile的CMD與ENTRYPOINT的區(qū)別
CMD和ENTRYPOINT的區(qū)別在于CMD提供默認(rèn)的執(zhí)行指令,而ENTRYPOINT定義容器啟動(dòng)時(shí)運(yùn)行的命令,下面就來詳細(xì)的介紹一下這兩者的區(qū)別,具有一定的參考價(jià)值,感興趣的可以了解一下2024-12-12docker?部署?gitlab-ce?16.9.1的詳細(xì)過程
Docker是一個(gè)開源的應(yīng)用容器引擎,它允許開發(fā)者將應(yīng)用及其依賴打包到一個(gè)可移植的容器中,然后發(fā)布到任何支持Docker的Linux或Windows操作系統(tǒng)上,這篇文章主要介紹了docker?部署gitlab-ce?16.9.1的詳細(xì)過程,本文給大家介紹的非常詳細(xì),感興趣的朋友一起看看吧2024-04-04MacOS使用Docker創(chuàng)建MySQL主從數(shù)據(jù)庫(kù)的方法
這篇文章主要介紹了MacOS使用Docker創(chuàng)建MySQL主從數(shù)據(jù)庫(kù),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-12-12centos6使用docker部署zookeeper操作示例
這篇文章主要介紹了centos6使用docker部署zookeeper操作,結(jié)合實(shí)例形式分析了centos6平臺(tái)使用docker部署zookeeper相關(guān)命令與使用技巧,需要的朋友可以參考下2020-02-02docker常用命令總結(jié)之安裝、鏡像、容器基本操作
這篇文章主要介紹了docker常用命令總結(jié)之安裝、鏡像、容器基本操作,需要的朋友可以參考下2017-05-05