一、环境准备与前置检查
1.1 系统版本兼容性验证
MySQL官方推荐使用CentOS 7/8系列系统,需确认内核版本不低于3.10。通过uname -r命令查看内核版本,建议使用最新稳定版CentOS以获得更好的兼容性。对于生产环境,推荐使用CentOS 7.9或CentOS 8.5 LTS版本,这两个版本经过长期验证,稳定性较高。
1.2 依赖库安装
执行以下命令安装基础依赖:
yum install -y gcc gcc-c++ make cmake ncurses-devel bison openssl-devel
其中,ncurses-devel是MySQL编译必需的终端控制库,openssl-devel提供SSL加密支持。建议使用yum clean all清理缓存后再执行安装,确保获取最新版本。
1.3 防火墙配置
根据安全需求选择配置方案:
- 临时关闭防火墙(测试环境):
systemctl stop firewalldsystemctl disable firewalld
- 生产环境配置(推荐):
firewall-cmd --permanent --add-port=3306/tcpfirewall-cmd --reload
同时建议配置SELinux为permissive模式:
setenforce 0,或通过semanage port -a -t mysql_port_t -p tcp 3306添加端口策略。
二、MySQL安装与配置
2.1 官方源安装
推荐使用MySQL官方YUM仓库:
wget https://dev.mysql.com/get/mysql80-community-release-el7-6.noarch.rpmrpm -ivh mysql80-community-release-el7-6.noarch.rpmyum install -y mysql-community-server
对于需要特定版本的用户,可通过修改/etc/yum.repos.d/mysql-community.repo文件中的enabled=1/0参数控制版本。
2.2 源码编译安装(高级用户)
对于需要定制化配置的场景,可采用源码编译:
wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.33.tar.gztar -zxvf mysql-8.0.33.tar.gzcd mysql-8.0.33cmake . -DDOWNLOAD_BOOST=1 -DWITH_BOOST=./boost \-DDEFAULT_CHARSET=utf8mb4 \-DDEFAULT_COLLATION=utf8mb4_general_ci \-DENABLED_LOCAL_INFILE=1make -j$(nproc) && make install
关键参数说明:
-DDOWNLOAD_BOOST:自动下载Boost库(MySQL 8.0+必需)-DDEFAULT_CHARSET:设置默认字符集为utf8mb4以支持完整Unicode-j$(nproc):使用所有CPU核心加速编译
2.3 初始化配置
执行安全初始化:
mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/var/lib/mysql
生成临时密码后,修改配置文件/etc/my.cnf:
[mysqld]datadir=/var/lib/mysqlsocket=/var/lib/mysql/mysql.socklog-error=/var/log/mysqld.logpid-file=/var/run/mysqld/mysqld.pid# 性能优化参数innodb_buffer_pool_size=4G # 建议为物理内存的50-70%innodb_log_file_size=512Mmax_connections=500
三、安全加固与最佳实践
3.1 初始安全设置
运行安全脚本:
mysql_secure_installation
按向导完成:
- 设置root密码(建议使用20位以上混合密码)
- 移除匿名用户
- 禁止root远程登录
- 移除测试数据库
- 刷新权限表
3.2 用户权限管理
创建专用应用账户:
CREATE USER 'app_user'@'192.168.1.%' IDENTIFIED BY 'StrongPassword123!';GRANT SELECT,INSERT,UPDATE,DELETE ON app_db.* TO 'app_user'@'192.168.1.%';FLUSH PRIVILEGES;
建议遵循最小权限原则,避免使用%通配符。
3.3 备份策略
配置每日自动备份:
# 创建备份脚本 /usr/local/bin/mysql_backup.sh#!/bin/bashBACKUP_DIR=/backup/mysqlDATE=$(date +%Y%m%d)mysqldump -uroot -p'密码' --single-transaction --routines --triggers --all-databases > $BACKUP_DIR/full_$DATE.sqlfind $BACKUP_DIR -name "*.sql" -mtime +30 -exec rm {} \;
添加cron任务:
(crontab -l 2>/dev/null; echo "0 2 * * * /usr/local/bin/mysql_backup.sh") | crontab -
四、性能监控与调优
4.1 基础监控
安装sysstat包:
yum install -y sysstat
配置监控项:
# /etc/default/sysstatENABLED="true"
常用监控命令:
# 查看连接数mysqladmin -uroot -p status# 查看慢查询mysqldumpslow -s t /var/log/mysql/mysql-slow.log
4.2 参数调优建议
根据服务器配置调整:
- 内存4GB以下:
innodb_buffer_pool_size=1Gkey_buffer_size=256M
- 内存16GB以上:
innodb_buffer_pool_size=12Ginnodb_buffer_pool_instances=8table_open_cache=4000
4.3 常见问题处理
4.3.1 启动失败排查
- 查看错误日志:
tail -100 /var/log/mysqld.log
- 检查端口占用:
netstat -tulnp | grep 3306
- 修复数据目录权限:
chown -R mysql:mysql /var/lib/mysql
4.3.2 性能瓶颈分析
使用pt-query-digest分析慢查询:
pt-query-digest /var/log/mysql/mysql-slow.log
针对高频查询优化索引:
EXPLAIN SELECT * FROM orders WHERE customer_id=123;ALTER TABLE orders ADD INDEX idx_customer(customer_id);
五、升级与维护
5.1 版本升级流程
- 备份数据:
mysqldump -uroot -p --all-databases > full_backup.sql
- 升级软件包:
yum update mysql-community-server
- 执行升级检查:
mysql_upgrade -uroot -p
5.2 日志管理
配置日志轮转:
# /etc/logrotate.d/mysqld/var/log/mysqld.log {dailyrotate 7missingokcompressdelaycompressnotifemptycreate 640 mysql admsharedscriptspostrotate/bin/kill -HUP `cat /var/run/mysqld/mysqld.pid 2>/dev/null` 2>/dev/null || trueendscript}
通过以上系统化的部署方案,开发者可以在CentOS环境下快速构建稳定高效的MySQL服务。建议定期(每季度)进行安全审计和性能调优,确保数据库服务持续满足业务需求。对于关键业务系统,建议采用主从复制架构提升可用性,相关配置可参考MySQL官方文档的Replication章节。