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

 更新时间:2024年06月04日 11:43:26   作者:C3Stones  
主从复制是指数据可以从一个MySQL数据库服务器主节点复制到一个或多个从节点,本文主要介绍了Docker部署Mysql8.0.20并配置主从复制的实现步骤,具有一定的参考价值,感兴趣的可以了解一下

1. Linux安装Mysql8.0.20并配置主从复制(一主一从,双主双从)

Linux安装Mysql8.0.20并配置主从复制(一主一从,双主双从)

2. 前提准备

# 创建主从数据库文件夹
mkdir -p /usr/local/mysql/master1/conf
mkdir -p /usr/local/mysql/master1/data
mkdir -p /usr/local/mysql/slave1/conf
mkdir -p /usr/local/mysql/slave1/data

# 初始化主数据库配置文件
cd /usr/local/mysql/master1/conf
touch my.cnf
vi my.cnf

# 粘贴以下内容
[mysqld]
datadir = /usr/local/mysql/master1/data
character-set-server = utf8
lower-case-table-names = 1

# 主从复制-主机配置
# 主服务器唯一ID
server-id = 1
# 启用二进制日志
log-bin=mysql-bin
# 设置logbin格式
binlog_format = STATEMENT

# 初始化从数据库配置文件
cd /usr/local/mysql/slave1/conf
touch my.cnf
vi my.cnf

# 粘贴以下内容
[mysqld]
datadir = /usr/local/mysql/slave1/data
character-set-server = utf8
lower-case-table-names = 1

# 主从复制-从机配置
# 从服务器唯一ID
server-id = 2
# 启用中继日志
relay-log = mysql-relay

# 文件夹授权
chmod -R 777 /usr/local/mysql

3. Docker部署Mysql8.0.20

# 拉取镜像
docker pull mysql:8.0.20

# 查看镜像
docker images

# 构建主数据库容器
docker run --name=mysql-master-1 --privileged=true -p 3306:3306 -v /usr/local/mysql/master1/data/:/var/lib/mysql -v /usr/local/mysql/master1/conf/my.cnf:/etc/mysql/my.cnf -v /usr/local/mysql/master1/mysql-files/:/var/lib/mysql-files/ -e MYSQL_ROOT_PASSWORD=3edc#EDC -d mysql:8.0.20 --lower_case_table_names=1

# 查询是否启动成功
docker ps

# 验证是否可以登录
# 交互式进入容器
docker exec -it mysql-master-1 /bin/bash

# 登录(使用构建时指定的密码:3edc#EDC)
mysql -uroot -p

# 退出
quit
exit

# 构建从数据库容器
docker run --name=mysql-slave-1 --privileged=true -p 3307:3306 -v /usr/local/mysql/slave1/data/:/var/lib/mysql -v /usr/local/mysql/slave1/conf/my.cnf:/etc/mysql/my.cnf -v /usr/local/mysql/slave1/mysql-files/:/var/lib/mysql-files/ -e  MYSQL_ROOT_PASSWORD=3edc#EDC -d mysql:8.0.20 --lower_case_table_names=1

# 查询是否启动成功
docker ps

# 验证是否可以登录
# 交互式进入容器
docker exec -it mysql-slave-1 /bin/bash

# 登录(使用构建时指定的密码:3edc#EDC)
mysql -uroot -p

# 退出
quit
exit

# 关闭防火墙
# 查看防火墙状态
systemctl status firewalld

# 关闭防火墙
systemctl stop firewalld

4. 配置主从复制

# 进入主数据库
mysql -uroot -p -h192.168.10.234 -P3306

- 主数据库创建用户slave并授权
# 创建用户
create user 'slave'@'%' identified with mysql_native_password by 'password';

# 授权
grant replication slave on *.* to 'slave'@'%';

# 刷新权限
flush privileges;

# 查询server_id值
show variables like 'server_id';

# 也可临时(重启后失效)指定server_id的值(主从数据库的server_id不能相同)
set global server_id = 1;

# 查询Master状态,并记录File和Position的值
show master status;

# 注意:执行完此步骤后退出主数据库,防止再次操作导致File和Position的值发生变化

# 验证slave用户是否可用
mysql -uslave -p -h192.168.10.234 -P3306

# 进入从数据库
mysql -uroot -p -h192.168.10.234 -P3307

# 查询server_id值
show variables like 'server_id';

# 也可临时(重启后失效)指定server_id的值(主从数据库的server_id不能相同)
set global server_id = 2;

# 若之前设置过同步,请先重置
stop slave;
reset slave;

# 设置主数据库
change master to master_host='192.168.10.234',master_port=3306,master_user='slave',master_password='password',master_log_file='mysql-bin.000002',master_log_pos=156;

# 开始同步
start slave;

# 若出现错误,则停止同步,重置后再次启动
stop slave;
reset slave;
start slave;

# 查询Slave状态
show slave status\G

# 查看是否配置成功
# 查看参数 Slave_IO_Running 和 Slave_SQL_Running 是否都为yes,则证明配置成功。若为no,则需要查看对应的 Last_IO_Error 或 Last_SQL_Error 的异常值。

5. 测试

通过工具连接主从数据库或者在服务器连接。

# 在主数据库创建数据库test
create database test;

# 从数据库查看
show databases;

# 在主数据库创建表
use test;
create table t_user(id int, name varchar(20));

# 插入数据
insert into t_user values(1, 'C3Stones');

# 在从数据库查看
use test;
select * from t_user;

# 其他删改查操作请自行测试

到此这篇关于Docker部署Mysql8.0.20并配置主从复制的实现步骤的文章就介绍到这了,更多相关Docker部署Mysql主从复制内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • docker部署管理工具portainer-ce的实现

    docker部署管理工具portainer-ce的实现

    Portainer是一个可视化的容器镜像的图形管理工具,利用Portainer可以轻松构建,管理和维护Docker环境,本文主要介绍了docker部署管理工具portainer-ce的实现,感兴趣的可以了解一下
    2023-08-08
  • 用Docker swarm快速部署Nebula Graph集群的教程

    用Docker swarm快速部署Nebula Graph集群的教程

    这篇文章主要介绍了用Docker swarm快速部署Nebula Graph集群的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-09-09
  • Docker安装(Ubuntu 64bit)的方法步骤

    Docker安装(Ubuntu 64bit)的方法步骤

    本篇文章主要介绍了 Docker安装 Ubuntu 64bit的方法步骤,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-04-04
  • 使用portainer连接远程docker的教程

    使用portainer连接远程docker的教程

    Portainer是一个轻量级的docker环境管理UI,可以用来管理docker宿主机和docker swarm集群,这篇文章主要介绍了使用portainer连接远程docker的方法,需要的朋友可以参考下
    2020-03-03
  • Docker Compose容器编排深度解析与实战小结

    Docker Compose容器编排深度解析与实战小结

    Docker Compose 是 Docker 官方推出的开源项目,用于定义和运行多个 Docker 容器的应用工具,简化了多容器应用的部署和管理,本文介绍Docker Compose:容器编排深度解析与实战指南,感兴趣的朋友一起看看吧
    2025-12-12
  • k3s 通过docker部署 Kubernetes的方法步骤

    k3s 通过docker部署 Kubernetes的方法步骤

    本文主要介绍了k3s 通过docker部署 Kubernetes的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-11-11
  • 详解Dockerfile 中的 COPY 与 ADD 命令

    详解Dockerfile 中的 COPY 与 ADD 命令

    Dockerfile 中提供了两个非常相似的命令 COPY 和 ADD,本文尝试解释这两个命令的基本功能,以及其异同点,然后总结其各自适合的应用场景。感兴趣的朋友跟随小编一起看看吧
    2018-09-09
  • Docker容器安装指定jdk方式

    Docker容器安装指定jdk方式

    这篇文章主要介绍了Docker容器安装指定jdk方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-01-01
  • docker-compose.yaml设置中国时区方式

    docker-compose.yaml设置中国时区方式

    这篇文章主要介绍了docker-compose.yaml设置中国时区方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-11-11
  • Docker从默认网络到自定义网络实现方式

    Docker从默认网络到自定义网络实现方式

    本文介绍了Docker默认网络机制的局限性,特别是IP地址动态变动导致的问题,通过创建自定义网络,可以有效解决这一问题,实现容器间通过容器名进行通信,文章详细讲解了如何创建和管理自定义网络,包括创建自定义网络、将容器加入网络、验证容器名通信等功能
    2025-12-12

最新评论