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

docker部署MySQL主从服务集群

创建目录

mkdir -p ~/mysql/mysql8-cluster/{master,slave1,slave2}/{conf,data,logs}

创建网络

docker network create mysql-cluster-net
# 查看网络:docker network ls

配置文件

主库

~/mysql/mysql8-cluster/master/conf/my.cnf

[mysqld]
# 唯一标识(主从必须不同)
server-id=1
# 开启binlog,指定日志文件名前缀
log_bin=mysql-bin
# 二进制日志格式(row格式支持更精准的同步)
binlog_format=ROW
# 开启GTID(全局事务标识,自动跟踪binlog位置)
gtid_mode=ON
enforce_gtid_consistency=ON
# 忽略系统库同步(可选)
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
# 字符集配置
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
[client]
default-character-set = utf8mb4
[mysql]
default-character-set = utf8mb4
从库1

~/mysql/mysql8-cluster/slave1/conf/my.cnf

[mysqld]
# 唯一标识(与主库不同)
server-id=2
# 从库也可开启binlog(可选,用于级联复制)
log_bin=mysql-slave-bin
# 开启GTID(与主库保持一致)
gtid_mode=ON
enforce_gtid_consistency=ON
# 中继日志(从库用于暂存主库binlog)
relay_log=mysql-relay-bin
# 从库只读(避免误写,可选)
read_only=ON
# 字符集配置
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
[client]
default-character-set = utf8mb4
[mysql]
default-character-set = utf8mb4
从库2

~/mysql/mysql8-cluster/slave2/conf/my.cnf

[mysqld]
# 唯一标识(与主库不同)
server-id=3
# 从库也可开启binlog(可选,用于级联复制)
log_bin=mysql-slave-bin
# 开启GTID(与主库保持一致)
gtid_mode=ON
enforce_gtid_consistency=ON
# 中继日志(从库用于暂存主库binlog)
relay_log=mysql-relay-bin
# 从库只读(避免误写,可选)
read_only=ON
# 字符集配置
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
[client]
default-character-set = utf8mb4
[mysql]
default-character-set = utf8mb4

搭建MySQL服务

-- 主服务
docker run -d --name mysql8-master --network mysql-cluster-net -p 3316:3306  -e MYSQL_ROOT_PASSWORD=123456  -v ~/mysql/mysql8-cluster/master/logs:/var/log/mysql -v ~/mysql/mysql8-cluster/master/conf:/etc/mysql/conf.d -v ~/mysql/mysql8-cluster/master/data:/var/lib/mysql mysql:8.0
-- 从服务器1
docker run -d  --name mysql8-slave1 --network mysql-cluster-net -p 3317:3306  -e MYSQL_ROOT_PASSWORD=123456  -v ~/mysql/mysql8-cluster/slave1/logs:/var/log/mysql -v ~/mysql/mysql8-cluster/slave1/conf:/etc/mysql/conf.d -v ~/mysql/mysql8-cluster/slave1/data:/var/lib/mysql mysql:8.0
-- 从服务器2
docker run -d  --name mysql8-slave2 --network mysql-cluster-net -p 3318:3306  -e MYSQL_ROOT_PASSWORD=123456  -v ~/mysql/mysql8-cluster/slave2/logs:/var/log/mysql -v ~/mysql/mysql8-cluster/slave2/conf:/etc/mysql/conf.d -v ~/mysql/mysql8-cluster/slave2/data:/var/lib/mysql mysql:8.0

主库创建复制用户

# 进入主库容器
docker exec -it mysql-master bash# 登录MySQL(输入上述ROOT密码)
mysql -u root -p# 创建复制用户(允许从库连接,用户名:repl,密码:Repl@123)
CREATE USER 'repl'@'%' IDENTIFIED WITH mysql_native_password BY 'Repl@123';
# 授权复制权限
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
# 刷新权限
FLUSH PRIVILEGES;# 查看主库状态(记录binlog文件和位置,备用)
SHOW MASTER STATUS;

配置从库连接主库

# 进入从库容器
docker exec -it mysql-slave1 bash# 登录MySQL
mysql -u root -p# 配置主库连接信息(使用GTID简化配置)
CHANGE MASTER TOMASTER_HOST='mysql8-master',  # 主库容器名(同网络内可直接访问)或IP地址MASTER_USER='repl',          # 主库创建的复制用户MASTER_PASSWORD='Repl@123',  # 复制用户密码MASTER_PORT=3306,            # 主库容器内端口(默认3306)MASTER_AUTO_POSITION=1;      # 启用GTID自动定位binlog(无需手动填File和Position)# 启动从库同步进程
START SLAVE;
http://www.dtcms.com/a/495728.html

相关文章:

  • 网站推广可采用的方法有哪些毕设做网站难吗
  • 方案图网站西安网站建设设计的好公司哪家好
  • 邻接矩阵的基本操作
  • 【JavaEE初阶】1124网络原理
  • 烟台建网站公司南昌做网站哪家公司好
  • windows安装minicoda
  • 网站能否做二维码什么是网络营销产生的技术基础
  • 自己的网站怎么做排名网络营销有必要学吗
  • 关于太阳光模拟器的常见问题解答(二)
  • 模拟量线性变换FC_S_ITR函数(基恩士PLC完整ST代码)
  • MCP(模型上下文协议)是什么?是AI 时代的 “USB-C”
  • 数字企业选哪家
  • 视程空间Pandora:终端算力破晓,赋能边缘计算未
  • Visual Basic 参数传送-形参与实参
  • 机器视觉的电路板字符缺陷检测应用
  • 如何进行坡向分析
  • 外贸网站一站式海外推广铜仁市住房和城乡建设局网站
  • 乐迪信息:设备温度异常怎么办?AI摄像机热成像双光监测
  • 【爬虫】浏览器插件
  • 百度网盟 网站定向网站的ftp地址是什么
  • 鸿蒙Harmony实战开发教学(No.7)-Image组件基础到进阶篇
  • 08_优雅的Python开发:Conda与Poetry的完美结合
  • 彩票网站建设需要什么平面设计资源网站
  • 三亚专业做网站wordpress后台修改icp连接
  • ABQ-LLM:用于大语言模型的任意比特量化推理加速
  • Langchain输出
  • 营销型网站服务公司建设网站的重点与难点在于
  • 做牛仔裤的视频网站民权做网站哪家好
  • python+uniapp基于微信小程序的心理咨询信息系统
  • 如何将一加手机的数据传输到笔记本电脑