LNMP环境下如何实现数据迁移
小樊
44
2025-12-10 02:58:46
LNMP环境下数据迁移实操指南
一、迁移总览与准备
明确目标与范围:是整机迁移 、同机目录/磁盘迁移 ,还是数据库拆分/主从 ,是否需要跨城/跨省 与低停机 。
准备新环境:提前安装并调优Nginx/PHP/MySQL或MariaDB ,确认端口、目录结构、运行用户 与旧环境一致或兼容。
梳理应用配置:记录数据库连接串、缓存、附件目录、定时任务、反向代理/负载均衡指向等。
备份与校验:全量备份网站文件 与数据库 ,并做恢复演练 与校验和 比对。
变更窗口与回滚:设定维护页 与回滚预案 ,重要业务建议先在预发布环境 验证。
二、方案一 允许停机的整机迁移(最稳妥)
步骤
旧机备份
网站文件:cd /var/www && tar czf site.tar.gz .
数据库:mysqldump -u root -p --single-transaction --routines --triggers --events --hex-blob --databases 需要的库 > db.sql
传输到新机
rsync -avz --progress site.tar.gz db.sql user@new_ip:/data/
或 scp -r /var/www user@new_ip:/data/www && scp db.sql user@new_ip:/data/
新机恢复
解压:tar xzf site.tar.gz -C /data/www
导入:mysql -u root -p < /data/db.sql
配置与权限
同步或重建Nginx vhost 与PHP-FPM 池,保持运行用户/UID一致 ,目录属主属组与旧机一致(如 chown -R www-data:www-data /data/www)。
检查数据库用户与权限(特别是应用账号、远程授权)。
切换与验证
新机启动 Nginx/PHP/DB,先在本地 hosts 解析验证,再切换DNS/SLB 权重。
适用:数据量中小、允许短暂停机 ;流程简单、风险低。
三、方案二 不停机迁移(近零停机)
文件近实时同步
首轮全量:rsync -a --delete /var/www/ user@new_ip:/data/www/
切换前最后一次增量 :rsync -a /var/www/ user@new_ip:/data/www/,随后短暂停止写入 (只读或维护页)。
数据库近实时同步
主从复制:旧库设为主库 ,新库设为从库 同步至接近一致;切换时短暂停写,确认从库追平 后提升为新主。
或采用xtrabackup 物理热备做快速一致性快照,缩短停机窗口。
域名与切换
提前2天 将DNS TTL 调至5–10分钟 ;切换时一次性将域名指向新IP,等待全球生效并持续回归测试。
适用:要求高可用/跨省迁移 ;通过主从+增量rsync 实现分钟级 切换。
四、方案三 数据库拆分与迁移(DB独立或多实例)
逻辑迁移(通用)
导出:mysqldump -u root -p --databases your_db --routines --triggers --events --hex-blob | gzip > db.sql.gz
传输与导入:scp 到新DB,gunzip | mysql -u root -p
权限与账号:在新库重建同名应用账号 与授权网段 ,避免直接使用 root。
配置应用
修改应用配置(如wp-config.php、.env、config.php )中的DB_HOST 为新库IP/域名,先内网直连验证。
物理迁移(大库/更快)
停库拷贝数据目录或使用xtrabackup 热备,在新库恢复后启动并校验一致性。
适用:将数据库从Web节点拆分 到独立服务器,提升性能与安全 。
五、方案四 同机目录或磁盘迁移(系统盘→数据盘)
步骤
分区与格式化新盘:fdisk -l → fdisk /dev/vdb → mkfs.xfs /dev/vdb1(或 ext4)
停服务:systemctl stop nginx php-fpm mysqld
挂载到临时目录并拷贝:mount /dev/vdb1 /mnt && cp -rp /var/www /mnt
迁移后挂载到目标目录:umount /mnt && mount /dev/vdb1 /var/www
开机自动挂载:echo ‘/dev/vdb1 /var/www xfs defaults 0 0’ >> /etc/fstab
启动服务并校验
适用:系统盘空间不足,将网站/数据 迁移至新数据盘 。
六、关键注意事项与验证清单
一致性与权限
保持Nginx/PHP运行用户UID/GID一致 ,目录权限正确;数据库账号、密码、授权网段 与白名单同步。
应用层细节
WordPress 需更新站点URL:UPDATE wp_options SET option_value=‘https://new.example.com’ WHERE option_name IN (‘siteurl’,‘home’); 并批量替换文章内容链接;清理对象缓存/OPcache/浏览器缓存 。
切换与回滚
使用维护页 与只读模式 降低切换风险;保留旧机在线 一段时间,确认无误后再下线;DNS变更配合低TTL 与多地探测 。
校验与演练
核对文件数量/大小/校验和 、数据行数 、主外键/触发器/存储过程 、定时任务 、SSL证书 、反向代理/负载均衡 与健康检查。
大库策略
数据量**>50GB优先考虑 xtrabackup/物理迁移或 主从+增量**,缩短停机窗口。