Docker部署MySQL主从复制的实现
平台说明
- 操作系统:Windows 11
- Docker:20.10.22
- MySQL:8.0.32
一、Docker创建网络
说明:方便后续MySQL主从连接
1. 创建网络
docker network create net-mysql
2. 查看网络
二、创建MySQL主从容器
1.拉取镜像
docker pull mysql
2.查看镜像
docker images
3.创建启动容器
创建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
创建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文件夹下创建my.cnf
[mysqld] #主服务器唯一ID server-id=1 #启用二进制日志 log-bin=mysql-bin #设置不要复制的数据库(可设置多个) binlog-ignore-db=mysql binlog-ignore-db=information_schema #设置需要复制的数据库 需要复制的主数据库名字 binlog-do-db=db_test #设置logbin格式 binlog_format=STATEMENT
2.从机配置文件
在D:\ProgramData\docker_config\mysql\slave-1\config文件夹下创建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内容复制到/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.连接主从数据库 主机配置
进入主机的bash
docker exec -it mysql-master bash
在bash中连接mysql
mysql -uroot -p
创建用户并授权
GRANT REPLICATION SLAVE ON *.* TO 'dev'@'%' IDENTIFIED BY '123456';
查看master状态
show master status;
停在这里,不要在主机上执行其他命令
从机配置
进入从机的bash
docker exec -it mysql-slave-1 bash
连接mysql
mysql -uroot -p123456
在从机的mysql中执行一下命令
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中执行
start slave;
查看从机状态
show slave status\G;
Slave_IO_Running和Slave_SQL_Running显示为Yes即为成功
四、测试主从复制
MySQL主库中执行
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主从复制的实现的文章就介绍到这了,更多相关Docker部署MySQL主从复制内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
docker /var/lib/docker/aufs/mnt 目录清理方法
在本篇文章里小编给各位整理的是关于docker /var/lib/docker/aufs/mnt 目录清理方法,有需要的朋友们可以参考下。2020-03-03关于docker清理Overlay2占用磁盘空间的问题(亲测有效)
使用Docker过程中,长时间运行服务容器,导致不能进行上传文件等操作,今天通过本文给大家详细介绍下docker清理Overlay2占用磁盘空间的相关知识,感兴趣的朋友一起看看吧2022-03-03
最新评论