下載安裝docker desktop
官網(wǎng)地址
拉取mysql鏡像
docker pull mysql:5.7
運行兩個容器
主數(shù)據(jù)庫
docker run -d -p 3333:3306 --name master -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7
從數(shù)據(jù)庫
docker run -d -p 3334:3306 --name slave -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7
查看運行的容器
docker ps
image.png
查看master容器IP地址
docker inspect --format='{{.NetworkSettings.IPAddress}}' master
image.png
修改mysql配置文件
進入容器
docker exec -it master /bin/bash
ls
image.png
cd etc
ls
image.png
這里的my.cnf就是數(shù)據(jù)庫配置
容器沒有編輯器修改,復(fù)制到本地
復(fù)制容器內(nèi)文件到本地
docker cp master:/etc/my.cnf D:\mysql\master
修改完成以后復(fù)制本地文件到容器
docker cp D:\mysql\master\my.cnf master:/etc
修改內(nèi)容:
master
[mysqld]
server-id=101
## 開啟二進制日志功能,可以隨便取(關(guān)鍵)
log-bin=mysql-bin
secure_file_priv=/var/lib/mysql
#設(shè)置密碼規(guī)則
default_authentication_plugin=mysql_native_password
#最大連接數(shù)設(shè)置 根據(jù)實際需要 自行調(diào)整
max_connections=1000
slave
[mysqld]
server-id=102
## 開啟二進制日志功能,以備Slave作為其它Slave的Master時使用
log-bin=mysql-slave-bin
## relay_log配置中繼日志
relay_log=edu-mysql-relay-bin
secure_file_priv=/var/lib/mysql
#設(shè)置密碼規(guī)則
default_authentication_plugin=mysql_native_password
#最大連接數(shù)設(shè)置 根據(jù)實際需要 自行調(diào)整
max_connections=1000
修改完成以后重啟兩個容器
docker restart master slave
設(shè)置主從復(fù)制
進入master容器數(shù)據(jù)庫
docker exec -it master /bin/bash
mysql -uroot -p123456
建立帳戶并授權(quán) slave
CREATE USER 'slave'@'%' IDENTIFIED BY '123456';
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%';
查看master狀態(tài)
show master status;
image.png
記錄File和Position的值
記住不要對master數(shù)據(jù)庫進行其他修改操作,否則File和Position的值會發(fā)生變化
進入slave容器數(shù)據(jù)庫
docker exec -it slave /bin/bash
mysql -uroot -p123456
復(fù)制主機命令
CHANGE MASTER TO MASTER_HOST='172.17.0.2',
MASTER_USER='slave',
MASTER_PASSWORD='123456',
MASTER_PORT=3306,
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=1045;
MASTER_HOST: master數(shù)據(jù)庫IP地址
MASTER_LOG_FILE:master數(shù)據(jù)庫File
MASTER_LOG_POS: master數(shù)據(jù)庫Position
啟動從服務(wù)器復(fù)制功能
start slave;
查看從服務(wù)器狀態(tài)
show slave status\G;
image.png
這兩條都為Yes,說明成功,通過navicat,操作master服務(wù)器新增數(shù)據(jù)庫,表,數(shù)據(jù)時,slave服務(wù)器會相應(yīng)的生成數(shù)據(jù)庫,表和數(shù)據(jù)