Ubuntu MySQL最佳实践有哪些
导读:Ubuntu 上部署与运维 MySQL 的最佳实践 一 安装与基础安全 使用 APT 官方仓库或系统仓库安装,保持版本更新;安装后立即执行 mysql_secure_installation 完成基础加固(设置 root 强密码、移除匿名...
Ubuntu 上部署与运维 MySQL 的最佳实践
一 安装与基础安全
- 使用 APT 官方仓库或系统仓库安装,保持版本更新;安装后立即执行 mysql_secure_installation 完成基础加固(设置 root 强密码、移除匿名用户、禁止远程 root 登录、删除测试库、重载权限)。
- 管理服务与自启:sudo systemctl start|enable|status mysql;远程访问需在 /etc/mysql/mysql.conf.d/mysqld.cnf 中设置 bind-address=0.0.0.0 并重启;不建议直接开放 root 远程,改为创建最小权限专用账号并限制来源网段。
- 示例(创建业务账号与库):
- CREATE DATABASE appdb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
- CREATE USER ‘appuser’@‘10.0.0.%’ IDENTIFIED BY ‘StrongPass!’;
- GRANT SELECT,INSERT,UPDATE,DELETE ON appdb.* TO ‘appuser’@‘10.0.0.%’;
- FLUSH PRIVILEGES;
- 备份策略:日常使用 mysqldump 做逻辑备份,关键业务增加物理/增量备份与定期恢复演练。
二 配置与性能调优
- 关键内存与 I/O(示例为 16GB 内存,按负载调整):
- innodb_buffer_pool_size:建议为物理内存的50%–70%(如 8–12G),OLTP 可适当上调;
- innodb_log_file_size:建议 256M–1G,大事务/高写入可适当增大;
- innodb_flush_log_at_trx_commit:1(强一致,默认);可接受更高写入吞吐时设为 2;仅在可容忍数据丢失的场景考虑 0;
- innodb_flush_method:O_DIRECT(绕过 OS 页缓存,减少双缓冲);
- innodb_io_capacity / innodb_io_capacity_max:结合 SSD/NVMe 设置为 2000/4000 或更高;
- max_connections:结合应用与内存,通常 200–1000,避免过大导致线程争用与内存压力;
- 字符集:character-set-server/collation-server 使用 utf8mb4。
- 示例片段(/etc/mysql/mysql.conf.d/mysqld.cnf):
- [mysqld]
- innodb_buffer_pool_size=8G
- innodb_log_file_size=512M
- innodb_flush_log_at_trx_commit=1
- innodb_flush_method=O_DIRECT
- innodb_io_capacity=2000
- innodb_io_capacity_max=4000
- max_connections=500
- character-set-server=utf8mb4
- collation-server=utf8mb4_unicode_ci
- [mysqld]
- 连接与高可用:应用侧使用连接池(如 HikariCP、c3p0),避免频繁建连;读多写少场景引入主从复制与读写分离;定期用 MySQLTuner 与 Performance Schema 做配置与 SQL 体检。
三 查询与索引设计
- 使用 EXPLAIN 分析执行计划,避免 SELECT ,仅返回必要列;为高频 WHERE/JOIN/ORDER BY 列建立索引,合理设计复合索引并遵循最左前缀*原则。
- 控制慢查询:开启 slow_query_log,设置 long_query_time(如 1s),定期分析并用 EXPLAIN 优化;减少临时表与文件排序的产生。
- 维护与统计:定期执行 ANALYZE TABLE 更新统计信息;对高碎片表按需执行 OPTIMIZE TABLE(InnoDB 多为在线 DDL,仍应在低峰期评估影响)。
四 运维与监控
- 资源与内核:优先使用 SSD,合理规划 RAID10/RAID5;按需调整 TCP 与文件句柄限制(如 net.core.somaxconn、fs.file-max),避免连接耗尽与端口枯竭。
- 监控与诊断:持续观察 SHOW PROCESSLIST、关键 SHOW STATUS(如 InnoDB_buffer_pool_wait_free)、错误日志与慢查询日志;使用 PMM、MySQL Workbench 或 Performance Schema 建立指标与告警基线。
- 变更与回滚:任何参数变更先在测试环境验证,变更窗口内保留回滚方案与备份;大版本升级遵循官方升级路径并充分回归。
五 安全加固清单
- 账户与权限:禁止 root 远程;按“最小权限”原则创建业务账号并限制来源 IP/CIDR;对敏感库表细化权限。
- 网络与加密:仅开放必要端口(默认 3306),在可信网络或 TLS 之上暴露服务;限制数据库主机的防火墙入站规则。
- 数据与配置:保护 my.cnf 与备份文件权限;定期轮换 密码/密钥;审计与追踪关键操作(如 general log 谨慎开启)。
- 安全基线:运行 mysql_secure_installation 后,复核匿名用户、测试库、远程 root、权限表与密码强度策略。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Ubuntu MySQL最佳实践有哪些
本文地址: https://pptw.com/jishu/757317.html
