Ubuntu LNMP如何实现数据迁移
导读:Ubuntu LNMP 数据迁移实操指南 一、迁移总览与准备 明确场景:分为同版本服务器迁移与跨版本升级迁移两类,流程大体一致,但跨版本需额外关注字符集、存储引擎、PHP 扩展兼容性。 备份关键资产: Nginx:配置文件(如 /etc...
Ubuntu LNMP 数据迁移实操指南
一、迁移总览与准备
- 明确场景:分为同版本服务器迁移与跨版本升级迁移两类,流程大体一致,但跨版本需额外关注字符集、存储引擎、PHP 扩展兼容性。
- 备份关键资产:
- Nginx:配置文件(如 /etc/nginx/nginx.conf、/etc/nginx/sites-available/)。
- MariaDB/MySQL:全量逻辑备份(如 mysqldump --all-databases)。
- PHP:自定义 php.ini 与扩展配置。
- 网站文件:站点根目录(如 /var/www/ 或 /home/wwwroot/)。
- 目标环境:建议先安装与源环境相同或兼容的 Ubuntu + Nginx + MariaDB/MySQL + PHP-FPM 版本,减少迁移风险。
- 传输与切换:准备 scp/rsync 传输数据,切换前用临时域名或 IP 验证,最后更新 DNS 或负载均衡指向新服务器。
二、数据库迁移步骤
- 逻辑迁移(通用、最稳妥)
- 源库备份:
- 全库:mysqldump -u root -p --all-databases > all_databases.sql
- 单库:mysqldump -u root -p dbname > dbname.sql
- 传输到新服务器:
- scp all_databases.sql user@new_ip:/tmp/ 或 rsync -av dbname.sql user@new_ip:/tmp/
- 目标库导入:
- 全库:mysql -u root -p < /tmp/all_databases.sql
- 单库:先 CREATE DATABASE dbname; 再 mysql -u root -p dbname < /tmp/dbname.sql
- 应用配置:更新网站配置中的 DB_HOST/DB_NAME/DB_USER/DB_PASSWORD。
- 验证:检查表数量、关键数据、错误日志。
- 源库备份:
- 物理迁移(同版本、停机维护窗口)
- 停库:sudo systemctl stop mariadb
- 备份并迁移数据目录:
- sudo cp -R /var/lib/mysql /var/lib/mysql_backup
- sudo rsync -av /var/lib/mysql_backup/ /new/mysql_data/
- 修改配置:/etc/mysql/mariadb.conf.d/50-server.cnf 中设置 datadir = /new/mysql_data
- 远程访问(如需):将 bind-address 设为 0.0.0.0 或注释该行,并授权远程用户。
- 启动与升级:sudo systemctl start mariadb 后执行 sudo mysql_upgrade -u root -p 校验与修复。
- 验证与回滚预案:确认业务正常,保留旧数据目录直至稳定。
三、网站文件与 PHP 迁移
- 打包与传输:
- 源站打包:tar -czvf www.tar.gz /var/www/your_site
- 传到新站:scp www.tar.gz user@new_ip:/tmp/
- 新站解压:tar -xzvf /tmp/www.tar.gz -C /var/www/
- PHP 与权限:
- 安装匹配版本的 PHP-FPM 及扩展(如 php-mysql、php-mbstring、php-gd 等)。
- 调整目录属主属组(示例):chown -R www-data:www-data /var/www/your_site(以实际运行用户为准)。
- 如 php.ini 有自定义,复制到新环境并重启 php-fpm。
- 验证:访问常见页面与接口,查看 /var/log/nginx/error.log 与 PHP-FPM 日志。
四、Nginx 配置迁移与切换
- 配置迁移:
- 备份:sudo cp -r /etc/nginx /etc/nginx_backup
- 同步站点配置:scp -r /etc/nginx/sites-available user@new_ip:/etc/nginx/sites-available
- 软链启用站点(如默认站点):sudo ln -sfn /etc/nginx/sites-available/your_site /etc/nginx/sites-enabled/your_site
- 语法检查与生效:
- sudo nginx -t 检查语法
- sudo systemctl reload nginx 热加载(不停机)
- 切换流量:
- 低峰期将 DNS TTL 调低,更新 A 记录 指向新服务器;或通过 负载均衡 切流。
- 观察日志与监控,确认无异常后再下线旧服务器。
五、验证、回滚与注意事项
- 验证清单:
- 数据库:关键表行数、主外键、触发器/存储过程、字符集(如 utf8mb4)。
- 网站:登录、上传、表单提交、定时任务、缓存、SSL。
- 服务:Nginx、PHP-FPM、MariaDB 均 active (running),错误日志无致命错误。
- 回滚预案:
- 数据库:保持旧库只读或快速回切 DNS;物理迁移保留旧 datadir 与最近备份。
- 文件/Nginx:保留旧站点与配置,随时可切换软链与 DNS。
- 注意事项:
- 版本兼容:跨版本迁移先小范围演练,关注 InnoDB/字符集/PHP 扩展差异。
- 权限与安全:目录权限最小化,数据库账户遵循最小权限原则,禁用不必要远程访问。
- 防火墙与端口:放行 80/443(Nginx)及数据库端口(如 3306,仅内网或按需开放)。
- 零停机思路:对核心业务可用 主从复制 实现迁移期近零停机,验证后切换主从或切流。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Ubuntu LNMP如何实现数据迁移
本文地址: https://pptw.com/jishu/748468.html
