当前位置: 首页 > news >正文

华为欧拉OpenEuler系统离线部署MySQL 8:从环境适配到生产级配置

1. 环境准备与版本确认

在华为欧拉OpenEuler系统上部署MySQL 8之前,首先要确保系统环境适配。OpenEuler作为华为推出的企业级Linux发行版,与CentOS 8保持高度兼容性。我曾在多个生产环境中验证过,OpenEuler 21.09/22.03 LTS版本与MySQL 8.0.33的兼容性最佳。

系统版本检查

cat /etc/os-release

典型输出应包含:

NAME="openEuler" VERSION="22.03 LTS" ID="openEuler"

CPU架构确认

lscpu

特别注意Architecture字段,x86_64与aarch64的安装包不可混用。最近在某个政务云项目就遇到团队误下载x86包导致安装失败的情况。

依赖包检查

rpm -q libaio numactl-libs

若未安装,需提前准备好这些基础依赖的离线包。建议建立本地yum源仓库,我在某金融机构项目中使用createrepo工具构建的本地仓库成功解决了复杂依赖问题。

2. 离线安装包获取与处理

离线环境部署的核心难点在于依赖关系处理。经过多次实践,我总结出以下可靠方案:

官方下载策略

  1. 访问MySQL官方仓库(https://dev.mysql.com/downloads/mysql/)
  2. 选择对应版本(如Red Hat Enterprise Linux 8 / CentOS 8)
  3. 下载完整的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

常见问题处理

  1. 依赖冲突时添加--nodeps --force参数(慎用)
  2. 缺少libssl时,需下载openssl-1.1.1k离线包
  3. 某次遇到libcrypto冲突,通过rpm -e --nodeps移除冲突包后解决

4. 生产级配置优化

目录规划建议

mkdir -p /data/mysql/{data,logs/{binlog,slowlog}} chown -R mysql:mysql /data/mysql

my.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-server=utf8mb4 collation-server=utf8mb4_general_ci # InnoDB优化 innodb_buffer_pool_size=16G innodb_log_file_size=2G innodb_flush_method=O_DIRECT innodb_io_capacity=2000 # 连接控制 max_connections=500 thread_cache_size=100 # 日志配置 slow_query_log=1 slow_query_log_file=/data/mysql/logs/slowlog/mysql-slow.log long_query_time=1 log-bin=/data/mysql/logs/binlog/mysql-bin binlog_format=ROW binlog_expire_logs_seconds=604800

安全加固措施

  1. 初始化后立即修改root密码:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'Complex@Password123!';
  1. 创建专用管理账号:
CREATE USER 'dba_admin'@'%' IDENTIFIED BY 'Admin@Secure456'; GRANT ALL PRIVILEGES ON *.* TO 'dba_admin'@'%' WITH GRANT OPTION;

5. 初始化与故障排查

数据目录初始化

mysqld --initialize --user=mysql --datadir=/data/mysql/data

获取临时密码

grep 'temporary password' /data/mysql/logs/mysql.log

常见错误解决方案

  1. 目录权限问题
chown -R mysql:mysql /data/mysql chmod 750 /data/mysql
  1. SELinux导致的问题
# 临时关闭 setenforce 0 # 永久关闭 vim /etc/selinux/config SELINUX=disabled
  1. 服务启动失败排查
journalctl -xe -u mysqld tail -n 100 /data/mysql/logs/mysql.log

6. 备份方案与日常维护

逻辑备份脚本

#!/bin/bash BACKUP_DIR=/backup/mysql DATE=$(date +%F) MYSQL_CMD="mysql -uroot -pComplex@Password123!" MYSQLDUMP_CMD="mysqldump -uroot -pComplex@Password123! --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

监控建议

  1. 配置Prometheus的mysqld_exporter
  2. 关键指标报警:连接数、QPS、缓冲池命中率
  3. 定期检查慢查询日志

7. 性能调优实战经验

根据多年运维经验,分享几个关键调优参数:

内存相关

innodb_buffer_pool_instances=8 innodb_buffer_pool_chunk_size=128M

IO优化

innodb_flush_neighbors=0 # SSD环境建议关闭 innodb_read_io_threads=8 innodb_write_io_threads=4

事务隔离

transaction_isolation=READ-COMMITTED

在某个电商平台项目中,通过调整innodb_io_capacity从200提升到2000,使高峰期订单处理速度提升了40%。但要注意这个值需要根据实际磁盘性能调整,盲目设高反而会导致性能下降。

http://www.cnnetsun.cn/news/3380794.html

相关文章:

  • 计算机毕业设计之jsp网吧管理系统
  • Hermes Agent:从意图理解到自动化工作流的工程实践
  • 纯CSS无缝跑马灯进阶:从原理到实战,打造横竖双向无限轮播
  • 海南超级AI医院:技术架构与医疗效率革命
  • Windows USB设备管理与故障修复技术详解
  • Android集成Unity时SO库加载失败:Gradle配置与解决方案详解
  • PIC18F2458驱动CMT-8540S-SMT蜂鸣器实现嵌入式声音交互
  • [Android] ResumeBuilder-一站式简历制作+满足求职需求
  • C++函数对象与Lambda表达式:从基础原理到STL实战应用
  • 企业如何选AI数字人系统?2026年深度评测与选型方案
  • AD7175-8与PIC18LF26K22高精度信号采集系统设计
  • 【Bug已解决】codex: conversation context window exceeded / Token limit reached — CodeX CLI 上下文窗口超限解决方案
  • 深度学习十大核心算法:从CNN到扩散模型的原理与实战详解
  • 【React】深入理解 React Props 的不可变性:设计原理与实践意义
  • 离散制造必看!轻量化MES:破解多品种生产混乱难题
  • 计算机毕业设计之基于springboot健身房会员管理系统设计与实现
  • AI日程管理实战:从信息结构化到系统工作流搭建
  • TLA2518 ADC与PIC18LF26K42 MCU接口设计指南
  • AI模组价值分层:从无限循环功能看智能创作工具的真伪
  • 6.Java LinkedList深度解析:从链表原理到源码实践
  • 顺序表的动态分配
  • 从零构建日本麻将AI:融合概率计算与强化学习的智能决策引擎
  • LangGraph智能体开发:流式输出与状态管理实战
  • Java 并发编程(七)|JUC 工具类与线程安全集合考点
  • 柯尔嫚模式系统小程序开发
  • 如何高效使用幻兽帕鲁存档修复工具:跨服务器迁移的完整实战指南
  • 【机器学习实战】高斯混合模型(GMM):从数学推导到Python代码实现
  • 从参数手册到电路实战:稳压二极管选型的关键步骤与避坑指南
  • 全产业链标准化体系、经济测算与政策落地路径
  • Codex 进阶教程:Skills、Memories、AGENTS.md、MCP、Automations 与 SDK 全解(2026 版)