当前位置: 首页 > news >正文

Docker安装部署MySQL一主二从集群

端口号规划如下
3306(主) 数据卷 /mydata/mysql-master
3307(从) 数据卷 /mydata/mysql-slave1
3308(从) 数据卷 /mydata/mysql-slave2

1.Master主库安装

docker run -p 3306:3306 --name mysql-master \
-v /mydata/mysql-master/log:/var/log/mysql \
-v /mydata/mysql-master/data:/var/lib/mysql \
-v /mydata/mysql-master/conf:/etc/mysql/conf.d \
-e MYSQL_ROOT_PASSWORD=123456 -d mysql:8.0.36

slave1从库安装

docker run -p 3307:3306 --name mysql-slave1 \
-v /mydata/mysql-slave1/log:/var/log/mysql \
-v /mydata/mysql-slave1/data:/var/lib/mysql \
-v /mydata/mysql-slave1/conf:/etc/mysql/conf.d \
-e MYSQL_ROOT_PASSWORD=123456 -d mysql:8.0.36

slave2从库安装

docker run -p 3308:3306 --name mysql-slave2 \
-v /mydata/mysql-slave2/log:/var/log/mysql \
-v /mydata/mysql-slave2/data:/var/lib/mysql \
-v /mydata/mysql-slave2/conf:/etc/mysql/conf.d \
-e MYSQL_ROOT_PASSWORD=123456 -d mysql:8.0.36

2.Master主库配置

在宿主机/mydata/mysql-master/conf目录下新建my.cnf设置如下内容:

[mysql]
default-character-set=utf8mb4
[mysqld]
#设置server_id,同一局域网中需要唯一
server_id=20
#指定不需要同步的数据库名称 binlog-do-db 为需要同步的数据库
binlog-ignore-db=mysql
#开启二进制日志功能
log-bin=micro-mysql-bin
## 设置二进制日志使用内存大小(事务)
binlog_cache_size=1M
## 设置使用的二进制日志格式(mixed,statement,row)
binlog_format=mixed
## 二进制日志过期清理时间。默认值为0,表示不自动清理。
expire_logs_days=7

使用指令重启容器使用配置生效:

docker restart mysql-master

进入容器:

docker exec -it mysql-master /bin/bash

进入数据库mysql -u root -p

-- 创建名slave为用户供从库连接
CREATE USER 'slave'@'%' IDENTIFIED BY '123456';
-- 授权表示可以从任意ip使用此用户名和密码连接到主数据库
GRANT REPLICATION SLAVE ON *.* to 'slave'@'%';
-- 刷新配置
FLUSH PRIVILEGES;

3.slave从库配置

在宿主机 /mydata/mysql-slave1/conf 目录下新建my.cnf设置如下内容,slave2同理

[mysql]
default-character-set=utf8mb4
[mysqld]
#设置server_id
server_id=17
#指定不需要同步的数据库名称
binlog-ignore-db=mysql  
#开启二进制日志功能,以备Slave作为其它数据库实例的Master时使用
log-bin=micro-mysql-slave-bin  
#设置二进制日志使用内存大小(事务)
binlog_cache_size=1M  
#设置使用的二进制日志格式(mixed,statement,row)
binlog_format=mixed  
#二进制日志过期清理时间。默认值为0,表示不自动清理。
expire_logs_days=7  
#relay_log配置中继日志
relay_log=micro-relay-log-bin
#log_slave_updates表示slave将复制事件写进自己的二进制日志
log_slave_updates=1  
#slave设置为只读(具有super权限的用户除外)
read_only=1

启动slave从库复制

首选我们在主库执行一下show master status;获取binlog日志名称 和日志偏移量, 从库开启复制所需的必要参数;

进入对应从库,配置主从连接关系 ==* 注意是在从库操作== 执行以下SQlL

CHANGE MASTER TO
MASTER_HOST='172.17.0.1',  # 主库IP(刚才测试通过的地址)
MASTER_USER='slave',       # 主库中创建的复制用户
MASTER_PASSWORD='123456',  # 复制用户的密码
MASTER_LOG_FILE='micro-mysql-bin.000001',  # 主库的binlog文件名
MASTER_LOG_POS=859,        # 主库的binlog位置
MASTER_PORT=3306,          # 主库端口
MASTER_CONNECT_RETRY=30;   # 连接重试间隔

上述SQL执行完成开启从库复制,slave2配置和slave1一致这里就不再重复了;

启动主从复制

start slave;

show slave status \G

http://www.dtcms.com/a/490993.html

相关文章:

  • 搭建网站服务器多少钱网站在建设中是什么意思
  • Java 11对集合类做了哪些增强?
  • SQLSugar框架数据库优先
  • 工程建设教育网站北京网站建设cnevo
  • Vector数据库性能大比武:Pinecone、Weaviate、Chroma速度与准确率实测
  • 天津老区建设促进会网站移动开发的现状和前景
  • 笔试强训(六)
  • Iterator迭代器 【ES6】
  • spring boot实现接口数据脱敏,整合jackson实现敏感信息隐藏脱敏
  • 基于单片机的汽车多参数安全检测与报警系统设计
  • C++设计模式_行为型模式_备忘录模式Memento
  • 温州h5建站关于网站建设的文章
  • 大连专业做网站wordpress 4.5 汉化主题
  • Spring Boot 3零基础教程,Spring Boot 日志分组,笔记20
  • 【单调向量 单调栈】3676. 碗子数组的数目|1848
  • 【JUnit实战3_01】第一章:JUnit 起步
  • 公司门户网站该怎么做用模块做网站
  • 合肥网站定制公司宁波做网站公司哪家好
  • Banana Script,一个C99实现的,类JavaScript极简语法的脚本引擎
  • 14-机器学习与大模型开发数学教程-第1章 1-6 费马定理与极值判定
  • 写的网站怎么做接口php在网站上怎么做充值
  • nginx报400bad request 请求头过大异常处理
  • react+springboot云上部署
  • Google 地图类型
  • 免费网站做企业的网站都要准备什么
  • 网站建设往年的高考题免费看电视的网站有哪些
  • STM32N6 KEIL IDE 调试XIP 应用的一种方法 LAT1575
  • 大模型微调(二):使微调保持稳定的策略
  • 前端调优23大规则(Part 4)
  • SpringBoot-入门介绍