1. 环境准备与基础检查
在CentOS系统上安装MySQL前,需要做好以下准备工作。我通常会先检查系统版本和架构,这直接影响后续的安装方式选择:
cat /etc/redhat-release # 查看CentOS版本 uname -m # 查看系统架构(x86_64/aarch64)对于CentOS 7/8和不同架构的设备,MySQL的安装包和依赖会有差异。特别提醒:如果系统是全新安装的,建议先更新基础组件:
yum update -y && yum install -y epel-release重要提示:生产环境中建议在非高峰时段执行更新操作,避免影响线上服务。我曾遇到过因未更新基础依赖导致MySQL安装失败的案例,浪费了两小时排查时间。
2. YUM源配置最佳实践
2.1 国内源加速方案
由于网络原因,直接使用默认源可能速度较慢。我习惯替换为阿里云镜像源(以CentOS 7为例):
# 备份原有源 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup # 下载阿里云源 wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo # 清理并重建缓存 yum clean all && yum makecache对于CentOS 8或Rocky Linux用户,需要注意源格式的变化。最近在给某企业部署时,就因版本匹配问题导致软件包冲突。
2.2 添加MySQL专用源
官方推荐通过MySQL YUM Repository安装最新稳定版:
# 安装RPM配置工具 yum install -y https://dev.mysql.com/get/mysql80-community-release-el7-6.noarch.rpm # 验证源是否添加成功 yum repolist enabled | grep "mysql.*-community.*"如果只需要特定版本(如5.7),可以这样修改:
# 禁用8.0版本源 yum-config-manager --disable mysql80-community # 启用5.7版本源 yum-config-manager --enable mysql57-community3. MySQL安装核心步骤
3.1 通过YUM安装服务端
执行以下命令安装MySQL服务器:
yum install -y mysql-community-server安装过程中常见问题处理:
- 出现"Public key for mysql-community-server-8.0.36-1.el7.x86_64.rpm is not installed"错误时:
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022 - 依赖冲突时,可尝试:
yum install -y mysql-community-server --nogpgcheck
3.2 关键目录结构说明
安装完成后需要了解的重要路径:
- 配置文件:/etc/my.cnf
- 数据目录:/var/lib/mysql
- 日志文件:/var/log/mysqld.log
- 套接字文件:/var/run/mysqld/mysqld.sock
4. 服务初始化与安全配置
4.1 启动服务与状态检查
systemctl start mysqld systemctl enable mysqld systemctl status mysqld首次启动时会自动初始化,在日志中查找临时密码:
grep 'temporary password' /var/log/mysqld.log4.2 运行安全脚本
执行安全加固向导:
mysql_secure_installation根据提示完成以下操作:
- 修改root密码(需满足复杂度要求)
- 移除匿名用户
- 禁止root远程登录
- 移除测试数据库
- 重新加载权限表
经验之谈:建议在此阶段创建专用管理账号而非直接使用root,我通常会给团队每个成员创建独立账号并限制权限。
5. 基础性能调优
5.1 配置文件优化
编辑/etc/my.cnf,添加基础优化参数:
[mysqld] # 内存配置(根据服务器实际内存调整) innodb_buffer_pool_size = 1G key_buffer_size = 256M query_cache_size = 64M # 连接配置 max_connections = 200 thread_cache_size = 10 # 日志配置 slow_query_log = 1 long_query_time = 2 log_queries_not_using_indexes = 15.2 防火墙配置
开放3306端口:
firewall-cmd --zone=public --add-port=3306/tcp --permanent firewall-cmd --reload对于云服务器,还需要在安全组规则中添加相应条目。
6. 日常运维关键命令
6.1 服务管理命令集
# 服务控制 systemctl restart mysqld # 重启服务 systemctl stop mysqld # 停止服务 systemctl status mysqld # 查看状态 # 查看运行进程 ps -ef | grep mysql # 查看监听端口 netstat -tulnp | grep mysql6.2 数据库维护命令
# 备份所有数据库 mysqldump -u root -p --all-databases > full_backup.sql # 修复表 mysqlcheck -u root -p --auto-repair --optimize --all-databases7. 常见问题解决方案
7.1 安装失败排查流程
- 检查错误日志:
journalctl -xe tail -n 100 /var/log/mysqld.log - 验证依赖是否完整:
yum deplist mysql-community-server - 检查SELinux状态:
sestatus # 临时禁用 setenforce 0
7.2 连接问题处理
典型错误:"ERROR 1130 (HY000): Host 'xxx.xxx.xxx.xxx' is not allowed to connect"
解决方法:
-- 登录MySQL后执行 CREATE USER 'username'@'%' IDENTIFIED BY 'complex_password'; GRANT ALL PRIVILEGES ON *.* TO 'username'@'%'; FLUSH PRIVILEGES;8. 版本升级注意事项
当需要升级MySQL版本时,建议操作流程:
- 完整备份所有数据库
- 停止MySQL服务
- 移除旧版本:
yum remove mysql-community-server - 清理残留文件:
rm -rf /var/lib/mysql - 安装新版本后需要重新初始化数据目录
血泪教训:去年有次升级未完整备份,导致业务数据部分丢失。现在我的团队严格执行"备份-验证-操作"的流程。
9. 监控与性能分析
9.1 基础监控命令
-- 查看运行状态 SHOW STATUS; -- 查看变量配置 SHOW VARIABLES; -- 查看进程列表 SHOW PROCESSLIST;9.2 慢查询分析
# 安装分析工具 yum install -y pt-query-digest # 分析慢查询日志 pt-query-digest /var/log/mysql-slow.log10. 高可用方案选型建议
根据业务需求可选择不同方案:
- 主从复制(Master-Slave)
- 配置简单
- 适合读多写少场景
- MySQL Group Replication
- 原生集群方案
- 支持多主写入
- Galera Cluster
- 同步复制
- 强一致性保证
具体实施时,需要根据业务特点和数据一致性要求进行选择。我们金融项目最终采用了Group Replication方案,虽然配置复杂些,但数据安全性更高。