ReturnTmp's Blog ReturnTmp's Blog
首页
基础课程
编程语言
框架技术
运维笔记
人工智能
随笔摘录
  • 友链
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

ReturnTmp

分享有趣好玩的计算机知识
首页
基础课程
编程语言
框架技术
运维笔记
人工智能
随笔摘录
  • 友链
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • Jenkins | VuePress博客自动化部署
  • 三步教你轻松安装配置 Linux Anaconda 环境
  • Windows SSH 远程连接 Linux
  • VuePress 数学公式支持
  • 一文教你如何防御数据库渗透入侵
  • WSL2 Ubuntu20.04 配置 CUDA
  • 前端开发部署运维笔记
  • 运维监控指南
  • 如何使用『Nginx』配置后端『HTTPS』协议访问
  • 华为云云耀云服务器L实例评测|搭建您的私人影院网站
  • 华为云云耀云服务器L实例评测|服务器反挖矿防护指南
  • 华为云云耀云服务器L实例评测|Git 私服搭建指南
  • VSCode『SSH』连接服务器『GUI界面』传输
  • 『硅云』海外云服务器购买指南
  • GitHub Unfork 指南
  • 摆脱推荐算法,实现万物皆可『RSS』
  • Drone 指南
  • 教你如何『SSH』远程连接『内网』服务器
  • 『GitHub Actions』静态博客部署指南
  • Nginx 配置路径解析
  • 『pnpm』多项目环境迁移指南
  • Nginx 403 forbidden 问题
  • 你知道『SSH』为什么安全吗
  • 手把手教你如何给『Linux』打补丁
  • KVM Anolis OS 环境搭建
  • Docker 快速搭建 MySQL 高可用集群
    • 前言
    • 主从复制
      • 主服务器
      • 从服务器
    • 参考链接
  • RabbitMQ 入门指南(安装,配置,应用)
  • linux JDK8 环境配置
  • 发布策略
  • Spring Cloud Gateway + Nacos 灰度发布
  • Nginx 负载均衡集群 节点健康检查
  • 前端监控搭建
  • 运维监控系统
  • MySQL 可视化监控
  • MySQL 死锁问题排查与解决
  • Zookeeper Windows 安装配置(单机 - 集群)
  • 阿里云服务器镜像迁移
  • git clone 失败问题
  • Couldn't find ffmpeg or avconv 问题
  • 运维笔记
ReturnTmp
2023-11-20
目录

Docker 快速搭建 MySQL 高可用集群

# 前言

本文将会搭建 MySQL 高可用集群,实现主从复制

# 主从复制

# 主服务器

mysql 官方镜像文档:mysql - Official Image | Docker Hub (opens new window)

数据卷对应位置创建配置文件

mkdir -p /data/mysql-master/conf
vim /data/mysql-master/conf/my.cnf

[mysqld]
## 集群唯一
server_id=101 
## 指定不需要同步的数据库名称
binlog-ignore-db=mysql  
## 开启二进制日志功能
log-bin=mall-mysql-bin  
## 设置二进制日志使用内存大小(事务)
binlog_cache_size=1M  
## 设置使用的二进制日志格式(mixed,statement,row)
binlog_format=mixed  
## 二进制日志过期清理时间。默认值为0(不自动清理)
expire_logs_days=7  
## 跳过指定错误,避免复制中断。
slave_skip_errors=1062
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
docker run -p 3307:3306 --name mysql-master \
-v /data/mysql-master/log:/var/log/mysql \
-v /data/mysql-master/data:/var/lib/mysql \
-v /data/mysql-master/conf/my.cnf:/etc/mysql/my.cnf \
-e MYSQL_ROOT_PASSWORD=111111 \
-d mysql:5.7
1
2
3
4
5
6

注意:如果使用 -v /data/mysql-master/conf:/etc/mysql 数据卷挂载会出现问题mysqld: Can't read dir of '/etc/mysql/conf.d/' (Errcode: 2 - No such file or directory)

进入主服务器实例内部,创建数据同步用户(slave)

# 进入实例
docker exec -it mysql-master /bin/bash
# 登录
mysql -uroot -p111111

# 创建用户
CREATE USER 'slave'@'%' IDENTIFIED BY '111111';
# 授权
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%';
1
2
3
4
5
6
7
8
9

# 从服务器

数据卷对应位置创建配置文件

mkdir -p /data/mysql-slave/conf
vim /data/mysql-slave/conf/my.cnf

[mysqld]
server_id=102
binlog-ignore-db=mysql  
log-bin=mall-mysql-slave1-bin  
binlog_cache_size=1M  
binlog_format=mixed  
expire_logs_days=7  
slave_skip_errors=1062

## 配置中继日志
relay_log=mall-mysql-relay-bin  
log_slave_updates=1  
## 设置只读,超级权限用户除外
read_only=1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

创建实例容器

docker run -p 3308:3306 --name mysql-slave \
-v /data/mysql-slave/log:/var/log/mysql \
-v /data/mysql-slave/data:/var/lib/mysql \
-v /data/mysql-slave/conf/my.cnf:/etc/mysql/my.cnf \
-e MYSQL_ROOT_PASSWORD=111111  \
-d mysql:5.7
1
2
3
4
5
6

主数据库中查看主从同步状态

docker exec -it mysql-master /bin/bash
mysql -uroot -p111111
show master status;
1
2
3

image.png

从数据库配置主从复制

docker exec -it mysql-slave /bin/bash
mysql -uroot -p111111
change master to master_host='1.2.3.4', master_user='slave', master_password='111111', master_port=3307, master_log_file='mall-mysql-bin.000003', master_log_pos=617, master_connect_retry=30;
1
2
3

参数解释

  • master_host:主数据库的 IP 地址(我为了防止暴露 IP,这里用的假 IP);
  • master_port:主数据库的运行端口;
  • master_user:在主数据库创建的用于同步数据的用户账号;
  • master_password:在主数据库创建的用于同步数据的用户密码;
  • master_log_file:指定从数据库要复制数据的日志文件,通过查看主数据的状态,获取File参数;
  • master_log_pos:指定从数据库从哪个位置开始复制数据,通过查看主数据的状态,获取Position参数;
  • master_connect_retry:连接失败重试的时间间隔,单位为秒。

从数据库,启动并查看主从同步状态

# 启动
start slave;
# 查看状态
show slave status \G;
1
2
3
4

未启动前

image.png

启动并连接成功之后两个参数都会是 Yes(这里不再花时间等待连接了)

image.png

# 参考链接

  • 【精选】MySQL 高可用集群太难部署,我用 Docker 五分钟就搞定它!-CSDN博客 (opens new window)
  • MySQL 主从复制原理及配置 | 董宗磊的博客--靡不有初,鲜克有终 (dongzl.github.io) (opens new window)
  • docker-compose搭建mysql高可用主从集群 - xiaocheng12138 - 博客园 (cnblogs.com) (opens new window)
  • Docker手把手教你搭建MySQL集群【主从复制】 - 掘金 (juejin.cn) (opens new window)
编辑 (opens new window)
上次更新: 2023/11/28, 12:55:10
KVM Anolis OS 环境搭建
RabbitMQ 入门指南(安装,配置,应用)

← KVM Anolis OS 环境搭建 RabbitMQ 入门指南(安装,配置,应用)→

最近更新
01
百度网盘加速
03-24
02
新版 PyCharm 设置 Conda 虚拟环境
03-24
03
腾讯云域名转到阿里云
03-24
更多文章>
Theme by Vdoing | Copyright © 2023-2024 ReturnTmp | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式