首页主机资讯Ubuntu MySQL最佳实践有哪些

Ubuntu MySQL最佳实践有哪些

时间2025-11-27 00:47:03发布访客分类主机资讯浏览415
导读: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
  • 连接与高可用:应用侧使用连接池(如 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)、错误日志与慢查询日志;使用 PMMMySQL 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
ubuntu环境变量生效条件 ubuntu环境变量命名规范

游客 回复需填写必要信息