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

来源:脚本之家  责任编辑:小易  
目录
一.CentOS7.9安装Docker20二.部署MySQL集群(一主二从)三.结果

一.CentOS7.9安装Docker20

1.安装yum-utils工具

yum install -y yum-utils

2.设置docker的依赖源

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

yum -y install docker-ce

4.查看安装的版本

docker -v
docker version

image.png

5. 查看配套设置的版本

yum list installed | grep docker

image.png

6.拉取MySQL8镜像

docker pull mysql:8

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

查看docker镜像

docker images

image.png

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

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

# 创建主服务的配置目录和数据目录
mkdir -p /usr/local/mysqlData/master/cnf
mkdir -p /usr/local/mysqlData/master/data

# 创建1号从服务器的配置目录和数据目录
mkdir -p /usr/local/mysqlData/slave/cnf
mkdir -p /usr/local/mysqlData/slave/data

# 创建2号从服务器的配置目录和数据目录
mkdir -p /usr/local/mysqlData/slave2/cnf
mkdir -p /usr/local/mysqlData/slave2/data

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

image.png

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

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

配置文件如下

[mysqld]
## 设置server_id,注意要唯一
server-id=1
## 开启binlog
log-bin=mysql-bin
## binlog缓存
binlog_cache_size=1M
## binlog格式(mixed、statement、row,默认格式是statement)
binlog_format=mixed
##设置字符编码为utf8mb4
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
init_connect='SET NAMES utf8mb4'
[client]
default-character-set = utf8mb4
[mysql]
default-character-set = utf8mb4

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

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

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

[mysqld]
## 设置server_id,注意要唯一
server-id=2
## 开启binlog
log-bin=mysql-slave-bin
## relay_log配置中继日志
relay_log=edu-mysql-relay-bin
## 如果需要同步函数或者存储过程
log_bin_trust_function_creators=true
## binlog缓存
binlog_cache_size=1M
## binlog格式(mixed、statement、row,默认格式是statement)
binlog_format=mixed
##设置字符编码为utf8mb4
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
init_connect='SET NAMES utf8mb4'
slave_skip_errors=1062
[client]
default-character-set = utf8mb4
[mysql]
default-character-set = utf8mb4

4.创建主从MySQL镜像

# 主服务器实例化
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 

# 1号从服务器实例化
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 

# 2号从服务器实例化
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.查看已创建的实例

docker ps -a

image.png

6.创建mysql连接用户

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

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

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

# MySQL的连接信息
SHOW MASTER STATUS;

#新开连接 获取master实例的在docker的地址
docker inspect --format='{{.NetworkSettings.IPAddress}}' master

image.png

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

# 配置连接的参数
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;
# 启动同步
start slave;
# 查看是否成功
show slave status\G

# 两项都为Yes时代表成功。
# Slave_IO_Running: Yes
# Slave_SQL_Running: Yes

# 失败需要使用停止连接后检查其他账号密码,地址,pos等参数

# 停止连接,如果一次成功无需使用该命令
stop slave;

image.png

三.结果

主服务器执行命令

SHOW SLAVE HOSTS;

image.png

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

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

您可能感兴趣的文章:docker-compose基于MySQL8部署项目的实现Docker 部署 Mysql8.0的方法示例详解如何使用Docker部署Django+MySQL8开发环境Docker安装MySQL8.0的实现方法Docker版的MySQL5.7升级到MySQL8.0.13,数据迁移Docker安装MySQL8的方法步骤

  • 本文相关:
  • docker部署mysql一主一从的操作方法
  • docker运行springboot项目的实现
  • 创建的docker容器时间显示错误/date错误/时区错误
  • docker批量容器编排的实现
  • docker部署spring-boot项目的示例代码
  • docker mongodb 4.2.1 安装并收集springboot日志的步骤详解
  • docker容器化部署尝试——多容器通信(node+mongodb+nginx)
  • 使用dockerfile构建java web环境
  • docker容器中文乱码(修改docker容器编码格式)的解决方案
  • 最新idea快速实现docker镜像部署运行的过程详解
  • 如何利用docker快速构建MySQL主从复制环境
  • 在Docker中使用MySQL的教程
  • docker mysql镜像怎么启动mysql 服务
  • 如何连接docker的mysql镜像
  • docker 里面运行 mysql 与单独安装 mysql 资源占用差距大吗
  • 网站首页网页制作脚本下载服务器操作系统网站运营平面设计媒体动画电脑基础硬件教程网络安全dockerhyper-vvmwarevirtualboxxenserverkvmqemuopenvzxencloudstackopenstack云计算技术云其它首页服务器云和虚拟化dockerdocker-compose基于mysql8部署项目的实现docker 部署 mysql8.0的方法示例详解如何使用docker部署django+mysql8开发环境docker安装mysql8.0的实现方法docker版的mysql5.7升级到mysql8.0.13,数据迁移docker安装mysql8的方法步骤docker部署mysql一主一从的操作方法docker运行springboot项目的实现创建的docker容器时间显示错误/date错误/时区错误docker批量容器编排的实现docker部署spring-boot项目的示例代码docker mongodb 4.2.1 安装并收集springboot日志的步骤详解docker容器化部署尝试——多容器通信(node+mongodb+nginx)使用dockerfile构建java web环境docker容器中文乱码(修改docker容器编码格式)的解决方案最新idea快速实现docker镜像部署运行的过程详解docker获取镜像报错docker: errodocker 给运行中的容器设置端口映docker.service启动失败:unit ndocker 清理命令集锦浅谈docker-compose网络设置之neubuntu14.04+docker的安装及使用docker容器访问宿主机网络的方法docker容器如何优雅的终止详解详解如何使用docker部署一个web项ubuntu vps安装docker报错:canndocker 部署go的两种基础镜像的实现docker容器监控及日志管理实现过程解析docker 部署单机版 pulsar 和集群架构 reidea连接远程服务器docker部署spring boo使用dockerfile构建java web环境docker容器间通讯直接路由方式实现网络通docker下利用jenkins和docker实现持续交付使用 docker-compose 运行 mysql的方法mac为docker和kubectl添加自动补全命令的dockerfile指令详解
    免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved