服务器之家:专注于服务器技术及软件下载分享
分类导航

云服务器|WEB服务器|FTP服务器|邮件服务器|虚拟主机|服务器安全|DNS服务器|服务器知识|Nginx|IIS|Tomcat|

服务器之家 - 服务器技术 - 服务器知识 - Docker部署MySQL8集群(一主二从)的实现步骤

Docker部署MySQL8集群(一主二从)的实现步骤

2021-08-07 23:55张红尘 服务器知识

本文主要介绍了Docker部署MySQL8集群,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

一.CentOS7.9安装Docker20

1.安装yum-utils工具

  1. yum install -y yum-utils

2.设置docker的依赖源

  1. yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

注释:CentOS直接使用yum命令安装的Docker版本为1.13.1属于旧版docker的最后一个版本,所以需要配置一个repo,才能安装新版的Docker-CE(社区版)。Docker-EE(企业版)需收费读者自行了解即可,这里使用CE社区版

3.安装docker

  1. yum -y install docker-ce

4.查看安装的版本

  1. docker -v
  2. docker version

Docker部署MySQL8集群(一主二从)的实现步骤

5. 查看配套设置的版本

  1. yum list installed | grep docker

Docker部署MySQL8集群(一主二从)的实现步骤

6.拉取MySQL8镜像

  1. docker pull mysql:8

注解:mysql:5.7代表mysql版本为5.7

查看docker镜像

  1. docker images

Docker部署MySQL8集群(一主二从)的实现步骤

二.部署MySQL集群(一主二从)

1.创建主从MySQL的配置及数据文件的存储目录

  1. # 创建主服务的配置目录和数据目录
  2. mkdir -p /usr/local/mysqlData/master/cnf
  3. mkdir -p /usr/local/mysqlData/master/data
  4.  
  5. # 创建1号从服务器的配置目录和数据目录
  6. mkdir -p /usr/local/mysqlData/slave/cnf
  7. mkdir -p /usr/local/mysqlData/slave/data
  8.  
  9. # 创建2号从服务器的配置目录和数据目录
  10. mkdir -p /usr/local/mysqlData/slave2/cnf
  11. mkdir -p /usr/local/mysqlData/slave2/data

创建两个从服务器的配置是因为MySQL配置的server-id不能重复

Docker部署MySQL8集群(一主二从)的实现步骤

2.配置主服务器的配置文件

  1. vim /usr/local/mysqlData/master/cnf/mysql.cnf

配置文件如下

  1. [mysqld]
  2. ## 设置server_id,注意要唯一
  3. server-id=1
  4. ## 开启binlog
  5. log-bin=mysql-bin
  6. ## binlog缓存
  7. binlog_cache_size=1M
  8. ## binlog格式(mixed、statement、row,默认格式是statement)
  9. binlog_format=mixed
  10. ##设置字符编码为utf8mb4
  11. character-set-server = utf8mb4
  12. collation-server = utf8mb4_unicode_ci
  13. init_connect='SET NAMES utf8mb4'
  14. [client]
  15. default-character-set = utf8mb4
  16. [mysql]
  17. default-character-set = utf8mb4

3.配置从服务器的配置文件

  1. # 1号从服务器
  2. vim /usr/local/mysqlData/slave/cnf/mysql.cnf
  3. # 2号从服务器
  4. vim /usr/local/mysqlData/slave2/cnf/mysql.cnf

配置文件如下(1号的server-id设置为2,2号的server-id设置为3,不重复即可)

  1. [mysqld]
  2. ## 设置server_id,注意要唯一
  3. server-id=2
  4. ## 开启binlog
  5. log-bin=mysql-slave-bin
  6. ## relay_log配置中继日志
  7. relay_log=edu-mysql-relay-bin
  8. ## 如果需要同步函数或者存储过程
  9. log_bin_trust_function_creators=true
  10. ## binlog缓存
  11. binlog_cache_size=1M
  12. ## binlog格式(mixed、statement、row,默认格式是statement)
  13. binlog_format=mixed
  14. ##设置字符编码为utf8mb4
  15. character-set-server = utf8mb4
  16. collation-server = utf8mb4_unicode_ci
  17. init_connect='SET NAMES utf8mb4'
  18. slave_skip_errors=1062
  19. [client]
  20. default-character-set = utf8mb4
  21. [mysql]
  22. default-character-set = utf8mb4

4.创建主从MySQL镜像

  1. # 主服务器实例化
  2. docker run -itd -p 3307:3306 --name master -v /usr/local/mysqlData/master/cnf:/etc/mysql/conf.d -v /usr/local/mysqlData/master/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 mysql:8
  3.  
  4. # 1号从服务器实例化
  5. docker run -itd -p 3308:3306 --name slaver -v /usr/local/mysqlData/slave/cnf:/etc/mysql/conf.d -v /usr/local/mysqlData/slave/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 mysql:8
  6.  
  7. # 2号从服务器实例化
  8. docker run -itd -p 3309:3306 --name slaver2 -v /usr/local/mysqlData/slave2/cnf:/etc/mysql/conf.d -v /usr/local/mysqlData/slave2/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 mysql:8

参数解释

-p 指定容器暴露的端口,宿主机(物理机)端口: docker实例端口
-p 3307:3306 把物理机的3307端口给实例的端口3306端口进行映射

-v 给容器挂载存储卷,挂载到容器的某个目录
-v /usr/local/mysqlData/master/cnf:/etc/mysql/conf.d 把刚创建的配置文件夹映射成实例的/etc/mysql/conf.d
-v /usr/local/mysqlData/master/data:/var/lib/mysql 数据文件夹的映射

-e 指定环境变量,容器中可以使用该环境变量
-e MYSQL_ROOT_PASSWORD=123456 设置MySQL的root账号密码为123456

5.查看已创建的实例

  1. docker ps -a

Docker部署MySQL8集群(一主二从)的实现步骤

6.创建mysql连接用户

  1. # 创建用户 reader设置密码为reader
  2. CREATE USER reader IDENTIFIED BY 'reader';
  3. # 给予reader同步权限
  4. GRANT REPLICATION SLAVE ON *.* to 'reader'@'%';
  5. FLUSH PRIVILEGES;

注解:其余的用户,远程连接的自行设置

7.获取主服务器的连接信息

  1. # MySQL的连接信息
  2. SHOW MASTER STATUS;
  3.  
  4. #新开连接 获取master实例的在docker的地址
  5. docker inspect --format='{{.NetworkSettings.IPAddress}}' master

Docker部署MySQL8集群(一主二从)的实现步骤

从服务器连接主服务器(两台从服务器均是以下操作)

  1. # 配置连接的参数
  2. change master to master_host='172.17.0.2',master_user='reader',master_password='reader',master_log_file='mysql-bin.000003',master_log_pos=2259;
  3. # 启动同步
  4. start slave;
  5. # 查看是否成功
  6. show slave status\G
  7.  
  8. # 两项都为Yes时代表成功。
  9. # Slave_IO_Running: Yes
  10. # Slave_SQL_Running: Yes
  11.  
  12. # 失败需要使用停止连接后检查其他账号密码,地址,pos等参数
  13.  
  14. # 停止连接,如果一次成功无需使用该命令
  15. stop slave;

Docker部署MySQL8集群(一主二从)的实现步骤

三.结果

主服务器执行命令

  1. SHOW SLAVE HOSTS;

Docker部署MySQL8集群(一主二从)的实现步骤

能从主服务器查询到两台从服务器的ID以及端口。完成MySQL部署。

到此这篇关于Docker部署MySQL8集群(一主二从)的实现步骤的文章就介绍到这了,更多相关Docker部署MySQL8集群内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

原文链接:https://blog.csdn.net/qq_37181910/article/details/118905118

延伸 · 阅读

精彩推荐