MySQL,作为一款开源的关系型数据库管理系统(RDBMS),凭借其高可靠性、高性能和易用性,在众多企业应用中占据了一席之地
而CentOS,作为一个稳定、安全的Linux发行版,以其强大的社区支持和广泛的兼容性,成为部署MySQL服务器的理想选择
本文将详细介绍如何在CentOS系统上搭建并优化MySQL服务器,以确保其高效、稳定运行
一、准备工作 1. 系统环境 首先,确保你的服务器运行的是CentOS 7或CentOS 8
虽然CentOS Stream作为CentOS 8之后的替代品提供了最新的软件包,但出于稳定性和兼容性的考虑,本文将以CentOS 7为例进行说明
2. 更新系统 在安装任何新软件之前,建议先更新系统,以确保所有软件包都是最新的
使用以下命令: bash sudo yum update -y 3. 设置防火墙 MySQL默认监听3306端口,确保防火墙允许此端口的访问
如果你使用的是`firewalld`,可以执行以下命令: bash sudo firewall-cmd --permanent --add-port=3306/tcp sudo firewall-cmd --reload 二、安装MySQL 1. 添加MySQL Yum存储库 MySQL官方提供了一个Yum存储库,从中可以直接下载并安装最新版本的MySQL
首先,下载并安装MySQL Yum存储库的RPM包: bash wget https://dev.mysql.com/get/mysql80-community-release-el7-5.noarch.rpm sudo rpm -ivh mysql80-community-release-el7-5.noarch.rpm 2. 安装MySQL服务器 使用Yum包管理器安装MySQL服务器: bash sudo yum install -y mysql-server 3. 启动并设置开机自启 安装完成后,启动MySQL服务并设置其在系统启动时自动启动: bash sudo systemctl start mysqld sudo systemctl enable mysqld 4. 获取初始密码 MySQL安装完成后,会自动生成一个临时密码
你可以在`/var/log/mysqld.log`文件中找到这个密码: bash sudo grep temporary password /var/log/mysqld.log 记下这个密码,因为首次登录MySQL时需要用到
三、安全配置 1. 首次登录并修改密码 使用找到的临时密码登录MySQL: bash mysql -u root -p 登录后,系统会提示你更改密码
MySQL 8.0引入了更强的密码策略,建议使用包含大小写字母、数字和特殊字符的复杂密码: sql ALTER USER root@localhost IDENTIFIED BY NewStrongPassword!; 2. 运行安全脚本 MySQL提供了一个安全安装脚本`mysql_secure_installation`,它可以帮助你执行一系列安全相关的操作,如删除匿名用户、禁止远程root登录、删除测试数据库等
运行该脚本: bash sudo mysql_secure_installation 按照提示进行操作,增强MySQL的安全性
四、基本配置与优化 1. 配置文件修改 MySQL的主要配置文件是`/etc/my.cnf`(或`/etc/mysql/my.cnf`,取决于安装路径)
你可以根据服务器的硬件资源和应用需求调整配置参数
以下是一些常见的优化项: -innodb_buffer_pool_size:设置为物理内存的70%-80%,用于缓存数据和索引,对InnoDB表性能影响巨大
-query_cache_size:在MySQL 8.0中已被移除,但早期版本中可根据查询缓存命中率调整
-max_connections:根据应用并发需求设置最大连接数
-table_open_cache:增加打开表的数量,适用于有大量表的数据库
示例配置: ini 【mysqld】 innodb_buffer_pool_size = 4G max_connections = 500 table_open_cache = 2000 修改配置后,重启MySQL服务使更改生效: bash sudo systemctl restart mysqld 2. 优化查询 -使用索引:确保对频繁查询的列建立索引,但要避免过多索引影响写性能
-避免SELECT :只选择需要的列,减少数据传输量
-使用EXPLAIN分析查询:通过EXPLAIN命令查看查询执行计划,优化查询路径
3. 日志与监控 -启用慢查询日志:记录执行时间超过指定阈值的查询,便于后续优化
-设置错误日志:记录MySQL运行过程中的错误信息
-使用监控工具:如Prometheus+Grafana、Zabbix等,实时监控MySQL性能指标,及时发现并解决潜在问题
五、备份与恢复 1. 数据备份 定期备份数据库是防止数据丢失的关键
MySQL提供了多种备份方法,包括逻辑备份(mysqldump)和物理备份(如Percona XtraBackup)
-mysqldump:适用于小型数据库,可以生成SQL脚本,便于迁移和恢复
bash mysqldump -u root -p --all-databases > all_databases_backup.sql -物理备份:适用于大型数据库,速度快,恢复时间短
推荐使用Percona XtraBackup,它支持在线备份,不中断数据库服务
2. 数据恢复 -从mysqldump恢复: bash mysql -u root -p < all_databases_backup.sql -从物理备份恢复:根据使用的备份工具的具体步骤进行恢复,通常涉及准备(prepare)和应用(apply)日志阶段
六、高可用与扩展性 1. 主从复制 设置MySQL主从复制可以实现读写分离,提高系统吞吐量和可用性
配置过程涉及在主服务器上启用二进制日志,从服务器配置中继日志并指向主服务器,最后启动复制进程
2. MySQL Group