CentOS环境下MySQL最佳实践指南
rpm -qa | grep mariadb查找相关包,再用rpm -e --nodeps mariadb-libs-版本号卸载。mysql80-community-release-el7-1.noarch.rpm),通过rpm -ivh安装并刷新Yum缓存(yum clean all; yum repolist),确保获取最新稳定版本。mysql_secure_installation脚本完成以下操作:设置root用户强密码(从/var/log/mysqld.log获取临时密码)、删除匿名用户、禁止root远程登录、移除测试数据库,强化初始安全性。/etc/my.cnf,建议将自定义配置存放在/etc/my.cnf.d/目录(如/etc/my.cnf.d/mysql.conf),避免直接修改主文件被包管理工具更新覆盖。cp /etc/my.cnf /etc/my.cnf.bak)后再修改,防止配置错误导致服务无法启动。innodb_buffer_pool_size设置为系统总内存的50%-80%(如16G内存设为12G),用于缓存数据和索引,显著提升查询性能;max_connections根据并发需求调整(如500-1000),避免过高导致连接耗尽。innodb_log_file_size设置为128M-512M(如256M),innodb_log_buffer_size设置为64M-256M,平衡事务提交性能与数据安全性;innodb_flush_log_at_trx_commit设为2(牺牲少量持久性换取性能,适用于非金融场景)。character_set_server = utf8mb4,支持完整的Unicode字符(如emoji),避免乱码问题。firewall-cmd开放MySQL端口(默认3306),并设置为永久生效:firewall-cmd --permanent --zone=public --add-port=3306/tcp; firewall-cmd --reload。若仅需本地访问,可将bind-address设置为127.0.0.1,禁止远程连接。GRANT语句限制远程IP访问(如GRANT ALL PRIVILEGES ON 数据库名.* TO '用户名'@'远程IP' IDENTIFIED BY '密码'),避免未授权访问。yum update mysql-community-server)。innodb_buffer_pool_size提高缓存命中率;WHERE、JOIN、ORDER BY的列创建索引(如CREATE INDEX idx_user_id ON orders(user_id));SELECT *(只查询所需列)、减少多表JOIN(如拆分大表)、使用LIMIT分页(如SELECT * FROM users LIMIT 10 OFFSET 20);slow_query_log = 1,long_query_time = 2),通过EXPLAIN命令查看执行计划,找出性能瓶颈(如缺少索引、全表扫描)。OPTIMIZE TABLE命令整理表碎片(如OPTIMIZE TABLE large_table),回收空间并提升查询速度;ANALYZE TABLE更新表统计信息(如ANALYZE TABLE user_info),帮助优化器选择更优的执行计划。performance_schema监控数据库性能(如查询延迟、锁等待);MySQLTuner(分析配置瓶颈)、Percona Toolkit(性能调优与故障排查)、Prometheus+Grafana(可视化监控指标)。mysqldump(逻辑备份)或xtrabackup(物理备份);