之前曾经发现备份的wordpress站点恢复不可用,或者数据库丢了或者图片不见了。今天以备份站点并恢复到本地虚拟机为例说一下需要注意的几个问题。
1、wordpress数据库备份
默认的wordpress数据库备份最简单的就是直接拷贝数据库文件,又简单又快捷,但在我本地的虚拟机环境里恢复的时候发现一个表都不见了。
问题:wordpress常见都是使用MySQL数据库,数据表默认使用的引擎为InnoDB,InnoDB速度会更快,但是它的问题就是不能直接复制文件备份数据库,甚至删掉它,也是不可以的,因为它还跟ibdata1这个文件有关。只能通过使用PHPMYADMIN或者其他MySQL GUI的工具导出数据库再倒入到新的数据库里。
如果还是想用文件拷贝的方式备份数据库的话其实很简单,只需将数据表的类型通过SQL语句更改为一般常用的MySIAM类型即可,不会影响wordpress的正常使用。
语句如下:
1.ALTER TABLE `wp_commentmeta` engine = MYISAM;
2.ALTER TABLE `wp_comments` engine = MYISAM;
3.ALTER TABLE `wp_links` engine = MYISAM;
4.ALTER TABLE `wp_options` engine = MYISAM;
5.ALTER TABLE `wp_postmeta` engine = MYISAM;
6.ALTER TABLE `wp_posts` engine = MYISAM;
7.ALTER TABLE `wp_terms` engine = MYISAM;
8.ALTER TABLE `wp_term_relationships` engine = MYISAM;
9.ALTER TABLE `wp_term_taxonomy` engine = MYISAM;
10.ALTER TABLE `wp_usermeta` engine = MYISAM;
11.ALTER TABLE `wp_users` engine = MYISAM;
记住,如果有插件数据表也记得要更改一下啊,否则丢掉就找不回来了
现在看起来似乎已经搞定了,但是发现在改变了数据库引擎后还是在phpmyadmin中看不到数据库的表,问题在哪儿呢?仔细查看了目录后发现拷贝过来的wordpress数据库文件夹和文件的用户以及用户组不对,原来在服务器上用户和组都是nobody,拷贝过来都变成了root,而现在其他正常的数据库文件用户和组都是mysql,发现了文件解决就简单了。
root#chown -R mysql:mysql yourwordpressdb
这次数据库搞定了。
2、wordpress站点还是无法访问,提示404错误
如果数据库和用户名发生变化,编辑 wp-config.php ,确保已将它设置为正确的属性值。
如果你想在转移之前测试一下, 你必须临时改变一下数据库表项”wp_options”中的”siteurl” 和 “home”值(可以通过类似phpMyAdmin的工具修改)。
如果你设置了任何的rewrites (永久链接),你需要禁用 .htaccess , 成功设置后再重新配置永久链接。
这时发现直接访问页面或者index.php还是报404错误,但是可以通过本地网址访问后台了。
http://localhost/yourwordpress/wp-admin
把后台设置以及固定链接设置回默认状态,再试一下发现自己的wordpress已经恢复到正常状态了。
数据备份与恢复
1,备份
=======================
我们假设在wordpress服务器上面的安装路径是/var/www/html/wordpress,备份的目录为/home/quietheart/backup_wordpress。那么根据如下步骤进行备份:
1)备份wordpress相关内容:
备份网站服务器上wordpress安装目录的"wp-content"子目录内容,以及"wp-config.php"文件内容,和其它你所修改的内容(如果有的话)。其中"wp-content"子目录包含插件以及上传的附件等;wp-config.php中的内容是一些配置信息例如链接什么数据库等等。
过程如下:
#cd /var/www/html/wordpress
#tar -czvf /home/quietheart/backup_wordpress/wp-content.tgz wp-content
#cp wp-config.php /home/quietheart/backup_wordpress
2)备份wordpress数据库内容:
两种方法:(目前采用第一种方法)
第一种使用插件:"WordPress Database Backup",直接生成备份好的数据库。
第二种使用mysql命令(目前不好用,只提供一个思路):
实践的过程如下:
# mysqldump -u quietheart -p123 --databases wordpress_db >mysql.wordpress
经过实践,这个方法似乎不行。对比发现,两种方法生成的数据库文件内容是不同的。另外,还一个比较常用的备份数据库的工具phpmyadmin。
综上可知,备份的内容主要有:1)wp-content目录的压缩包。2)wordpress数据库。3)修改的文件如wp-config.php。
2,恢复
=======================
假设在另外一台主机上面恢复之前备份的wordpress程序,安装路径为/var/www/html/wordpress,
需要恢复的数据的备份路径为:/home/quietheart/backup_wordpress
大致过程如下:
1)下载你所备份的同样版本的wordpress程序。
下载网址一般在www.wordpress.org能找到。
2)解压下载的wordpress拷贝到网络目录中,将之前备份的wp-content拷贝进去
3)创建一个空数据库(名称随便起,最好和备份数据库同样名称)。
4)安装wordpress
5)导入备份数据库
下面给出具体的步骤:
#cd /home/quietheart/tmpTrans
#wget http://wordpress.org/latest.tar.gz
#tar -xzvf latest.tar.gz
#[ -d /var/www/html/wordpress2 ] && rm -rf /var/www/html/wordpress2
#mv wordpress /var/www/html/wordpress2
#firefox 10.1.2.213/wordpress2/wp-admin/install.php
...在打开的浏览器网页中添加必要的信息...
#mysql --default-character-set=utf8 -uquietheart -p quietheart<quietheart_wp_20110626_137.sql
这里,对于已经安装过wordpress的我们来说,理解恢复时候每一条命令的含义,已经不是问题了。^_^
注意:
latest.tar.gz最好应当是和你要恢复的wordpress的版本一样。
使用firefox安装之前要确保wp-config.php文件中的数据库名称和刚才导入使用的名称一致(quietheart)。
另外使用mysql恢复的时候,如果不用"--default-character-set=utf8"选项会出现乱码。