hincky的主页 hincky的主页
  • 学习笔记

    • Vue笔记
    • Vuepress
    • nginx
  • 语言类

    • java
    • go
    • python
    • 设计模式
  • 框架类

    • Spring
    • Spring Security
    • Mybatis
  • 容器技术

    • docker
    • k8s
    • helm
    • prometheus
    • grafana
    • jenkins
  • 命令集合

    • linux命令
    • docker命令
    • git命令
    • vim命令
    • k8s命令
  • 数据库

    • sql
    • mysql
  • 协议

    • 网络模型
    • http/1.1
    • WebSocket
    • http/2
    • TLS/SSL
    • tcp
    • IP
    • tcpdump抓包命令
    • wireshark抓包工具
  • 通用

    • Git
  • 技术分享

    • git push/pull总是超时怎么办
    • idea debug技巧
    • postman使用
    • 问题总结
    • idea使用技巧
  • Oauth2

    • Oauth2原理
  • 项目列表

    • redis项目
    • 微服务项目
  • 分类
  • 标签
  • 归档
  • 随笔
GitHub (opens new window)

Hincky

当有趣的人,做想做的事
  • 学习笔记

    • Vue笔记
    • Vuepress
    • nginx
  • 语言类

    • java
    • go
    • python
    • 设计模式
  • 框架类

    • Spring
    • Spring Security
    • Mybatis
  • 容器技术

    • docker
    • k8s
    • helm
    • prometheus
    • grafana
    • jenkins
  • 命令集合

    • linux命令
    • docker命令
    • git命令
    • vim命令
    • k8s命令
  • 数据库

    • sql
    • mysql
  • 协议

    • 网络模型
    • http/1.1
    • WebSocket
    • http/2
    • TLS/SSL
    • tcp
    • IP
    • tcpdump抓包命令
    • wireshark抓包工具
  • 通用

    • Git
  • 技术分享

    • git push/pull总是超时怎么办
    • idea debug技巧
    • postman使用
    • 问题总结
    • idea使用技巧
  • Oauth2

    • Oauth2原理
  • 项目列表

    • redis项目
    • 微服务项目
  • 分类
  • 标签
  • 归档
  • 随笔
GitHub (opens new window)
  • 容器技术

    • docker

      • 安装docker并换源
        • 卸载旧版本的 Docker
        • 安装依赖包
        • 添加 Docker 官方 GPG 密钥
        • 安装 Docker CE
        • 启动 Docker
        • 设置 Docker 自启动
        • 更换 Docker 镜像源为阿里云
        • 重启 Docker
        • 一体化脚本
      • docker容器内换源
        • 端口映射
        • docker容器内换源
      • 安装docker-compose
        • 下载最新版本的 Docker Compose:
        • 设置执行权限
        • 验证安装
        • 一体化脚本
      • docker-compose部署mysql主从集群
        • 创建docker-compose.yaml文件
        • 创建关键目录
        • 启动容器
        • 一体化脚本
      • dockerfile
        • 总体步骤
        • 编写Dockerfile
    • k8s

    • helm

    • rancher

    • prometheus

    • grafana

    • containerd

    • jenkins

  • 命令集合

  • 软路由

  • 容量保障技术

  • 运维
  • 容器技术
  • docker
hincky
2023-03-22
目录

docker-compose部署mysql主从集群

  • 创建docker-compose.yaml文件
  • 创建关键目录
  • 启动容器
  • 一体化脚本

要使用Docker Compose在主从MySQL上部署MySQL数据库,您可以按照以下步骤操作:

# 创建docker-compose.yaml文件

创建一个名为docker-compose.yaml的文件,使用以下配置:

version: "3.9"
services:
  master:
    image: mysql:latest
    container_name: master
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: rootpassword
    volumes:
      - ./mysql-master/data:/var/lib/mysql
      - ./mysql-master/conf.d:/etc/mysql/conf.d
    ports:
      - "3306:3306"
    command: --server-id=1 --log-bin=mysql-bin --binlog-format=ROW

  slave:
    image: mysql:latest
    container_name: slave
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: rootpassword
      MYSQL_MASTER_HOST: master
      MYSQL_MASTER_PORT: 3306
      MYSQL_MASTER_USER: root
      MYSQL_MASTER_PASSWORD: rootpassword
    volumes:
      - ./mysql-slave/data:/var/lib/mysql
      - ./mysql-slave/conf.d:/etc/mysql/conf.d
    ports:
      - "3307:3306"
    command: --server-id=2 --log-bin=mysql-bin --binlog-format=ROW --slave-skip-errors=all --slave-net-timeout=60 --relay-log-recovery=1 --relay-log=slave-relay-bin --log-slave-updates=1 --read-only=1 --slave-net-timeout=60 --skip-slave-start --skip-networking
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31

在这个配置中,我们定义了两个服务,一个主服务和一个从服务。我们使用MySQL的最新版本,并指定了容器名称,重启策略和环境变量。我们还将MySQL的数据目录和配置文件目录挂载到本地的./mysql-master/data和./mysql-master/conf.d目录以及./mysql-slave/data和./mysql-slave/conf.d目录。我们还将主服务的端口映射到本地的3306端口,从服务的端口映射到本地的3307端口。最后,我们使用命令行参数设置主从服务器的配置。

# 创建关键目录

现在,我们需要创建本地目录以便挂载到容器中。我们需要创建以下目录:

mkdir -p ./mysql-master/data
mkdir -p ./mysql-master/conf.d
mkdir -p ./mysql-slave/data
mkdir -p ./mysql-slave/conf.d
1
2
3
4

这些目录将用于挂载MySQL的数据和配置文件。

# 启动容器

使用以下命令启动容器:

docker-compose up -d
1

这将启动主从MySQL容器,并将它们后台运行。

现在,您已经成功地使用Docker Compose在主从MySQL上部署了MySQL数据库,并挂载了关键目录。

# 一体化脚本

mkdir -p my-databases && cd $_
mkdir -p ./mysql-master/data
mkdir -p ./mysql-master/conf.d
mkdir -p ./mysql-slave/data
mkdir -p ./mysql-slave/conf.d

cat > ./docker-compose.yml << EOF
version: "3.9"
services:
  master:
    image: mysql:latest
    container_name: master
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: rootpassword
    volumes:
      - ./mysql-master/data:/var/lib/mysql
      - ./mysql-master/conf.d:/etc/mysql/conf.d
    ports:
      - "3306:3306"
    command: --server-id=1 --log-bin=mysql-bin --binlog-format=ROW

  slave:
    image: mysql:latest
    container_name: slave
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: rootpassword
      MYSQL_MASTER_HOST: master
      MYSQL_MASTER_PORT: 3306
      MYSQL_MASTER_USER: root
      MYSQL_MASTER_PASSWORD: rootpassword
    volumes:
      - ./mysql-slave/data:/var/lib/mysql
      - ./mysql-slave/conf.d:/etc/mysql/conf.d
    ports:
      - "3307:3306"
    command: --server-id=2 --log-bin=mysql-bin --binlog-format=ROW --slave-skip-errors=all --slave-net-timeout=60 --relay-log-recovery=1 --relay-log=slave-relay-bin --log-slave-updates=1 --read-only=1 --slave-net-timeout=60 --skip-slave-start --skip-networking

EOF

docker-compose up -d
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
编辑 (opens new window)
安装docker-compose
dockerfile

← 安装docker-compose dockerfile→

最近更新
01
人生前期重要的能力
05-17
02
防火墙命令
04-11
03
安装docker-compose
03-10
更多文章>
Theme by Vdoing | Copyright © 2022-2023 Hincky | MIT License | 粤ICP备2022120427号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式