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

【软件部署】docker快速部署MySQL多个主版本的单实例

说明

使用docker快速部署MySQL多个主版本的单实例容器。最新子版本。

MySQL5

创建文件compose.yaml

services: mysql5-single: image: mysql:5.7.44 container_name: mysql5-single restart: unless-stopped ports: -"3306:3306"environment: TZ: Asia/Shanghai MYSQL_ROOT_PASSWORD: root123456 MYSQL_ROOT_HOST:'%'volumes: - mysql5-data:/var/lib/mysql - ./my.cnf:/etc/mysql/conf.d/my.cnf healthcheck: test: mysql-h127.0.0.1-uroot -p$$MYSQL_ROOT_PASSWORD-e"SELECT 1"interval: 10s timeout: 5s retries:3start_period: 30s volumes: mysql5-data: name: mysql5-data

创建my.cnf

# MySQL 5.7.44 整合优化配置 - 修正版# 适配:Docker容器化部署[client]default-character-set=utf8mb4 connect-timeout=10[mysql]default-character-set=utf8mb4[mysqld]# ===================== 基础核心配置 =====================bind-address=0.0.0.0 skip-name-resolve# 注意:此项仅在从零初始化数据库时生效,若挂载旧数据卷需与旧配置保持一致lower-case-table-names=1default-storage-engine=InnoDB transaction-isolation=REPEATABLE-READ sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES# ===================== 复制与日志配置 =====================server-id=1# 显式禁止二进制日志(5.7默认通常为关闭,此处强制禁用以节省空间)skip-log-bin# 如果需要开启 Binlog,请注释掉上面一行,并取消下面两行的注释:# log_bin = mysql-bin# expire_logs_days = 7# ===================== 字符集全链路配置 =====================character-set-server=utf8mb4 collation-server=utf8mb4_unicode_ci init_connect='SET NAMES utf8mb4 COLLATE utf8mb4_unicode_ci'skip-character-set-client-handshake# ===================== 连接与会话性能配置 =====================max_connections=10000max_user_connections=9999max_connect_errors=100000# 缩短超时时间,回收空闲连接wait_timeout=600interactive_timeout=600thread_cache_size=100# ===================== 缓存与文件IO配置 =====================table_open_cache=2000# 容器启动时需确保 --ulimit nofile=65535:65535open_files_limit=65535max_allowed_packet=64M tmp_table_size=64M max_heap_table_size=64M# ===================== InnoDB 存储引擎核心优化 =====================# 关键:根据容器限制调整。建议设置为容器最大内存的 50%-70%innodb_buffer_pool_size=1G innodb_log_file_size=256M innodb_flush_log_at_trx_commit=2innodb_flush_method=O_DIRECT innodb_file_per_table=1innodb_log_buffer_size=16M innodb_lock_wait_timeout=50# ===================== 日志与运维配置 =====================slow_query_log=1# 日志文件将保存在数据卷中slow_query_log_file=/var/lib/mysql/mysql-slow.log long_query_time=2log_error=/var/lib/mysql/mysqld-error.log

MySQL8

创建compose.yaml

services: mysql8-single: image: mysql:8.4.8 container_name: mysql8-single restart: unless-stopped healthcheck: test: mysql-h127.0.0.1-uroot -p$$MYSQL_ROOT_PASSWORD-e"SELECT 1"interval: 10s timeout: 5s retries:3start_period: 30s ports: -"3306:3306"volumes: - ./my.cnf:/etc/mysql/conf.d/my.cnf - mysql8-data:/var/lib/mysql - mysql8-log:/var/log/mysql environment: MYSQL_ROOT_PASSWORD: root123456 MYSQL_ROOT_HOST:"%"TZ: Asia/ShanghaiLANG:C.UTF-8 volumes: mysql8-data: name: mysql8-data mysql8-log: name: mysql8-log

创建my.cnf

[client]default-character-set=utf8mb4 port=3306socket=/var/run/mysqld/mysqld.sock[mysql]default-character-set=utf8mb4[mysqld]# --- 基础设置 ---user=mysql port=3306socket=/var/run/mysqld/mysqld.sock pid-file=/var/run/mysqld/mysqld.pid# 字符集设置character-set-server=utf8mb4 collation-server=utf8mb4_0900_ai_ci# 可选,每次会话强制字符集。init_connect='SET NAMES utf8mb4 COLLATE utf8mb4_0900_ai_ci'# 目录设置datadir=/var/lib/mysql tmpdir=/tmp# 时区default-time-zone=+08:00# --- 连接与安全 ---max_connections=500max_allowed_packet=64M skip-name-resolve wait_timeout=28800interactive_timeout=28800# --- InnoDB 优化 (适配 MySQL 8.4) ---innodb_buffer_pool_size=1G innodb_flush_log_at_trx_commit=2innodb_flush_method=O_DIRECT innodb_log_buffer_size=64M# [修正] MySQL 8.4 废弃了 innodb_log_file_size# 改用 innodb_redo_log_capacity。计算方式:原 file_size * 2 = 512Minnodb_redo_log_capacity=536870912# --- 日志配置 (配合 docker 挂载卷) ---# 错误日志 (默认输出到 stderr,Docker 建议保留默认,或者指向文件)log_error=/var/log/mysql/error.log# 慢查询日志slow_query_log=1slow_query_log_file=/var/log/mysql/slow.log long_query_time=2log_queries_not_using_indexes=1# --- Binlog 配置 ---server-id=1binlog_expire_logs_seconds=604800log_bin=/var/log/mysql/mysql-bin# 8.0+ 默认开启 binlog,且格式默认为 ROW,通常无需额外配置 format# --- 临时表设置 ---tmp_table_size=64M max_heap_table_size=64M# --- 认证插件 (可选) ---# MySQL 8.4 移除了 mysql_native_password 的默认加载# 开启后可连接旧版本客户端,但引入不可控安全风险。# mysql_native_password=ON

MySQL9

创建compose.yaml

services: mysql9-single: image: mysql:9.6.0 container_name: mysql9-single restart: unless-stopped healthcheck: test: mysql-h127.0.0.1-uroot -p$$MYSQL_ROOT_PASSWORD-e"SELECT 1"interval: 10s timeout: 5s retries:3start_period: 30s ports: -"3306:3306"volumes: - ./my.cnf:/etc/mysql/conf.d/my.cnf - mysql9-data:/var/lib/mysql - mysql9-log:/var/log/mysql environment: MYSQL_ROOT_PASSWORD: root123456 MYSQL_ROOT_HOST:"%"TZ: Asia/ShanghaiLANG:C.UTF-8 volumes: mysql9-data: name: mysql9-data mysql9-log: name: mysql9-log

创建my.cnf

[mysqld]# --- 基础与安全 ---port=3306character-set-server=utf8mb4 collation-server=utf8mb4_unicode_ci skip-name-resolve# 可选,每次会话强制字符集。init_connect='SET NAMES utf8mb4 COLLATE utf8mb4_unicode_ci'# --- 内存优化 (假设宿主机内存 >= 4G,如果是 2G 请减半) ---innodb_buffer_pool_size=1G innodb_log_buffer_size=16M innodb_flush_log_at_trx_commit=1max_connections=500# --- 日志设置---slow_query_log=1long_query_time=2[client]default-character-set=utf8mb4[mysql]default-character-set=utf8mb4

部署

选中期望部署的版本,使用下述命令部署,

dockercompose up-d
http://www.cnnetsun.cn/news/1778697.html

相关文章:

  • Cursor+AI开发实战:解决npm安装electron卡死的3个关键技巧(附国内镜像配置)
  • Unity游戏插件加载革命:MelonLoader全方位技术指南
  • 绝区零一条龙:智能游戏助手提升效率指南
  • 别再用免费推客系统,坑多还不安全
  • 从LaTeX论文中提取关键思想:nlp_structbert辅助学术文献综述
  • 解决微信聊天记录备份难题:WeChatExporter工具的技术实现与应用
  • PMP刷题必备口诀-3(题库+答案详细解析)
  • PMP刷题必备口诀-2(题库+答案详细解析)
  • nlp_structbert_sentence-similarity_chinese-large惊艳效果:古汉语白话转译语义匹配(‘吾甚悦之’vs‘我很喜欢’)
  • 实测好用!cv_resnet18_ocr-detection文字检测WebUI体验分享
  • 如何用三月七小助手实现《崩坏:星穹铁道》全自动游戏体验
  • Mac屏幕录制全攻略:从自带工具到专业软件
  • 2026重庆渗漏水维修:卫生间与屋顶频发?选择正规防水工艺、专业施工流程、本地企业评测指南
  • RT-Thread动态内存堆管理:小内存算法优化与API接口实战
  • 3步解密RePKG:Wallpaper Engine资源提取与格式转换的深度实战指南
  • 系统测试测什么/怎么测
  • 浏览器自动化之王:OpenClaw+Qwen3.5-9B实现复杂表单填充
  • 基于Python的党员学习交流平台毕设源码
  • 如何用md2pptx实现Markdown到演示文稿的高效转换
  • Z-Image-Turbo-辉夜巫女快速部署:5分钟搭建专属AI画师,一键生成日系巫女图
  • SMUDebugTool终极指南:如何深度优化Ryzen系统性能的完整教程
  • Kandinsky-5.0-I2V-Lite-5s社区作品巡礼:开发者创意应用案例集
  • 从PID到MPC:自动驾驶路径跟踪算法的演进与实战对比
  • Cesium 1.97版本后,如何自己动手实现模型实例化绘制(附完整代码)
  • 使用AI辅助写设计文档的感受与一些经验总结
  • 郭老师-寒门难出贵子?真相与破局之道
  • [Python] 跨越平台鸿沟:在Linux上成功部署IsaacGym的完整实践
  • 5个高效步骤解决Fiji在macOS上的启动故障:面向科研人员的图像处理工具稳定性优化指南
  • 2026届最火的五大AI科研方案推荐
  • 2026年,揭秘那些值得信赖的化学试剂公司背后的故事