MySQL 部署,总结一些在各种学习和实际生产中积累的 MySQL 版本信息和推荐配置。
MySQL 版本选择
通常情况下选择一个版本的 MySQL 主要看官方是否 GA,因为只有 MySQL 官方 GA 的版本才是较为稳定的版本,且修复了大量 Bug 和使用量较大的版本。若对 MySQL 要求比较高时,可采用 GA 后 2-3 个小版本作为生产使用。
- 8.4 LTS 2032 年 4 月 EOF
 
- 8.0 LTS 2026 年 4 月 EOF,当前(2024 年)主流版本,推荐
 
- 5.7 LTS 2023 年 10 月 EOF
- 5.x MySQL 版本选择(2015 年 9 月)
 
 
下面列举几个较为稳定的 MySQL 5.5/6 的版本:
MySQL-5.1.4(稳定)
MySQL-5.5.10(GA)
MySQL-5.5.40(生产)
MySQL-5.6.15(生产)
MySQL-5.6.26(稳定)
资源选择
MySQL 推荐的物理机采用 16 核 cpu2 台作为集群环境。
MySQL 修复和提高版本
有幸曾参加过杭州平民软件楼方鑫老师和王广友老师主讲的平民 MySQL 二期培训。平民软件开发的 onesql-5.6.25-all-intel-linux64.tar.gz 和 onesql-5.6.26-all-intel-linux64.tar.gz 在 MySQL 的并行运算和拆锁上做了大量优化,测试效果也很好,值得推荐。国产数据库的中流砥柱。
MariaDB 版本
- 
参考
 
- 
11.4 LTS 2029 年 5 月 EOF
 
- 
10.11 LTS 2028 年 2 月 EOF
 
- 
10.6 LTS 2026 年 7 月 EOF
 
- 
10.5 LTS 2025 年 6 月 EOF
 
相关端口
3306/TCP MySQL Classic 协议 
33060/TCP MySQL X 协议,由 mysqlx_port 配置 
33061/TCP InnoDB Cluster 配置期间 MySQL Shell 用于检查服务器的端口 
33062/TCP MySQL Classic 协议的管理端口,由 admin_port 配置,MySQL 8.0.14 起提供 
快速部署
ubuntu
https://dev.mysql.com/get/mysql-apt-config_0.8.33-1_all.deb
docker 部署
- 镜像地址:https://hub.docker.com/_/mysql
 
docker run -it -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root mysql:5.7
docker-compose 部署
[mysqld]
character-set-system=utf8mb4
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
重启
mysql 重启,如何启动/停止/重启 MySQL
- Linux
 
启动方式:
- 使用 service 启动:
service mysqld start 
- 使用 mysqld 脚本启动:
/etc/inint.d/mysqld start 
- 使用 safe_mysqld 启动:
safe_mysqld & 
停止
- 使用 service 启动:
service mysqld stop 
- 使用 mysqld 脚本启动:
/etc/inint.d/mysqld stop 
mysqladmin shutdown 
重启
- 使用 service 启动:
service mysqld restart 
- 使用 mysqld 脚本启动:
/etc/inint.d/mysqld restart 
- Windows
 
- 点击 
开始 -> 运行 (快捷键 Win+R) 
- 启动:输入 
net stop mysql 
- 停止:输入 
net start mysql 
高可用方案
高可用方案 如何选择?
  
      
          | 方案 | 
          数据一致性 | 
          自动切换 | 
          多主写入 | 
          复杂度 | 
          适用场景 | 
      
  
  
      
          | 主从复制 | 
          异步/半同步 | 
          手动 | 
          否 | 
          低 | 
          小型业务 | 
      
      
          | MHA | 
          异步/半同步 | 
          自动 | 
          否 | 
          中 | 
          中等规模业务 | 
      
      
          | Galera Cluster | 
          强一致 | 
          自动 | 
          是 | 
          高 | 
          多主写入、强一致性需求 | 
      
      
          | MySQL Group Replication | 
          强一致 | 
          自动 | 
          可选 | 
          中 | 
          官方方案,推荐新项目 | 
      
      
          | InnoDB Cluster | 
          强一致 | 
          自动 | 
          可选 | 
          高 | 
          云原生或容器化环境 | 
      
      
          | 中间件方案 | 
          依赖底层 | 
          自动 | 
          否 | 
          高 | 
          定制化需求 | 
      
      
          | 云服务商方案 | 
          依赖配置 | 
          自动 | 
          通常否 | 
          低 | 
          云上业务,免运维需求 | 
      
  
按同步类型分:
异步复制:适合对一致性要求低、追求高性能的场景(如读写分离)。 
半同步复制:平衡一致性和性能,适合金融类业务。 
Group Replication:需要高可用和强一致的集群环境。 
延迟复制:用于数据恢复或测试。 
    
    
    
    
异步复制 (Asynchronous Replication)
默认模式:MySQL 主从复制的默认模式。 
工作原理:
- 主库(Master)将事务写入二进制日志(Binary Log)后立即返回成功响应给客户端。
 
- 从库(Slave)异步拉取并应用二进制日志,可能存在延迟。
 
 
特点:
高性能:主库无需等待从库确认。 
弱一致性:主从数据可能存在短暂不一致(复制延迟)。 
风险:主库故障时可能导致数据丢失(未同步到从库的事务)。 
 
半同步复制 (Semi-Synchronous Replication)
目标:在性能和一致性之间取得平衡。 
工作原理:
- 主库提交事务时,至少等待一个从库确认已接收二进制日志(但不要求完全应用)。
 
- 如果超时未收到确认,主库会退化为异步复制。
 
 
启用方式:需安装插件(如 rpl_semi_sync_master 和 rpl_semi_sync_slave)。 
特点:
减少数据丢失风险:确保至少一个从库有最新数据。 
轻微延迟:主库需等待从库确认,但性能影响较小。 
不完全强一致:从库可能尚未应用日志。 
 
全同步复制 (Fully Synchronous Replication)
目标:强一致性(所有节点数据完全一致)。 
实现方式:
- 原生 MySQL 不直接支持全同步,需依赖第三方工具(如 
Galera Cluster)或 MySQL Group Replication。 
MySQL Group Replication(MGR):
- 基于 Paxos 协议,实现多主或单主模式。
 
- 所有事务需在组内多数节点确认后才提交。
 
 
 
特点:
强一致性:所有节点数据实时一致。 
高可用性:自动故障转移。 
性能代价:网络延迟和事务冲突可能影响吞吐量。 
 
延迟复制 (Delayed Replication)
目标:人为设置从库复制延迟(用于误操作恢复或测试)。 
配置方式:通过 CHANGE REPLICATION SOURCE TO SOURCE_DELAY=N(N 为延迟秒数)。 
特点:
- 从库延迟应用主库的二进制日志。
 
- 可用于快速回滚人为错误(如误删数据)。
 
 
多源复制 (Multi-Source Replication)
目标:一个从库同时从多个主库复制数据。 
适用场景:数据聚合分析或跨分片查询。 
配置方式:MySQL 5.7+ 支持,需为每个主库配置独立的通道(Channel)。 
组复制 (Group Replication)
实现:基于 MySQL Group Replication(MGR),提供高可用集群。 
模式:
单主模式:仅一个节点可写,其他节点自动故障切换。 
多主模式:所有节点可写,需处理事务冲突。 
 
一致性:基于 Paxos 协议的强一致性。 
监控
- 如何使用 Prometheus 监控 MySQL
- mysql_up
 
- mysql_global_status_threads_connected
 
mysql_up{${instance}} != 1 
rate(mysql_global_status_slow_queries{${instance}}[5m]) > 0