[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.2 进入数据库导出页面
登陆成功之后,点击左侧的博客对应的数据库名字,然后点击右侧面板的导出
,即可看到如下界面:
1.3 使用phpMyAdmin
导出功能备份博客数据库
进入上述界面之后,在导出方式
下面可以看到两个选项:快速
和自定义
,我们选择快速
就好。然后点执行
。就会弹出对话框让我们选择保存导出的数据库的位置。选择完成之后,点保存,即可将博客的数据库下载到本地了。
二、博客数据库的恢复
恢复原博客的数据库也很简单,使用phpMyAdmin
里面的导入功能,直接将上述备份的博客数据库文件导入就行了。
2.1 登录新博客的数据库后台
博客数据库后台登录的地址是https://your_new_blog_ip/phpmyadmin
(请将your_new_blog_ip
替换成你博客的IP或者域名),登陆之后如下所示:
2.2 进入数据库导出页面
登陆成功之后,点击左侧的博客对应的数据库名字,然后点击右侧面板的导入
,即可看到如下界面:
2.3 使用phpMyAdmin
导入功能恢复博客数据库
在导入页面,点击选择文件
,然后在弹出的窗口中选择本地保存的博客数据库文件,然后点击执行
,稍等几分钟即可将数据库恢复。导入成功的界面如下:
三、常见问题及解决办法
3.1 “没有接收到要导入的数据。可能是文件名没有提交,也可能是文件大小超出 PHP 限制。参见常见问题 1.16。”
问题原因:博客的数据库文件超过了2M
,而php
默认设置最大只能上传2M
的文件。
解决办法:官方文档里也有若干种办法。这里我们采用另外一种办法来解决:修改php
配置文件/etc/php/7.2/apache2/php.ini
,扩大上传文件大小限制。和默认上传文件大小相关的值有三个:memory_limit
、post_max_size
和upload_max_filesize
。这三个值的大小依次应该是:
memory_limit
> post_max_size
> upload_max_filesize
经过确认,我的博客这三个值配置为:
按照上述要求,我更改了post_max_size
和upload_max_filesize
分别为30M
和20M
。然后,使用命令sudo systemctl restart apache2.service
重启apache
服务即可时尚属配置生效。
3.2 “#1046 – No database selected”
问题原因:如果出现这个错误,很有可能是原数据库和当前数据库的值有冲突导致的错误。
为什么当前数据库会有值呢?
在Ubuntu18.10 上搭建WordPress博客文章4.4中,我们为新建的博客创建了数据库,而在4.5节部署博客的过程中是有使用到这一数据库的,最明显的地方时,当我们的博客部署成功之后,WordPress
是默认会为我们生成一篇hello, wolrd
的文章的,这个操作一定会修改数据库的。
解决办法:删除掉博客数据库,使用Ubuntu18.10 上搭建WordPress博客文章4.4的方法新建数据库,然后,按照本文第二节的方法继续导入数据库即可。删除数据库的方法如下:
点击phpMyAdmin
的home
页面,点击右侧面板上的数据库
,选中博客的数据库(比如我的博客数据库名字叫wordpress_DB
),点击删除
。
3.3 “无需升级:您的WordPress数据库已经是最新的了!”
问题原因:博客数据库如果单纯的只是作为博客备份的话,按照上面的方法备份下来,当服务器数据出问题,想恢复的时候,按照本文第二节的方法直接恢复就可以了。但是如果备份下来的数据库用作迁移博客数据时,就不能直接用了。否则,直接使用本文第二节的方法迁移过去之后,会出现下面的情况:
为了便于称呼,将原来博客或者服务器称为Blog_old
,将新建立的博客或服务器称为Blog_new
。迁移分为两种情况,一种是数据迁移前后域名不变。像我之前说的,我只是想基于一个新的服务器系统版本Blog_new
,搭建一个博客,然后再将数据复制过来,之后Blog_old
将废弃,Blog_new
绑定的还是我原来博客的域名。另一种相当于是复制一个站点。即在Blog_new
搭建一个博客系统,再将Blog_old
的数据复制过来,之后新老服务器同时工作,并且新老服务器域名不一样。为了规避上面的错误,对于第二种情况来讲,反而更方便了。做法如下:
- 再按照本文第二节叙述的导入数据库之前,使用文本编辑器打开数据库文件,将原数据库文件中的老的域名(或IP) 全部替换成新的域名(或IP);
- 从
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数据库已经是最新的了!”
解决办法: 为了保证数据的完整性,个人认为最好不要单独修改数据库的某项数据或者修改代码。我这边想到的办法是:
- 将原数据库文件中的老的域名(或IP) 全部替换成新服务器的IP;
- 从
Blog_old
复制相关资源文件(例如/var/www/html/wp-content/uploads)到新服务器上。此时可以保证通过IP访问新服务器,所有数据都正常。 - 在使用
new_ip_address/wp-admin
登录后台时,会提示更新数据库,直接点“现在更新”即可。更新完,就会进入正常的博客后台登录页面。经确认登录完全没有问题。此时,按照我们之前的推断,现在数据库版本和当前服务器上的数据库已经完全匹配。 - 登录
new_ip_address/phpmyadmin
按照第一节的方法,重新备份一份数据库。 - 打开重新备份的数据库,将之前我们替换的新服务器的IP再改回老的域名。
- 再将修改后的数据库文件使用第二节的方法重新导入回去新服务器。
经过确认,一切正常!