尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

30分钟快速搭建Mysql主从环境

30分钟快速搭建Mysql主从环境
📅 发布时间:2026/7/30 7:09:16

拉取mysql镜像

docker pull mysql:5.7

dockerCompose yml 文件

version: '3.8' services: mysql-master: # 服务名称 image: mysql:5.7 # 镜像信息 container_name: mysql-master # 容器名称 environment: # 环境变量配置 MYSQL_ROOT_PASSWORD: root123 # root 密码 MYSQL_ROOT_HOST: '%' # 权限 volumes: # 容器卷 - ./msmysql/master/conf/my.cnf:/etc/mysql/my.cnf - ./msmysql/master/data:/var/lib/mysql ports: # 端口 - "3306:3306" command: --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci networks: # 网络连接 - mysql-net mysql-slave1: image: mysql:5.7 container_name: mysql-slave1 environment: MYSQL_ROOT_PASSWORD: root123 MYSQL_ROOT_HOST: '%' volumes: - ./msmysql/slave1/conf/my.cnf:/etc/mysql/my.cnf - ./msmysql/slave1/data:/var/lib/mysql ports: - "3307:3306" command: --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci networks: - mysql-net mysql-slave2: image: mysql:5.7 container_name: mysql-slave2 environment: MYSQL_ROOT_PASSWORD: root123 MYSQL_ROOT_HOST: '%' volumes: - ./msmysql/slave2/conf/my.cnf:/etc/mysql/my.cnf - ./msmysql/slave2/data:/var/lib/mysql ports: - "3308:3306" command: --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci networks: - mysql-net # 自定义网络连接,连接方式为 bridge 方式。 host 方式等,这里选择 bridge 方式,为后续操作简化 # bridge 内的容器服务可以通过容器名访问,省去dns 解析. networks: mysql-net: driver: bridge

这里注意: 为什么使用自定义创建的网络连接 并使用bridge 方式。

docker compose 在进行排版时,如果使用brideg 并且服务不指明网络 。 dockerCompose 就会自动创建一个名称为 服务名-default 的网络。

容器卷

msmysql | |---master | |--conf | |---my.cnf | |--data | |---slave1 | |--conf | |---my.cnf | |--data | |---slave2 | |--conf | |---my.cnf | |--data

my.cnf配置

配置 主my.cnf
[mysqld] # 服务id 唯一标识不能重复 server-id=1 # 开启二进制日志,主从复制的数据文件 log_bin=mysql-bin # 需要同步的数据库名称, 这里不做添加 # binlog-do-db=xxxx # 设置binlog 格式 binlog_format=STATEMENT # 设置网络允许远程连接 bind-address=0.0.0.0
从库配置 my.cnf
[mysqld] #服务唯一表示 server-id=2 #从库开启日志 便于级联复制 log_bin=mysql-bin #读日志 relay-log=mysql-relay #允许远程连接 bind-address=0.0.0.0 [mysqld] #服务唯一表示 server-id=3 #从库开启日志 便于级联复制 log_bin=mysql-bin #读日志 relay-log=mysql-relay #允许远程连接 bind-address=0.0.0.0

启动服务配置

  1. 启动dockerCompose 排版文件
docker compose -f msmysql.yml up -d
  1. 进入主服务,并配置 主从账号和获取主服务信息
mysql -uroot -proot123

进入mysql 服务,并查看当前用户

use mysql ; select user, host from user;

这时候会发现,只有root用户是有所有权限 %
现在创建一个可以连接主从服务的用户

GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%' IDENTIFIED BY 'repl123';

查看 master的binlog日志和开始间距

show master status;

会看到如图显示

+------------------+----------+--------------+------------------+-------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set | +------------------+----------+--------------+------------------+-------------------+ | mysql-bin.000004 | 405 | | | | +------------------+----------+--------------+------------------+-------------------+

file ,用于slave 服务读取主服务的开始文件,

position ,位置用于 slave 服务开始读取配置。

登录从服务器
docker exec -it /bin/bash #登录数据库 mysql -uroot -proot123; show slave status\G; #未启用时可看到 Slave_IO_Running: No Slave_SQL_Running: No
设置从库同步
change to master_host: Master的ip master_port:Master的端口号,因为用的是docker中的mysql,所以这里指的是宿主机映射到到mysql容器的端口 master_user:用于数据同步的用户 master_password:用于同步的用户的密码 master_log_file:指定 Slave 从哪个日志文件开始复制数据,即上文中提到的 File 字段的值 master_log_pos:从哪个 Position 开始读,即上文中提到的 Position 字段的值 master_connect_retry:如果连接失败,重试的时间间隔,单位是秒,默认是60秒 #连接数据库输入以下配置,其中FILE与POS为主服务器看到参数 CHANGE MASTER TO MASTER_HOST='mysql-master', MASTER_PORT=3306, MASTER_USER='repl', MASTER_PASSWORD='repl123', MASTER_LOG_FILE='mysql-bin.000004', MASTER_LOG_POS=405, MASTER_CONNECT_RETRY=60; #启动同步功能 start slave

设置完成后,重启slave1,slave2 容器,并登录查看数据库状态

#查看slave配置信息 show slave status\G;

log_file, log_pos 都要与主库保持一致。

如果两个 slave 变成yes,证明启动成功。

测试

登录主数据库

#进入主数据库,新建数据库mytestcreate DATABASE mytest;#进入slave1数据库,查看数据库列表show databases;#可看到存在mytest表#进入slave2数据库可看到一样结果,证明主从配置生效

相关新闻

  • 超越基础画框:Python实现专业级目标检测可视化方案
  • 字符串处理全解析:从基础操作到生产环境实战指南
  • 图片压缩在线使用:理赔材料上传失败先过这张自检清单 - AI测评专家

最新新闻

  • 让Claude看懂视频:claude-video给AI装上了眼睛
  • 短剧出海北美、拉美、东南亚怎么选?短剧视频翻译配音对比
  • 让Agent学会工程化:ECC——一个开源的Agent编排操作系统
  • 私有化协作底座:信创后业务优化的核心引擎
  • Allegro PCB设计:掌握图形层快速切换技巧,提升批量操作效率
  • FPGA彩灯控制器设计:Verilog状态机实现与Quartus仿真全流程

日新闻

  • 终极TeamSpeak3音乐机器人搭建指南:5分钟实现语音聊天室音频播放
  • 广州海珠区内搬家攻略,平价靠谱搬家服务商推荐,专业打包搬运省心避坑全流程指南 - 厚道搬家
  • 大语言模型入门指南:从零到精通掌握AI核心技术的5大步骤

周新闻

  • 大连理工大学与东京大学联手打造的“主动型AI助手“
  • 170.2026年国家级科研瓶颈:超精密单点金刚石切削(SPDT)光学表面生成
  • SongBloom:革命性歌曲生成框架深度解析——如何通过交织自回归与扩散模型创作完整音乐

月新闻

  • 2026年6月公司网站搭建最新热门渠道测评:四大低成本/零代码平台对比+避坑
  • 【Linux】Linux arm 编译QT程序,出现expected “}“报错
  • 【MATLAB例程】四基站二维AOA定位与距离辅助增强对比仿真。基于角度观测和测距修正的固定目标平面定位精度分析

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号