CentOS系统下MySQL单机部署全攻略

一、环境准备与前置条件

在开始MySQL单机部署之前,首先需要确保CentOS系统环境满足以下条件:

  1. 系统版本:推荐使用CentOS 7或CentOS 8,这两个版本对MySQL的支持较为完善,且社区活跃度高,遇到问题容易找到解决方案。

  2. 硬件配置:根据MySQL的使用场景,硬件配置需求各异。对于开发测试环境,4GB内存、双核CPU、50GB硬盘空间通常足够;生产环境则需根据数据量、并发量等因素进行评估,建议至少8GB内存、四核CPU、100GB以上硬盘空间,并考虑使用SSD提升I/O性能。

  3. 网络连接:确保服务器有稳定的网络连接,以便下载MySQL安装包及后续维护。

  4. 防火墙设置:如果启用了防火墙(如firewalld或iptables),需开放MySQL默认端口3306,或根据实际配置调整。

二、MySQL安装

1. 添加MySQL YUM仓库

CentOS官方仓库中的MySQL版本可能较旧,建议从MySQL官方获取最新的YUM仓库配置:

  1. # 下载MySQL YUM仓库安装包
  2. wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm # CentOS 7示例
  3. # 或对于CentOS 8
  4. # wget https://dev.mysql.com/get/mysql80-community-release-el8-1.noarch.rpm
  5. # 安装YUM仓库
  6. sudo rpm -ivh mysql80-community-release-el7-3.noarch.rpm

2. 安装MySQL服务器

安装仓库后,使用YUM命令安装MySQL服务器:

  1. sudo yum install mysql-community-server

安装过程中,YUM会自动解决依赖关系,并提示确认安装,按y继续。

3. 启动MySQL服务

安装完成后,启动MySQL服务并设置开机自启:

  1. sudo systemctl start mysqld
  2. sudo systemctl enable mysqld

三、MySQL配置

1. 初始安全设置

MySQL安装后,会生成一个临时密码,用于首次登录。查找临时密码并执行安全脚本:

  1. # 查找临时密码(通常在/var/log/mysqld.log中)
  2. sudo grep 'temporary password' /var/log/mysqld.log
  3. # 使用临时密码登录MySQL
  4. mysql -u root -p
  5. # 执行安全设置脚本(在MySQL命令行中)
  6. ALTER USER 'root'@'localhost' IDENTIFIED BY '你的新密码'; # 修改密码
  7. FLUSH PRIVILEGES;
  8. # 退出MySQL后,可运行mysql_secure_installation脚本进行进一步安全设置
  9. mysql_secure_installation

mysql_secure_installation脚本会引导你完成密码强度检查、移除匿名用户、禁止root远程登录等安全操作。

2. 配置文件调整

MySQL的主要配置文件位于/etc/my.cnf/etc/mysql/my.cnf,根据实际需求调整参数,如:

  • innodb_buffer_pool_size:InnoDB存储引擎的缓冲区大小,通常设为物理内存的50%-70%。
  • max_connections:最大连接数,根据并发需求调整。
  • log-bin:启用二进制日志,用于数据复制和恢复。

修改后,重启MySQL服务使配置生效:

  1. sudo systemctl restart mysqld

四、安全加固与性能优化

1. 安全加固

  • 限制访问:通过防火墙规则限制MySQL端口(3306)的访问,仅允许必要的IP地址访问。
  • 使用强密码:确保所有数据库用户使用复杂密码,并定期更换。
  • 最小权限原则:为应用创建专用用户,仅授予必要的数据库权限。

2. 性能优化

  • 索引优化:合理设计索引,避免过度索引导致的写入性能下降。
  • 查询优化:使用EXPLAIN分析查询执行计划,优化慢查询。
  • 定期维护:执行ANALYZE TABLEOPTIMIZE TABLE等命令维护表结构,减少碎片。

五、备份与恢复策略

1. 定期备份

使用mysqldump工具定期备份数据库:

  1. mysqldump -u 用户名 -p --all-databases > /path/to/backup/all_databases_$(date +%Y%m%d).sql

2. 恢复测试

定期测试备份文件的恢复过程,确保在数据丢失时能快速恢复。

六、监控与日志分析

1. 监控工具

使用如Prometheus+Grafana、Percona Monitoring and Management (PMM)等工具监控MySQL性能指标。

2. 日志分析

定期检查MySQL错误日志(/var/log/mysqld.log)和慢查询日志,及时发现并解决问题。

通过以上步骤,你可以在CentOS系统上成功部署并管理一个MySQL单机实例。记住,数据库的稳定运行离不开持续的监控、优化和备份策略。