Docker中怎么部署MySQL8集群

这篇文章将为大家详细讲解有关Docker中怎么部署MySQL8集群,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

一.CentOS7.9安装Docker20

1.安装yum-utils工具

yuminstall-yyum-utils

2.设置docker的依赖源

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

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

3.安装docker

yum-yinstalldocker-ce

4.查看安装的版本

docker-v
dockerversion

Docker中怎么部署MySQL8集群

5. 查看配套设置的版本

yumlistinstalled|grepdocker

Docker中怎么部署MySQL8集群

6.拉取MySQL8镜像

dockerpullmysql:8

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

查看docker镜像

dockerimages

Docker中怎么部署MySQL8集群

二.部署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不能重复

Docker中怎么部署MySQL8集群

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='SETNAMESutf8mb4'
[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='SETNAMESutf8mb4'
slave_skip_errors=1062
[client]
default-character-set=utf8mb4
[mysql]
default-character-set=utf8mb4

4.创建主从MySQL镜像

#主服务器实例化
dockerrun-itd-p3307:3306--namemaster-v/usr/local/mysqlData/master/cnf:/etc/mysql/conf.d-v/usr/local/mysqlData/master/data:/var/lib/mysql-eMYSQL_ROOT_PASSWORD=123456mysql:8

#1号从服务器实例化
dockerrun-itd-p3308:3306--nameslaver-v/usr/local/mysqlData/slave/cnf:/etc/mysql/conf.d-v/usr/local/mysqlData/slave/data:/var/lib/mysql-eMYSQL_ROOT_PASSWORD=123456mysql:8

#2号从服务器实例化
dockerrun-itd-p3309:3306--nameslaver2-v/usr/local/mysqlData/slave2/cnf:/etc/mysql/conf.d-v/usr/local/mysqlData/slave2/data:/var/lib/mysql-eMYSQL_ROOT_PASSWORD=123456mysql: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.查看已创建的实例

dockerps-a

Docker中怎么部署MySQL8集群

6.创建mysql连接用户

#创建用户reader设置密码为reader
CREATEUSERreaderIDENTIFIEDBY'reader';
#给予reader同步权限
GRANTREPLICATIONSLAVEON*.*to'reader'@'%';
FLUSHPRIVILEGES;

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

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

#MySQL的连接信息
SHOWMASTERSTATUS;

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

Docker中怎么部署MySQL8集群

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

#配置连接的参数
changemastertomaster_host='172.17.0.2',master_user='reader',master_password='reader',master_log_file='mysql-bin.000003',master_log_pos=2259;
#启动同步
startslave;
#查看是否成功
showslavestatus\G

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

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

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

Docker中怎么部署MySQL8集群

三.结果

主服务器执行命令

SHOWSLAVEHOSTS;

Docker中怎么部署MySQL8集群

关于Docker中怎么部署MySQL8集群就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

发布于 2021-07-29 22:00:21
收藏
分享
海报
0 条评论
202
上一篇:Java中怎么实现动态日历效果 下一篇:fastjson中出现内存泄漏如何解决
目录

    0 条评论

    本站已关闭游客评论,请登录或者注册后再评论吧~

    忘记密码?

    图形验证码