使用phpMyAdmin备份和还原WordPress博客

[toc]

Ubuntu18.10 上搭建WordPress博客文章中,我们基于Ubuntu18.10新建了一个WordPress博客,这篇文章将会介绍如何使用phpMyAdmin将原博客的数据备份,并使用该备份还原到新博客中去。本文的方法适用的条件:
1. 迁移前后域名不变的情况
2. 迁移的数据仅包括博客的文章、评论等信息,并不包括生成博客的WordPress代码

上篇文章中提到了,我的博客是使用phpMyAdmin来管理数据库的,因此,我们可以使用它方便的导入、导出博客的数据库,从而实现备份和还原博客数据。具体的备份还原过程如下:

一、备份博客数据库

1.1 登录原博客的数据库后台

博客数据库后台登录的地址是https://your_old_blog_ip/phpmyadmin(请将your_old_blog_ip替换成你博客的IP或者域名),登陆之后如下所示:

1

1.2 进入数据库导出页面

登陆成功之后,点击左侧的博客对应的数据库名字,然后点击右侧面板的导出,即可看到如下界面:

2

1.3 使用phpMyAdmin导出功能备份博客数据库

进入上述界面之后,在导出方式下面可以看到两个选项:快速自定义,我们选择快速就好。然后点执行。就会弹出对话框让我们选择保存导出的数据库的位置。选择完成之后,点保存,即可将博客的数据库下载到本地了。

二、博客数据库的恢复

恢复原博客的数据库也很简单,使用phpMyAdmin里面的导入功能,直接将上述备份的博客数据库文件导入就行了。

2.1 登录新博客的数据库后台

博客数据库后台登录的地址是https://your_new_blog_ip/phpmyadmin(请将your_new_blog_ip替换成你博客的IP或者域名),登陆之后如下所示:

3

2.2 进入数据库导出页面

登陆成功之后,点击左侧的博客对应的数据库名字,然后点击右侧面板的导入,即可看到如下界面:

4

2.3 使用phpMyAdmin导入功能恢复博客数据库

在导入页面,点击选择文件,然后在弹出的窗口中选择本地保存的博客数据库文件,然后点击执行,稍等几分钟即可将数据库恢复。导入成功的界面如下:

5

三、常见问题及解决办法

3.1 “没有接收到要导入的数据。可能是文件名没有提交,也可能是文件大小超出 PHP 限制。参见常见问题 1.16。”

6

问题原因:博客的数据库文件超过了2M,而php默认设置最大只能上传2M的文件。
解决办法:官方文档里也有若干种办法。这里我们采用另外一种办法来解决:修改php配置文件/etc/php/7.2/apache2/php.ini,扩大上传文件大小限制。和默认上传文件大小相关的值有三个:memory_limitpost_max_sizeupload_max_filesize。这三个值的大小依次应该是:
memory_limit > post_max_size > upload_max_filesize

经过确认,我的博客这三个值配置为:

7

按照上述要求,我更改了post_max_sizeupload_max_filesize分别为30M20M。然后,使用命令sudo systemctl restart apache2.service重启apache服务即可时尚属配置生效。

3.2 “#1046 – No database selected”

8

问题原因:如果出现这个错误,很有可能是原数据库和当前数据库的值有冲突导致的错误。

为什么当前数据库会有值呢?
Ubuntu18.10 上搭建WordPress博客文章4.4中,我们为新建的博客创建了数据库,而在4.5节部署博客的过程中是有使用到这一数据库的,最明显的地方时,当我们的博客部署成功之后,WordPress是默认会为我们生成一篇hello, wolrd的文章的,这个操作一定会修改数据库的。

解决办法:删除掉博客数据库,使用Ubuntu18.10 上搭建WordPress博客文章4.4的方法新建数据库,然后,按照本文第二节的方法继续导入数据库即可。删除数据库的方法如下:

9

点击phpMyAdminhome页面,点击右侧面板上的数据库,选中博客的数据库(比如我的博客数据库名字叫wordpress_DB),点击删除

3.3 “无需升级:您的WordPress数据库已经是最新的了!”

问题原因:博客数据库如果单纯的只是作为博客备份的话,按照上面的方法备份下来,当服务器数据出问题,想恢复的时候,按照本文第二节的方法直接恢复就可以了。但是如果备份下来的数据库用作迁移博客数据时,就不能直接用了。否则,直接使用本文第二节的方法迁移过去之后,会出现下面的情况:

no-need-upgrade-your-wordpress

为了便于称呼,将原来博客或者服务器称为Blog_old,将新建立的博客或服务器称为Blog_new。迁移分为两种情况,一种是数据迁移前后域名不变。像我之前说的,我只是想基于一个新的服务器系统版本Blog_new,搭建一个博客,然后再将数据复制过来,之后Blog_old将废弃,Blog_new绑定的还是我原来博客的域名。另一种相当于是复制一个站点。即在Blog_new搭建一个博客系统,再将Blog_old的数据复制过来,之后新老服务器同时工作,并且新老服务器域名不一样。为了规避上面的错误,对于第二种情况来讲,反而更方便了。做法如下:

  1. 再按照本文第二节叙述的导入数据库之前,使用文本编辑器打开数据库文件,将原数据库文件中的老的域名(或IP) 全部替换成新的域名(或IP);
  2. Blog_old复制相关资源文件(例如/var/www/html/wp-content/uploads)到新服务器上。

对于第一种情况,经过几次实验之后,分析进入此页面的原因如下:
在将Blog_old的数据库备份并还原到Blog_new上之后,可能博客系统检测到Blog_new使用了较新的数据库版本但是却使用较旧的(Blog_old的)数据库格式,因此,检测到不匹配,所以提示更新数据库升级。这样就会调用数据库升级的程序(也就是我们看到的升级页面),而数据库升级程序中调用的页面在跳转时可能使用了已复制到Blog_new上的Blog_old的数据,所以,链接在重定向时,又回到了Blog_old的页面,这时,如果Blog_old还正常工作的时候,就会导致再去检测Blog_old上的数据库版本和数据库是否匹配,显然,这时是匹配的所以就会导致出现,我们看到的页面“无需升级:您的WordPress数据库已经是最新的了!”

解决办法: 为了保证数据的完整性,个人认为最好不要单独修改数据库的某项数据或者修改代码。我这边想到的办法是:

  1. 将原数据库文件中的老的域名(或IP) 全部替换成新服务器的IP;
  2. Blog_old复制相关资源文件(例如/var/www/html/wp-content/uploads)到新服务器上。此时可以保证通过IP访问新服务器,所有数据都正常。
  3. 在使用new_ip_address/wp-admin登录后台时,会提示更新数据库,直接点“现在更新”即可。更新完,就会进入正常的博客后台登录页面。经确认登录完全没有问题。此时,按照我们之前的推断,现在数据库版本和当前服务器上的数据库已经完全匹配。
  4. 登录new_ip_address/phpmyadmin按照第一节的方法,重新备份一份数据库。
  5. 打开重新备份的数据库,将之前我们替换的新服务器的IP再改回老的域名。
  6. 再将修改后的数据库文件使用第二节的方法重新导入回去新服务器。

经过确认,一切正常!

发表回复

您的电子邮箱地址不会被公开。