docker desktop 搭建mysql主从复制

下载安装docker desktop

官网地址

拉取mysql镜像

docker pull mysql:5.7

运行两个容器

主数据库

docker run -d -p 3333:3306 --name master -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7

从数据库

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就是数据库配置
容器没有编辑器修改,复制到本地

复制容器内文件到本地

docker cp master:/etc/my.cnf D:\mysql\master

修改完成以后复制本地文件到容器

docker cp D:\mysql\master\my.cnf master:/etc

修改内容:
master

[mysqld]
server-id=101

## 开启二进制日志功能,可以随便取(关键)
log-bin=mysql-bin
secure_file_priv=/var/lib/mysql

#设置密码规则
default_authentication_plugin=mysql_native_password  

#最大连接数设置 根据实际需要 自行调整
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

#设置密码规则
default_authentication_plugin=mysql_native_password

#最大连接数设置 根据实际需要 自行调整
max_connections=1000

修改完成以后重启两个容器

docker restart master slave

设置主从复制

进入master容器数据库

docker exec -it master /bin/bash
mysql -uroot -p123456

建立帐户并授权 slave

CREATE USER 'slave'@'%' IDENTIFIED BY '123456';
 
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%';

查看master状态

show master status;
image.png

记录File和Position的值

记住不要对master数据库进行其他修改操作,否则File和Position的值会发生变化

进入slave容器数据库

docker exec -it slave /bin/bash
mysql -uroot -p123456

复制主机命令

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数据库IP地址
MASTER_LOG_FILE:master数据库File
MASTER_LOG_POS: master数据库Position

启动从服务器复制功能

start slave;

查看从服务器状态

show slave status\G;
image.png

这两条都为Yes,说明成功,通过navicat,操作master服务器新增数据库,表,数据时,slave服务器会相应的生成数据库,表和数据

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容