自动备份Blog的MySQL数据库

辛辛苦苦的写blog, 不管写得如何,都是自己的心血。要是不小心丢了,那就郁闷了。前几天,我就说过使用电脑的关键就是备份,备份,再备份。 简单的通过复制来备份,当真的出现问题的时候,也会有很多麻烦。假设,你总是只有一份备份,是当前的最新备份。可是你发现,你曾经误写了其中一个或多个文 件,你需要找回你前面某天的文件,这时候这个文件,无论是在工作目录,还是在备份中都已经被修改了。所以,安全的备份应该是incremental的备 份。你要有办法恢复到原来某天的状态。当然,从实践上来说,保持过去一周的备份,基本上就足够了。另外,如果你是在作一个project, 光是备份是不够的,你需要做source version control,比如用cvs或者subversion等 等。靠简单的备份来管理一个project而不使用version control是极度危险的。如果连备份都不做,那就是愚蠢的。理想的做法,是用version control来管理project, 然后在对version control的respository进行incremental的备份。

扯远了。今天来介绍一个备份 MySQL数据库的简单方法。我主要用这个方法来备份我的WordPress Blog和Gallery的后台MySQL数据库。如果只是简单的备份,用户可以通过mysqldump来获取当前的数据库备份。而WordPress也 提供了一个备份插件,相当于mysqldump的前台。不过,如我前面所说,这样的备份,是意义不大的(不是没有意义),而且不够自动化,每次都需要人为 操作。我用的是如下方法

  1. 下载一个叫做Automatic MySQL Backup的script。这个script将是我用来备份的核心工具。我将它重命名为wp-back.sh,放在/home/zeal/tools/下面 (zeal是我的用户名,/home/zeal是我的home目录)
  2. 配 置:用任何你喜欢的编辑器,编辑这个script, 在文件的开头部分,提供一些必须的参数,比如数据库名称(DBNAMES),数据库用户名(USERNAME),密码(PASSWORD),还有host name (DBHOST)。这就完成了绝大部分的基本配置。然后指定备份存放的路径,我用的是/home/zeal/backups/wp。下面还有一点有 用的配置,就是让这个script在执行的时候,发一封email到你指定的信箱。发送什么内容呢?这可以通过指定MAILCONTENT参数来决定。我 指定的是”files”,这样在这个脚本执行的时候,它会发送一封email给我, 这封email的正文是执行脚本的log, 然后附带有一个attachment,是你要备份的数据库文件。也就是说,我一执行这个脚本,我首先得到一个在本地文件系统的备份,同时我也得到了一个在 我email信箱的备份。好了,gmail的大信箱,这个时候就有用武之地了。:P
  3. 将 脚本的权限改我可执行,然后手工执行一次脚本。这时候,第一次执行的脚本在我的/home/zeal/backups/wp下面产生了3个目录: daily, weekly, monthly。没错,这个脚本自动完成这些工作。自动提供了daily,weekly和monthly的backup。同时,我发现我的email信箱 也收到了备份。Great!
  4. 手工执行脚本,太累太麻烦。我们需要自动执行。我利用的是unix/linux的cron功能。用crontab来编辑我需要让系统替我自动执行 的任务。在shell 下用命令执行“crontab -e”,一个默认编辑器会被唤起(由环境变量EDITOR控制),如果这是第一次加cron job,那么应该是一个空文件。在这个空文件里写入一行”45 8 * * * /home/zeal/tools/wp-backup.sh”。含义是每天早上8点45分执行wp-backup.sh这个脚本。(具体格式含 义,man crontab)。保存,退出。这时候这个cron job就会被载入系统的daemon。如果你想执行多个cron job,每个job都需要写一行描述。你可以用”crontab -l”来看你已设定的cron job。

好了,大功告成。从今以后,我将有daily的backup, 既有本地的也有远程的。在硬盘空间允许的情况下,我可以轻易的找回从今以后任何一天的mysql数据库备份, 想恢复到那一天的就能恢复到。除非我特别倒霉,否则,我很难丢失我的MySQL数据库的内容。

Tags:

这也就是我用blogger的原因之一,不需要自己备份。

有啥方法可以把blog的内容存到自己机器上么?》

M$肯定是不会提供给你什么便利啦。不过可以在自己机器上装一个WP,然后可以通过RSS导入MSN SPACE的内容,基本上还是work的。可以看看这里:备份你的SPACES. 我没有尝试过,因为我也不用MSN Space. 根据这个原理,我怀疑如果有什么rss2html的软件,应该也可以做同样的事情。

Let me tell you: 你看你MSN和SPACE之间的空格有多大,所以我估计你又是用那个什么performancing发的,现在知道问题是什么了吧。

不是这样的。刚才那贴不是performancing发的。你看到的这个问题是因为对齐的设置吧。我的blog用的是justify的alignment所以会出现这种情况。所以如果你调整屏幕分辨率或者浏览器字体大小的话,会发现有那个空格的大小会变化。所以并没有真正的多个空格在里头,只不过是浏览器render的时候,对alignment作出的反应。我目前还没有发现performancing排版的问题,因为用的还不多,不知道yj所指是什么。

Blogger不用备份的前提假设是bsp是可靠的。如果我们假设dreamhost是可靠的,那么同样不需要备份。自己备份的好处在于,可以迅速恢复,而不用和sp联系来联系去。另外sp真的那么可靠?还记得那个Gmail Horror Story吗?而MSN Space也有删除用户blog的前科哦。

因为我很相信google,它的服务器不是世界最多嘛,我想也就是备份最多吧。除非有天灾降临一次摧毁了全部主机。至于人为失误,这就想开一些了,就当laptop被偷了。

我对dh也很信任。之所以要备份是因为怕自己误操作、期满后换别的hosting及wp与mysql软件间自身出现错误。而blogger就没有这些问题。

msn space删blog是政府逼的。

用PFF向blogger发表时也是出现这种大跳格。

很多时候我喜欢用gmail写,然后直接通过email发布帖子。

如何保存我的blog内容?

我的blog都有一年了,那么多文章咋保管啊?你给的连接提到的办法,似乎没用哦。

To Mcdull,

我还真不知道,没有MSN space的备份经验。你可以Google Search一下,因为很多人肯定有同样的考虑。

其实用cvs挺方便的,我一直在用
另外,我信不过任何第三方的blog(包括google),就自己用perl写了一个
泡在自己的机器上,目前有写,编辑,评论,online-html edit,插图等基本功能
什么时候,我release一把。

嗯,做project, cvs或者subversion还是一定要用的。

你perl这么熟练,以后有问题好好请教。

呵呵,一点也不熟练,现学现买的。所以一直羞于把代码贴在网上。
这个word press你是装在local的吧,我其实一开始想找一个,当时没发现word press这么好的,只好自己写了,早知道不用浪费这么多时间了。我同学都说perl phase out了,应该学python了,也许你直接用python比较好。(M5用的是python)

这个wordpress是装在我的host机器上的。是开源的,基于php和mysql的。关于我的host,你可以看看我写的一个介绍. 嗯,我也一直想好好学学python的说。 你的blog有on-line的吗?

我不会php和mysql(也不想学,学不过年轻人),又想弄一个随时可改的,用FCKeditor+perl搞了一个。我的blog真的是类似个人日记,所以目前没想好
是不是拿出来show,呵呵,如果决定了一定会通知你。

用WordPress要求系统支持php和mysql, 但是并不要求用户懂这两样东西。我也完全不会php和mysql. 反正我们只管用,下面的实现是不管了。什么时候,你准备公布源代码了,告诉我一声,我看看你怎么弄的?是不是先用FCKeditor写,然后通过perl发布?