Docker部署MySQL主從復制的實現(xiàn)
平臺說明
- 操作系統(tǒng):Windows 11
- Docker:20.10.22
- MySQL:8.0.32
一、Docker創(chuàng)建網(wǎng)絡
說明:方便后續(xù)MySQL主從連接
1. 創(chuàng)建網(wǎng)絡
docker network create net-mysql
2. 查看網(wǎng)絡
二、創(chuàng)建MySQL主從容器
1.拉取鏡像
docker pull mysql
2.查看鏡像
docker images
3.創(chuàng)建啟動容器
創(chuàng)建MySQL主機
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從機
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
查看容器是否啟動成功
docker ps
三、主從配置
1.主機配置文件
在D:\ProgramData\docker_config\mysql\master\config文件夾下創(chuàng)建my.cnf
[mysqld] #主服務器唯一ID server-id=1 #啟用二進制日志 log-bin=mysql-bin #設置不要復制的數(shù)據(jù)庫(可設置多個) binlog-ignore-db=mysql binlog-ignore-db=information_schema #設置需要復制的數(shù)據(jù)庫 需要復制的主數(shù)據(jù)庫名字 binlog-do-db=db_test #設置logbin格式 binlog_format=STATEMENT
2.從機配置文件
在D:\ProgramData\docker_config\mysql\slave-1\config文件夾下創(chuàng)建my.cnf
[mysqld] #從服務器唯一ID server-id=2 #啟用中繼日志 relay-log=mysql-relay
3.注意事項
編寫結束后,進行對應的容器中查看,以主機為例
進入主機的bash
docker exec -it mysql-master bash
進入啟動容器時文件掛載的目錄
cd /etc/mysql/conf.d
當前目錄下應該是my.cnf.txt文件,需要修改文件名稱,并將my.cnf內(nèi)容復制到/etc/mysq目錄下的my.cnf文件中,才能生效
# 查看當前目錄下的文件 ls # 修改文件名 mv my.cnf.txt my.cnf # 復制到/etc/mysql目錄下 cp my.cnf /etc/mysql/my.cnf
4.重啟容器
docker restart mysql-master mysql-slave-1
5.連接主從數(shù)據(jù)庫 主機配置
進入主機的bash
docker exec -it mysql-master bash
在bash中連接mysql
mysql -uroot -p
創(chuàng)建用戶并授權
GRANT REPLICATION SLAVE ON *.* TO 'dev'@'%' IDENTIFIED BY '123456';
查看master狀態(tài)
show master status;
停在這里,不要在主機上執(zhí)行其他命令
從機配置
進入從機的bash
docker exec -it mysql-slave-1 bash
連接mysql
mysql -uroot -p123456
在從機的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;
補充說明
獲取主機的IP地址
docker network inspect net-mysql
MASTER_PORT是3306,不是映射到宿主機的端口,千萬別搞錯了
MASTER_LOG_FILE和MASTER_LOG_pOS的值對應著主機最后一步操作的值
啟動從機復制
在mysql中執(zhí)行
start slave;
查看從機狀態(tài)
show slave status\G;
Slave_IO_Running和Slave_SQL_Running顯示為Yes即為成功
四、測試主從復制
MySQL主庫中執(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從庫中查詢
show databases;
use db_test; show tables;
select * from user;
到此這篇關于Docker部署MySQL主從復制的實現(xiàn)的文章就介紹到這了,更多相關Docker部署MySQL主從復制內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
詳解Docker+Jenkins+Gitlab+Django應用部署實踐
這篇文章主要介紹了Docker+Jenkins+Gitlab+Django應用部署實踐,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-01-01Dockerfile的CMD與ENTRYPOINT的區(qū)別
CMD和ENTRYPOINT的區(qū)別在于CMD提供默認的執(zhí)行指令,而ENTRYPOINT定義容器啟動時運行的命令,下面就來詳細的介紹一下這兩者的區(qū)別,具有一定的參考價值,感興趣的可以了解一下2024-12-12docker?部署?gitlab-ce?16.9.1的詳細過程
Docker是一個開源的應用容器引擎,它允許開發(fā)者將應用及其依賴打包到一個可移植的容器中,然后發(fā)布到任何支持Docker的Linux或Windows操作系統(tǒng)上,這篇文章主要介紹了docker?部署gitlab-ce?16.9.1的詳細過程,本文給大家介紹的非常詳細,感興趣的朋友一起看看吧2024-04-04MacOS使用Docker創(chuàng)建MySQL主從數(shù)據(jù)庫的方法
這篇文章主要介紹了MacOS使用Docker創(chuàng)建MySQL主從數(shù)據(jù)庫,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-12-12centos6使用docker部署zookeeper操作示例
這篇文章主要介紹了centos6使用docker部署zookeeper操作,結合實例形式分析了centos6平臺使用docker部署zookeeper相關命令與使用技巧,需要的朋友可以參考下2020-02-02