CentOS环境下MySQL单机部署全流程指南

一、环境准备与前置检查

1.1 系统版本兼容性验证

MySQL官方推荐使用CentOS 7/8系列系统,需确认内核版本不低于3.10。通过uname -r命令查看内核版本,建议使用最新稳定版CentOS以获得更好的兼容性。对于生产环境,推荐使用CentOS 7.9或CentOS 8.5 LTS版本,这两个版本经过长期验证,稳定性较高。

1.2 依赖库安装

执行以下命令安装基础依赖:

  1. yum install -y gcc gcc-c++ make cmake ncurses-devel bison openssl-devel

其中,ncurses-devel是MySQL编译必需的终端控制库,openssl-devel提供SSL加密支持。建议使用yum clean all清理缓存后再执行安装,确保获取最新版本。

1.3 防火墙配置

根据安全需求选择配置方案:

  • 临时关闭防火墙(测试环境):
    1. systemctl stop firewalld
    2. systemctl disable firewalld
  • 生产环境配置(推荐):
    1. firewall-cmd --permanent --add-port=3306/tcp
    2. firewall-cmd --reload

    同时建议配置SELinux为permissive模式:setenforce 0,或通过semanage port -a -t mysql_port_t -p tcp 3306添加端口策略。

二、MySQL安装与配置

2.1 官方源安装

推荐使用MySQL官方YUM仓库:

  1. wget https://dev.mysql.com/get/mysql80-community-release-el7-6.noarch.rpm
  2. rpm -ivh mysql80-community-release-el7-6.noarch.rpm
  3. yum install -y mysql-community-server

对于需要特定版本的用户,可通过修改/etc/yum.repos.d/mysql-community.repo文件中的enabled=1/0参数控制版本。

2.2 源码编译安装(高级用户)

对于需要定制化配置的场景,可采用源码编译:

  1. wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.33.tar.gz
  2. tar -zxvf mysql-8.0.33.tar.gz
  3. cd mysql-8.0.33
  4. cmake . -DDOWNLOAD_BOOST=1 -DWITH_BOOST=./boost \
  5. -DDEFAULT_CHARSET=utf8mb4 \
  6. -DDEFAULT_COLLATION=utf8mb4_general_ci \
  7. -DENABLED_LOCAL_INFILE=1
  8. make -j$(nproc) && make install

关键参数说明:

  • -DDOWNLOAD_BOOST:自动下载Boost库(MySQL 8.0+必需)
  • -DDEFAULT_CHARSET:设置默认字符集为utf8mb4以支持完整Unicode
  • -j$(nproc):使用所有CPU核心加速编译

2.3 初始化配置

执行安全初始化:

  1. mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/var/lib/mysql

生成临时密码后,修改配置文件/etc/my.cnf

  1. [mysqld]
  2. datadir=/var/lib/mysql
  3. socket=/var/lib/mysql/mysql.sock
  4. log-error=/var/log/mysqld.log
  5. pid-file=/var/run/mysqld/mysqld.pid
  6. # 性能优化参数
  7. innodb_buffer_pool_size=4G # 建议为物理内存的50-70%
  8. innodb_log_file_size=512M
  9. max_connections=500

三、安全加固与最佳实践

3.1 初始安全设置

运行安全脚本:

  1. mysql_secure_installation

按向导完成:

  1. 设置root密码(建议使用20位以上混合密码)
  2. 移除匿名用户
  3. 禁止root远程登录
  4. 移除测试数据库
  5. 刷新权限表

3.2 用户权限管理

创建专用应用账户:

  1. CREATE USER 'app_user'@'192.168.1.%' IDENTIFIED BY 'StrongPassword123!';
  2. GRANT SELECT,INSERT,UPDATE,DELETE ON app_db.* TO 'app_user'@'192.168.1.%';
  3. FLUSH PRIVILEGES;

建议遵循最小权限原则,避免使用%通配符。

3.3 备份策略

配置每日自动备份:

  1. # 创建备份脚本 /usr/local/bin/mysql_backup.sh
  2. #!/bin/bash
  3. BACKUP_DIR=/backup/mysql
  4. DATE=$(date +%Y%m%d)
  5. mysqldump -uroot -p'密码' --single-transaction --routines --triggers --all-databases > $BACKUP_DIR/full_$DATE.sql
  6. find $BACKUP_DIR -name "*.sql" -mtime +30 -exec rm {} \;

添加cron任务:

  1. (crontab -l 2>/dev/null; echo "0 2 * * * /usr/local/bin/mysql_backup.sh") | crontab -

四、性能监控与调优

4.1 基础监控

安装sysstat包:

  1. yum install -y sysstat

配置监控项:

  1. # /etc/default/sysstat
  2. ENABLED="true"

常用监控命令:

  1. # 查看连接数
  2. mysqladmin -uroot -p status
  3. # 查看慢查询
  4. mysqldumpslow -s t /var/log/mysql/mysql-slow.log

4.2 参数调优建议

根据服务器配置调整:

  • 内存4GB以下:
    1. innodb_buffer_pool_size=1G
    2. key_buffer_size=256M
  • 内存16GB以上:
    1. innodb_buffer_pool_size=12G
    2. innodb_buffer_pool_instances=8
    3. table_open_cache=4000

4.3 常见问题处理

4.3.1 启动失败排查

  1. 查看错误日志:
    1. tail -100 /var/log/mysqld.log
  2. 检查端口占用:
    1. netstat -tulnp | grep 3306
  3. 修复数据目录权限:
    1. chown -R mysql:mysql /var/lib/mysql

4.3.2 性能瓶颈分析

使用pt-query-digest分析慢查询:

  1. pt-query-digest /var/log/mysql/mysql-slow.log

针对高频查询优化索引:

  1. EXPLAIN SELECT * FROM orders WHERE customer_id=123;
  2. ALTER TABLE orders ADD INDEX idx_customer(customer_id);

五、升级与维护

5.1 版本升级流程

  1. 备份数据:
    1. mysqldump -uroot -p --all-databases > full_backup.sql
  2. 升级软件包:
    1. yum update mysql-community-server
  3. 执行升级检查:
    1. mysql_upgrade -uroot -p

5.2 日志管理

配置日志轮转:

  1. # /etc/logrotate.d/mysqld
  2. /var/log/mysqld.log {
  3. daily
  4. rotate 7
  5. missingok
  6. compress
  7. delaycompress
  8. notifempty
  9. create 640 mysql adm
  10. sharedscripts
  11. postrotate
  12. /bin/kill -HUP `cat /var/run/mysqld/mysqld.pid 2>/dev/null` 2>/dev/null || true
  13. endscript
  14. }

通过以上系统化的部署方案,开发者可以在CentOS环境下快速构建稳定高效的MySQL服务。建议定期(每季度)进行安全审计和性能调优,确保数据库服务持续满足业务需求。对于关键业务系统,建议采用主从复制架构提升可用性,相关配置可参考MySQL官方文档的Replication章节。