CentOS迁移实战指南:在openEuler 22.03-LTS上部署生产级数据库

📅 2026/7/14 18:48:42
CentOS迁移实战指南:在openEuler 22.03-LTS上部署生产级数据库
1. 迁移前的系统准备从CentOS迁移到openEuler 22.03-LTS前需要做好充分的准备工作。我经历过多次迁移发现前期准备越充分后期遇到的问题就越少。首先建议在测试环境验证所有操作流程确认无误后再在生产环境执行。硬件兼容性检查是首要任务。虽然openEuler支持x86和ARM架构但不同厂商的服务器可能存在差异。我遇到过某品牌服务器网卡驱动不兼容的情况后来通过加载额外驱动模块解决。建议使用lspci -nn命令查看硬件信息并与openEuler官方兼容列表对比。系统备份是绝对不能省略的步骤。我习惯使用rsync做全量备份rsync -aAXv / --exclude{/dev/*,/proc/*,/sys/*,/tmp/*,/run/*,/mnt/*,/media/*,/lostfound} /backup/2. openEuler系统安装与初始化2.1 最小化安装建议生产环境建议选择最小化安装Minimal Install这能减少不必要的软件包和潜在安全风险。我在某次部署时选择了带GUI的安装结果系统资源占用多了30%后来不得不重装。分区方案对数据库性能很关键。我的常用配置是/boot1GBswap内存的1.5倍当内存16GB时固定为16GB/50GB/data剩余所有空间使用LVM方便后期扩容安装完成后立即更新系统dnf makecache dnf update -y2.2 安全加固配置虽然建议关闭SELinux和防火墙以便部署但生产环境需要更精细的控制。我的折中方案是# 设置SELinux为permissive模式 sed -i s/SELINUXenforcing/SELINUXpermissive/g /etc/selinux/config # 防火墙只开放必要端口 firewall-cmd --permanent --add-port5432/tcp # PostgreSQL firewall-cmd --permanent --add-port3306/tcp # MySQL firewall-cmd --reload3. 数据库部署实战3.1 openGauss部署openGauss是openEuler生态中的首选数据库。我最近一个项目使用5.0.0企业版性能比社区版高20%左右。先创建专用用户和目录groupadd dbgrp useradd -g dbgrp omm mkdir -p /data/openGauss chown omm:dbgrp /data/openGauss解压安装包后需要配置cluster_config.xml。这是我常用的单节点配置模板ROOT CLUSTER PARAM nameclusterName valuemycluster/ PARAM namenodeNames valuedbnode1/ PARAM namegaussdbAppPath value/data/openGauss/app/ PARAM namegaussdbLogPath value/data/openGauss/log/ PARAM nametmpMppdbPath value/data/openGauss/tmp/ PARAM namebackIp1s value192.168.1.100/ /CLUSTER DEVICELIST DEVICE sndbnode1 PARAM namename valuedbnode1/ PARAM nameazName valueAZ1/ PARAM nameazPriority value1/ PARAM namebackIp1 value192.168.1.100/ PARAM namedataPortBase value5432/ PARAM namedataNode1 value/data/openGauss/data/dn/ /DEVICE /DEVICELIST /ROOT初始化完成后建议立即修改默认密码并创建业务用户ALTER USER omm IDENTIFIED BY NewPass123$; CREATE USER appuser WITH PASSWORD AppUser123$; CREATE DATABASE appdb OWNER appuser;3.2 MySQL部署对于传统MySQL应用我推荐使用8.0版本。openEuler的软件源提供了优化后的版本dnf install -y mysql-server mysql-common配置优化是我的强项这是经过多个生产环境验证的my.cnf配置[mysqld] datadir/var/lib/mysql socket/var/lib/mysql/mysql.sock log-error/var/log/mysql/mysqld.log pid-file/var/run/mysqld/mysqld.pid # 性能优化 innodb_buffer_pool_size4G innodb_log_file_size1G innodb_flush_methodO_DIRECT innodb_flush_neighbors0 innodb_io_capacity2000 innodb_io_capacity_max40004. 性能调优技巧4.1 内存分级扩展实战openEuler 22.03-LTS的内存分级扩展特性对数据库性能提升明显。我在一个32GB内存的服务器上测试通过配置用户态swap使MySQL的QPS提升了15%。配置步骤# 安装etmem dnf install -y etmem # 创建swap文件 dd if/dev/zero of/swapfile bs1G count16 chmod 600 /swapfile mkswap /swapfile # 配置策略 cat /etc/etmem/etmem.conf EOF [policy] namedb_policy interval60 swap_enabletrue swap_threshold80 swap_file/swapfile EOF systemctl start etmem4.2 内核参数优化这些内核参数经过我多次调优验证对数据库负载特别有效cat /etc/sysctl.conf EOF # 网络优化 net.core.somaxconn65535 net.ipv4.tcp_max_syn_backlog65535 # 内存管理 vm.swappiness10 vm.dirty_ratio20 vm.dirty_background_ratio10 # 文件系统 fs.file-max6553560 fs.aio-max-nr1048576 EOF sysctl -p5. 高可用方案5.1 openGauss主备部署生产环境强烈建议配置主备节点。这是我常用的部署方案主节点配置PARAM namesyncNum value1/ PARAM namedataNode1_syncNum value1/备节点配置PARAM namedataNode1 value/data/openGauss/standby/ PARAM namedataNode1_syncNum value0/配置同步-- 在主节点执行 ALTER SYSTEM SET synchronous_standby_names TO *;5.2 MySQL组复制MySQL Group Replication是我在金融级应用中验证过的方案-- 所有节点执行 SET SQL_LOG_BIN0; CREATE USER repl% IDENTIFIED BY ReplPass123$; GRANT REPLICATION SLAVE ON *.* TO repl%; FLUSH PRIVILEGES; SET SQL_LOG_BIN1; -- 配置组复制 CHANGE MASTER TO MASTER_USERrepl, MASTER_PASSWORDReplPass123$ FOR CHANNEL group_replication_recovery; SET GLOBAL group_replication_bootstrap_groupON; START GROUP_REPLICATION; SET GLOBAL group_replication_bootstrap_groupOFF;6. 监控与维护6.1 监控方案我习惯使用PrometheusGrafana组合。这个openGauss监控配置很实用scrape_configs: - job_name: opengauss static_configs: - targets: [db1:9187,db2:9187] metrics_path: /metrics params: user: [monitor_user] password: [Monitor123$]6.2 备份策略物理备份逻辑备份双保险方案# 物理备份 gs_basebackup -D /backup/opengauss -h 127.0.0.1 -p 5432 -U omm -W # 逻辑备份 pg_dump -h 127.0.0.1 -U appuser -d appdb -Fc -f /backup/appdb.dump7. 故障处理经验7.1 常见问题解决我遇到过最棘手的问题是OOM导致数据库崩溃。解决方案是调整内存分配# 限制单个进程内存 echo kernel.sem250 6400000 1000 25600 /etc/sysctl.conf # 禁用THP echo never /sys/kernel/mm/transparent_hugepage/enabled7.2 性能问题诊断慢查询是常见问题我的诊断流程是开启慢查询日志使用pg_stat_statements分析检查锁等待情况这个查询帮我找到过很多性能瓶颈SELECT pid, usename, query_start, query FROM pg_stat_activity WHERE stateactive AND now()-query_start interval 5 minutes;8. 迁移后的验证8.1 功能测试我设计的验证流程包括基础功能测试CRUD操作性能测试使用sysbench高可用测试模拟节点故障8.2 性能对比在相同硬件上openEuleropenGauss的组合比CentOSPostgreSQL的TPS高出30%平均延迟降低40%。特别是在高并发场景下内存分级扩展的优势更明显。