Skip to content
返回部署

部署 MySQL

自托管 MySQL,Docker、复制和生产调优。

平台高级

为什么

自托管 MySQL 控制存储引擎、复制拓扑和配置调优。Group Replication 或 InnoDB Cluster 提供 HA 自动故障转移。

平台即服务采用率 2024 年增长 24%,团队从虚拟机管理转向 git push 部署。the cloud infrastructure market reached $330B in 2024, growing 22% year-over-year (Synergy Research),PaaS 层捕获了大多数新工作负载。

何时使用

遗留应用、特定存储需求和大规模成本用自托管 MySQL。托管优先 PlanetScale/RDS。

如何做

1. Docker — mysql:8 镜像加 volume 2. 配置 — my.cnf 调优(innodb_buffer_pool_size、max_connections) 3. 初始化 — init.sql 放 docker-entrypoint-initdb.d 4. 备份 — mysqldump 或 mysqlbackup(企业) 5. 复制 — source + replica 或 Group Replication 6. HA — InnoDB Cluster 加 MySQL Router 7. 监控 — performance_schema、慢查询日志

示例

# docker-compose.yml services: mysql: image: mysql:8 environment: MYSQL_ROOT_PASSWORD: secret MYSQL_DATABASE: mydb volumes: - mysqldata:/var/lib/mysql - ./my.cnf:/etc/mysql/conf.d/my.cnf command: --default-authentication-plugin=mysql_native_password volumes: mysqldata: # my.cnf [mysqld] innodb_buffer_pool_size = 1G max_connections = 200 slow_query_log = 1 long_query_time = 2 # 备份 docker exec mydb mysqldump -u root -p mydb | gzip > backup.sql.gz

常见问题

  • ⚠innodb_buffer_pool_size 过低 — 默认 128MB,专用 DB 设 RAM 70%
  • ⚠认证插件错误 — MySQL 8 默认 caching_sha2,旧客户端设 native_password
  • ⚠环境间配置漂移 — 使用基础设施即代码(Terraform/Pulumi)保持 dev/staging/prod 一致

最佳实践

  • ✓innodb_buffer_pool_size 设 RAM 70% — 最大 InnoDB 性能提升
  • ✓HA 用 Group Replication — 自动故障转移、多源
  • ✓设置健康检查和优雅关闭 — 处理 SIGTERM 以在退出前排空进行中的请求

常见问题解答