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

目录
  • 一.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

5. 查看配套设置的版本

yum list installed | grep docker

6.拉取MySQL8镜像

docker pull mysql:8

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

查看docker镜像

docker images

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

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

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

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

# 配置连接的参数
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;

三.结果

主服务器执行命令

SHOW SLAVE HOSTS;

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

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

(0)

相关推荐

  • Docker 部署 Mysql8.0的方法示例

    1. 参照官网,安装docker 2.拉取mysql镜像 (默认拉取最新的镜像)8.0.11 docker pull mysql 3.在宿主机创建持久化 mysql data 及mysql.cnf mkdir /usr/local/mysqlData/test/cnf mkdir /usr/local/mysqlData/test/data vi /usr/loal/mysqlData/test/cnf/mysql.cnf 设置本地文件共享: Docker -> Preferences... -

  • Docker版的MySQL5.7升级到MySQL8.0.13,数据迁移

    1.备份旧的MySQL5.7的数据 记得首先要备份旧的数据,防止升级失败导致数据丢失.备份的方式有两种,一种是在宿主机直接执行导出命令,另外一种是先进入Docker环境下进行操作.主要的导出命令如下: #方式一,直接在宿主机器进行数据备份 # 0df568 是docker的id ;-uroot -p123456 是用户名和密码;dbA dbB是要备份的数据,--databases 后面可以接多个数据库名,导出的sql到/root/all-databases3306.sql docker exec

  • Docker安装MySQL8的方法步骤

    一.下载镜像 docker Hub官网URL:https://hub.docker.com/_/mysql/ 下载最新版本:docker pull mysql 下载指定版本:docker pull mysql:verison(8.0.11,8.0,8) 二.启动镜像 复制代码 代码如下: docker run  -d --name mysql -v /data/datadir:/var/lib/mysql -v /etc/mysql/my.cnf:/etc/mysql/my.cnf -p 330

  • 详解如何使用Docker部署Django+MySQL8开发环境

    前一段时间重装了系统,然后我还没有备份,导致电脑里的开发环境全都没有了. 一想到又要装 Python 环境,还要装数据库,然后安装过程中还可能报一堆错就头疼. 最近正在学习 Docker,这不正好解决了我当前的痛点了吗?而且,不止这次重装系统,以后再重装都不怕了,只要拿着 Dockerfile 和 docker-compose 文件,不管到什么环境,一条命令轻松跑起来. 之前部署 Python 开发环境,都是用的 virtualenv,或者是 Pipenv.这次使用 Docker 之后,对比下来

  • Docker安装MySQL8.0的实现方法

    环境:MacOS_Cetalina_10.15.1.Mysql8.0.18.Docker_2.0.0.3 1.docker仓库搜索mysql docker search mysql 2.docker仓库拉取mysql8.0 docker pull mysql:8.0 备注: docker pull mysql //默认拉取最新版本 3.查看本地仓库镜像是否下载成功 docker images mysql:8.0 4.安装运行mysql8.0容器 docker run -p 3307:3306 -

  • docker-compose基于MySQL8部署项目的实现

    1.首先按照以下的路径创建相应的文件夹 /usr/local/docker/mysql 2.然后在该目录下创建docker-compose.yml文件并且在文件中加入以下的配置 version: '3.1' services: db: image: mysql restart: always environment: MYSQL_ROOT_PASSWORD: 123456 command: --default-authentication-plugin=mysql_native_password

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

    目录 一.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部署Tomcat集群、 Nginx负载均衡的问题小结

    写在前面 看完Dokcer相关的书籍,正好有个项目要这样搞,所以自己练习一下. 当作一百世一样.这里的道理很明白:我思故我在,既然我存在,就不能装作不存在.无论如何,我要为自己负起责任.--王小波<三十而立> 结构图: 这里仅作为一种学习,一般这种负载的话,Nginx是放到主机侧的, JavaWeb(Tomcat)应用放到容器里. 效果 新建文件夹. D=uag;mkdir $D;cd $D;mkdir uag_nginx uag_tomcat8; ls uag_nginx uag_tomca

  • 使用docker部署hadoop集群的详细教程

    最近要在公司里搭建一个hadoop测试集群,于是采用docker来快速部署hadoop集群. 0. 写在前面 网上也已经有很多教程了,但是其中都有不少坑,在此记录一下自己安装的过程. 目标:使用docker搭建一个一主两从三台机器的hadoop2.7.7版本的集群 准备: 首先要有一台内存8G以上的centos7机器,我用的是阿里云主机. 其次将jdk和hadoop包上传到服务器中. 我安装的是hadoop2.7.7.包给大家准备好了,链接:https://pan.baidu.com/s/15n

  • Docker部署Mysql集群的实现

    单节点数据库的弊病 大型互联网程序用户群体庞大,所以架构必须要特殊设计 单节点的数据库无法满足性能上的要求 单节点的数据库没有冗余设计,无法满足高可用 单节点MySQL的性能瓶领颈 2016年春节微信红包巨大业务量,数据库承受巨大负载 常见MySQL集群方案 mysql 集群方案介绍,建议使用pxc,因为弱一致性会有问题,比如说a节点数据库显示我购买成功,b 节点数据库显示没有成功,这就麻烦了,pxc 方案是在全部节点都写入成功之后才会告诉你成功,是可读可写双向同步的,但是replication

  • Docker下Redis集群(主从+哨兵)安装配置的实现步骤

    目录 一.所有机器拉去镜像 二.主从集群搭建 2.1.redis.cong 文件 2.2.创建本地映射文件夹,并将 redis.conf 放到 /usr/local/redis/conf 文件夹内 2.3.启动redis 2.4.校验redis主从集群安装是否成功 三.开启哨兵模式 3.1.sentinel.conf 配置文件 3.2.创建本地映射文件夹,并将 sentinel.conf 放到 /usr/local/redis-sentinel/conf 文件夹内 3.3.启动 redis-se

  • docker部署rabbitmq集群的实现方法

    拉取rabbitmq management镜像 docker pull rabbitmq:3.7-rc-management 若不使用Rabbitmq的management功能,可以拉取镜像:rabbitmq:3.7-rc 参考: https://hub.docker.com/_/rabbitmq/ 创建网络 创建rabbitmq私有网络 # docker network create rabbitmqnet # docker network ls NETWORK ID NAME DRIVER

  • 聊聊docker 单机部署redis集群的问题

    目录 docker部署redis集群 1.创建redis网卡 2.创建redis配置 使用cluster集群配置 3.创建redis集群 测试 docker 部署redis集群 1.创建redis网卡 docker network create redis --subnet 172.38.0.0/16 查看网卡信息 docker network ls docker network inspect redis 2.创建redis配置 #使用脚本创建6个redis配置 for port in $(s

  • 使用docker快速部署Elasticsearch集群的方法

    本文将使用Docker容器(使用docker-compose编排)快速部署Elasticsearch 集群,可用于开发环境(单机多实例)或生产环境部署. 注意,6.x版本已经不能通过 -Epath.config 参数去指定配置文件的加载位置,文档说明: For the archive distributions, the config directory location defaults to $ES_HOME/config. The location of the >config direc

  • Vmware部署Nginx+KeepAlived集群双主架构的问题及解决方法

    前言 用nginx做负载均衡,作为架构的最前端或中间层,随着日益增长的访问量,需要给负载均衡做高可用架构,利用keepalived解决单点风险,一旦 nginx宕机能快速切换到备份服务器. Vmware网络配置可能遇到的问题解决方法 启动VMware DHCP Service和VMware NAT Service两个服务 在网络适配器开启网络共享,允许其他网络打勾保存,重启虚拟机 安装 节点部署 节点 地址 服务 centos7_1 192.168.211.130 Keepalived+Ngin

  • docker实现redis集群搭建的方法步骤

    目录 一.创建redis docker基础镜像 二.制作redis节点镜像 三.运行redis集群 引用: 摘要:接触docker以来,似乎养成了一种习惯,安装什么应用软件都想往docker方向做,今天就想来尝试下使用docker搭建redis集群. 首先,我们需要理论知识:Redis Cluster是Redis的分布式解决方案,它解决了redis单机中心化的问题,分布式数据库--首要解决把整个数据集按照分区规则映射到多个节点的问题. 这边就需要知道分区规则--哈希分区规则.Redis Clus

随机推荐