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镜像拉取过程和远程代理配置过程

    docker镜像拉取过程和远程代理配置过程

    Docker镜像拉取过程涉及客户端、守护进程、注册表和网络通信,客户端发送请求,守护进程处理并从注册表下载镜像层,配置包括Docker守护进程的代理、TLS设置和防火墙规则,确保网络策略和安全措施到位,以优化镜像拉取和保护传输过程
    2024-11-11
  • docker 移除掉运行不正常的container操作

    docker 移除掉运行不正常的container操作

    这篇文章主要介绍了docker 移除掉运行不正常的container操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-03-03
  • Docker创建MySQL的讲解

    Docker创建MySQL的讲解

    今天小编就为大家分享一篇关于Docker创建MySQL的讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-01-01
  • 解决docker登录私仓失败cannot validate certificate for 192.168.76.131 because it doesn‘t contain any IP SANs

    解决docker登录私仓失败cannot validate certificate for

    文章主要讲述了如何搭建和配置Harbor镜像仓库,并详细描述了解决在登录Harbor私仓时遇到的问题的方法,包括重启Docker服务、解决登录报错、重新配置认证等步骤,最后成功拉取镜像
    2026-04-04
  • Docker中镜像构建文件Dockerfile与相关命令的详细介绍

    Docker中镜像构建文件Dockerfile与相关命令的详细介绍

    这篇文章主要介绍了Docker中镜像构建文件Dockerfile与相关命令的相关资料,文中介绍的很详细,相信对大家具有一定的参考价值,有需要的朋友们下面来一起看看吧。
    2017-02-02
  • Docker部署Mysql8.0.20并配置主从复制的实现步骤

    Docker部署Mysql8.0.20并配置主从复制的实现步骤

    主从复制是指数据可以从一个MySQL数据库服务器主节点复制到一个或多个从节点,本文主要介绍了Docker部署Mysql8.0.20并配置主从复制的实现步骤,具有一定的参考价值,感兴趣的可以了解一下
    2024-06-06
  • Docker完整卸载的两种方法详细教程

    Docker完整卸载的两种方法详细教程

    在使用Docker的过程中,有时我们需要卸载Docker以清理系统环境或进行重新安装,下面这篇文章主要给大家介绍了关于Docker完整卸载的两种方法,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-07-07
  • Docker核心知识点和常用指令(命令)速通

    Docker核心知识点和常用指令(命令)速通

    Docker是一种容器化平台,它通过容器技术将所有依赖项打包到一个镜像中,再通过镜像运行一个独立并且可移植的容器,这篇文章主要介绍了Docker核心知识点和常用指令(命令)的相关资料,需要的朋友可以参考下
    2026-04-04
  • docker容器跟宿主机互相拷贝文件

    docker容器跟宿主机互相拷贝文件

    本文介绍了如何使用 docker cp 命令,在宿主机与 Docker 容器之间快速拷贝文件,包括从宿主机复制到容器及从容器复制到宿主机的具体操作方法
    2025-10-10
  • dockerfile echo指定文件多行文本的方法实现

    dockerfile echo指定文件多行文本的方法实现

    这篇文章主要介绍了dockerfile echo指定文件多行文本的方法实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-09-09

最新评论