上一篇文章提到了博客大搬家,这一篇文章记录一下过程中使用过的命令,以便以后查询。下面的命令只涉及数据迁移,我们假设新服务器的 Apache,MySQL,PHP,CertBot 防火墙等等都配置好了。

首先当然是把网站停掉,然后开始备份数据库。由于是换服务器,所以使用 mysqldump 进行一次逻辑备份。–lock-tables 参数会把所有的表加锁,这样的话所有的更新操作都会被阻塞,所以千万不要在生产环境里面使用这个命令,请使用 XtraBackup,或者先搭建主从备份,在只读的从库上用 mysqldump 。

这样就在 temp 目录下得到了一个 db_backup.sql,我们可以顺手把它下载到本地一份:

mysqldump -u root -p --opt --extended-insert=false --lock-tables --databases db1 db2 > /tmp/db_backup.sql

把网站文件打包并用 gzip 压缩(例子中所有的网站文件都在位于 /var/www 的 html 文件夹里面):

tar -C /var/www/ -czvf sites.tar.gz html

把备份文件上载到新的服务器,可以使用 scp 命令,这就会把数据库复制到远程服务器的 /temp 目录,当然过程中会要求确认远程服务器的 key 之类的,等同于一次 SSH 登录:

scp /tmp/db_backup.sql remote_user_name@new_server.com:/tmp/
scp sites.tar.gz remote_user_name@new_server.com:/tmp/

登陆到新的服务器,解压:

tar -zxf /tmp/sites.tar.gz --directory /var/www/

登录到新的 MySQL 服务器,使用导出的备份文件恢复:

SOURCE /tmp/db_backup.sql

最后修改一下 wp-config.php 里面的数据库服务器连接信息就好了。

一切运行正常的话,就可以把备份删掉了。