1. 环境准备与版本确认在华为欧拉OpenEuler系统上部署MySQL 8之前首先要确保系统环境适配。OpenEuler作为华为推出的企业级Linux发行版与CentOS 8保持高度兼容性。我曾在多个生产环境中验证过OpenEuler 21.09/22.03 LTS版本与MySQL 8.0.33的兼容性最佳。系统版本检查cat /etc/os-release典型输出应包含NAMEopenEuler VERSION22.03 LTS IDopenEulerCPU架构确认lscpu特别注意Architecture字段x86_64与aarch64的安装包不可混用。最近在某个政务云项目就遇到团队误下载x86包导致安装失败的情况。依赖包检查rpm -q libaio numactl-libs若未安装需提前准备好这些基础依赖的离线包。建议建立本地yum源仓库我在某金融机构项目中使用createrepo工具构建的本地仓库成功解决了复杂依赖问题。2. 离线安装包获取与处理离线环境部署的核心难点在于依赖关系处理。经过多次实践我总结出以下可靠方案官方下载策略访问MySQL官方仓库https://dev.mysql.com/downloads/mysql/选择对应版本如Red Hat Enterprise Linux 8 / CentOS 8下载完整的RPM Bundle包约600MB关键安装包清单mysql-community-common-8.0.33 mysql-community-client-plugins-8.0.33 mysql-community-libs-8.0.33 mysql-community-client-8.0.33 mysql-community-icu-data-files-8.0.33 mysql-community-server-8.0.33传输技巧使用scp或SFTP工具上传至目标服务器大文件传输建议分卷压缩split -b 100M某次军工项目因安全限制我们甚至采用光盘刻录方式传递安装包3. 安装流程与依赖解决解压安装包tar -xvf mysql-8.0.33-1.el8.x86_64.rpm-bundle.tar安装顺序与技巧rpm -ivh mysql-community-common-8.0.33-1.el8.x86_64.rpm rpm -ivh mysql-community-client-plugins-8.0.33-1.el8.x86_64.rpm rpm -ivh mysql-community-libs-8.0.33-1.el8.x86_64.rpm rpm -ivh mysql-community-client-8.0.33-1.el8.x86_64.rpm rpm -ivh mysql-community-icu-data-files-8.0.33-1.el8.x86_64.rpm rpm -ivh mysql-community-server-8.0.33-1.el8.x86_64.rpm常见问题处理依赖冲突时添加--nodeps --force参数慎用缺少libssl时需下载openssl-1.1.1k离线包某次遇到libcrypto冲突通过rpm -e --nodeps移除冲突包后解决4. 生产级配置优化目录规划建议mkdir -p /data/mysql/{data,logs/{binlog,slowlog}} chown -R mysql:mysql /data/mysqlmy.cnf核心配置适用于8C32G服务器[mysqld] # 基础设置 datadir/data/mysql/data socket/data/mysql/mysql.sock log-error/data/mysql/logs/mysql.log pid-file/var/run/mysqld/mysqld.pid # 字符集 character-set-serverutf8mb4 collation-serverutf8mb4_general_ci # InnoDB优化 innodb_buffer_pool_size16G innodb_log_file_size2G innodb_flush_methodO_DIRECT innodb_io_capacity2000 # 连接控制 max_connections500 thread_cache_size100 # 日志配置 slow_query_log1 slow_query_log_file/data/mysql/logs/slowlog/mysql-slow.log long_query_time1 log-bin/data/mysql/logs/binlog/mysql-bin binlog_formatROW binlog_expire_logs_seconds604800安全加固措施初始化后立即修改root密码ALTER USER rootlocalhost IDENTIFIED BY ComplexPassword123!;创建专用管理账号CREATE USER dba_admin% IDENTIFIED BY AdminSecure456; GRANT ALL PRIVILEGES ON *.* TO dba_admin% WITH GRANT OPTION;5. 初始化与故障排查数据目录初始化mysqld --initialize --usermysql --datadir/data/mysql/data获取临时密码grep temporary password /data/mysql/logs/mysql.log常见错误解决方案目录权限问题chown -R mysql:mysql /data/mysql chmod 750 /data/mysqlSELinux导致的问题# 临时关闭 setenforce 0 # 永久关闭 vim /etc/selinux/config SELINUXdisabled服务启动失败排查journalctl -xe -u mysqld tail -n 100 /data/mysql/logs/mysql.log6. 备份方案与日常维护逻辑备份脚本#!/bin/bash BACKUP_DIR/backup/mysql DATE$(date %F) MYSQL_CMDmysql -uroot -pComplexPassword123! MYSQLDUMP_CMDmysqldump -uroot -pComplexPassword123! --single-transaction mkdir -p $BACKUP_DIR/$DATE for DB in $($MYSQL_CMD -e SHOW DATABASES | grep -Ev (Database|schema|mysql|sys)); do $MYSQLDUMP_CMD $DB | gzip $BACKUP_DIR/$DATE/$DB.sql.gz done # 清理30天前备份 find $BACKUP_DIR -type d -mtime 30 -exec rm -rf {} \;定时任务配置0 2 * * * /usr/local/bin/mysql_backup.sh监控建议配置Prometheus的mysqld_exporter关键指标报警连接数、QPS、缓冲池命中率定期检查慢查询日志7. 性能调优实战经验根据多年运维经验分享几个关键调优参数内存相关innodb_buffer_pool_instances8 innodb_buffer_pool_chunk_size128MIO优化innodb_flush_neighbors0 # SSD环境建议关闭 innodb_read_io_threads8 innodb_write_io_threads4事务隔离transaction_isolationREAD-COMMITTED在某个电商平台项目中通过调整innodb_io_capacity从200提升到2000使高峰期订单处理速度提升了40%。但要注意这个值需要根据实际磁盘性能调整盲目设高反而会导致性能下降。