温馨提示×

centos镜像更新后如何迁移数据

小樊
42
2025-12-17 18:20:07
栏目: 智能运维

迁移前的准备与总体策略

  • 明确目标:是做原地升级系统(保留系统盘数据)还是更换系统镜像后迁移数据(重建系统盘,仅迁移业务数据)。原地升级适合希望尽量保留现有系统与配置的场景;更换镜像后迁移数据更干净,适合跨大版本或系统盘需要重建的情况。
  • 完整备份:先对关键数据与配置做全量备份(如 tar、rsync、快照/云盘克隆),并在非生产时段操作,避免业务写入导致不一致。
  • 资源与限制评估:若采用云厂商提供的迁移工具(如SMC),需预留资源(内存≥600 MiB;/usr≥250 MiB;/var≥4 GiB;/boot≥100 MiB),并注意架构与软件限制(如i386 包不支持、部分 epel-modular 不可用等)。
  • 迁移方式选型:小数据量可用 scp;大量/增量数据优先 rsync;跨环境/跨平台可用 tar 归档配合传输;虚拟机与宿主机/本地之间可用 NFS/Samba/SSHFS 共享目录。

原地升级并保留系统盘数据

  • 适用场景:希望保留系统盘上的数据与大部分配置,仅将 CentOS 7/8 等系统原地转换为兼容发行版(如 AnolisOSAlibaba Cloud Linux 等)。
  • 基本流程:
    1. 在云厂商控制台选择操作系统迁移工具(如服务器迁移中心 SMC),确认源/目标系统与架构在支持列表内;
    2. 检查并清理不兼容项(如 i386 包、部分 epel-modular 源);
    3. 预留资源并停止非必要业务,避免迁移过程资源不足;
    4. 执行迁移并监控进度,迁移完成后做业务与数据校验。
  • 重要提示:迁移会改变内核与基础工具链,对依赖内核接口的业务(如 OOT 模块、硬件使能)可能不兼容,需提前评估与回归测试。

更换镜像后迁移数据

  • 新实例准备:基于新的 CentOS 镜像创建实例,挂载与原环境一致的数据盘(若使用云盘,建议用快照/克隆保持一致性)。
  • 方式一 rsync 在线迁移(推荐):
    • 在旧实例上执行(保持目录尾部斜杠一致,避免拷贝到错误层级):
      • rsync -avzP /var/www/ user@new-centos-ip:/var/www/
      • rsync -avzP /home/ user@new-centos-ip:/home/
      • rsync -avzP /etc/ user@new-centos-ip:/etc.bak/
    • 如需增量同步,可在窗口期再次执行相同命令,仅同步差异。
  • 方式二 tar 归档迁移(适合一次性搬运):
    • 旧实例打包:tar czvf backup_20251217.tar.gz -C /var/www .
    • 传到新实例:scp backup_20251217.tar.gz user@new-centos-ip:/tmp/
    • 新实例解包:tar xzvf /tmp/backup_20251217.tar.gz -C /var/www
  • 方式三 共享目录/块存储挂载:
    • 虚拟机与宿主机/本地可用 NFS/Samba/SSHFS 挂载共享目录,直接把数据拷入共享目录完成迁移。
  • 应用与权限校验:
    • 校验关键目录权限与属主(如 /var/www、/home、数据库数据目录);
    • 启动服务前先检查配置文件中路径、端口、用户等是否变更;
    • 数据库建议用逻辑/物理备份在目标库恢复,避免直接拷贝数据文件导致不一致。

目录迁移与挂载点调整

  • 场景:将 /data 从系统盘迁移到新磁盘/新分区,并更新为持久挂载。
  • 步骤:
    1. 查看磁盘与分区:fdisk -l、df -h、df -T
    2. 分区并格式化新盘(示例):
      • parted /dev/vdb mklabel gpt
      • parted /dev/vdb mkpart primary ext4 0% 100%
      • mkfs.ext4 /dev/vdb1
    3. 临时挂载并迁移数据:
      • mkdir -p /mnt/data
      • mount /dev/vdb1 /mnt/data
      • rsync -avxP /data/ /mnt/data/
    4. 备份原目录并切换挂载点:
      • mv /data /data.bak
      • mkdir -p /data
      • umount /mnt/data
      • mount /dev/vdb1 /data
    5. 写入 /etc/fstab 持久化(建议使用 UUID):
      • blkid /dev/vdb1 → 得到 UUID
      • echo “UUID=xxxx-xxxx /data ext4 defaults 0 0” >> /etc/fstab
    6. 校验并清理:df -h、ls -ld /data;确认无误后删除 /data.bak。

验证与回滚

  • 数据一致性:对关键目录做校验和/条目数比对(如 find /data -type f -exec md5sum {} + | sort,或 rsync -avnc 做干跑校验)。
  • 服务与权限:逐项启动服务(Nginx、数据库、应用),核对配置文件路径、端口、用户/属主、SELinux/防火墙策略。
  • 回滚预案:保留旧实例与旧盘一段时间;若采用更换镜像方案,确保快照/克隆可用;发现问题立即切回旧环境并排查。

0