Docker部署MySQL主从复制的实现

 更新时间:2023年10月18日 15:18:48   作者:山海一念  
本文主要介绍了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私有仓库Registry的搭建验证

    详解Docker私有仓库Registry的搭建验证

    这篇文章主要介绍了详解Docker私有仓库Registry的搭建验证,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-05-05
  • Docker的四种网络模式

    Docker的四种网络模式

    这篇文章介绍了Docker的四种网络模式,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-04-04
  • 删除docker中没有被使用的数据卷volume

    删除docker中没有被使用的数据卷volume

    发现docker占用宿主机的磁盘空间很大,这个时候如何来释放这些数据卷占用的空间呢,通过执行相关命令即可顺利解决,下面小编给大家介绍下删除docker中没有被使用的数据卷volume,感兴趣的朋友跟随小编一起看看吧
    2023-01-01
  • docker<容器数据卷-v>对容器内数据持久化详解(备份)

    docker<容器数据卷-v>对容器内数据持久化详解(备份)

    容器的数据持久化主要是指宿主机与容器,以及容器与容器之间进行数据交互,下面这篇文章主要给大家介绍了关于docker<容器数据卷-v>对容器内数据持久化的相关资料,需要的朋友可以参考下
    2023-03-03
  • Docker自定义网络详解

    Docker自定义网络详解

    本文主要跟大家讲解了Docker中的自定义网络的相关知识,包含网关、子网地址等等,非常的详实,有需要的小伙伴可以参考下
    2022-11-11
  • Docker搭建Nginx图片服务器的方法

    Docker搭建Nginx图片服务器的方法

    这篇文章主要介绍了Docker搭建Nginx图片服务器的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-03-03
  • docker-compose部署MySQL适用于所有版本

    docker-compose部署MySQL适用于所有版本

    本文主要介绍了docker-compose部署MySQL,需要准备一个docker-compose.yml文件,通过运行docker-compose up命令启动容器,具有一定的参考价值,感兴趣的可以了解一下
    2023-11-11
  • 在docker中配置Oracle11g的过程

    在docker中配置Oracle11g的过程

    这篇文章主要介绍了在docker中配置Oracle11g ,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-04-04
  • 详解Docker修改容器端口映射的方法

    详解Docker修改容器端口映射的方法

    这篇文章主要介绍了详解Docker修改容器端口映射的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2006-11-11
  • 详解Docker 容器使用 cgroups 限制资源使用

    详解Docker 容器使用 cgroups 限制资源使用

    本篇文章主要介绍了Docker 容器使用 cgroups 限制资源使用,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-01-01

最新评论