<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>前后求索 &#187; database</title>
	<atom:link href="http://dwfeng.net/blog/tag/database/feed" rel="self" type="application/rss+xml" />
	<link>http://dwfeng.net/blog</link>
	<description>self.生活{&#124;x&#124; 快乐 &#38;&#38; 幸福}</description>
	<lastBuildDate>Tue, 16 Jun 2009 15:56:02 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>如何自动备份虚拟主机上的数据库</title>
		<link>http://dwfeng.net/blog/2008/04/16/howto-backup-db-on-hosting.html</link>
		<comments>http://dwfeng.net/blog/2008/04/16/howto-backup-db-on-hosting.html#comments</comments>
		<pubDate>Wed, 16 Apr 2008 09:24:24 +0000</pubDate>
		<dc:creator>David</dc:creator>
				<category><![CDATA[Unix]]></category>
		<category><![CDATA[日志]]></category>
		<category><![CDATA[backup]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[shell]]></category>

		<guid isPermaLink="false">http://dwfeng.net/blog/?p=47</guid>
		<description><![CDATA[虚拟主机（hosting）的日常维护中非常重要的一项就是备份数据库了。一旦你的网站发布以后，你的系统就有可能面对各种各样的攻击和不确定性。所以经常的定期备份显得尤为重要。我之前的一个域名下的blog就是因为自己的管理不善，没有进行及时有效的备份而使得数据全部丢失了。所以自从购买的新的Domain和虚拟主机以后，首先就对数据库的备份做一些必要的设置，总结如下，仅供借鉴和参考。 备份的方法有很多，各有利弊： 1. 一般的虚拟主机提供商都提供在线手动备份数据库的功能。可以下载数据库文件到本地或者存储在虚拟主机上。现在比较流行的CPanel都默认提供这种功能。 2. 系统自身的备份功能。比如wordpress的DB backup插件。它可以自动的定时进行数据库备份。特点就是简单易用，具有图形界面。只需要安装相应的插件，简单设置一下就行了。缺点就是只限于特定应用，并不是通用的方法。但鉴于很多人都是为了写Blog而购买虚拟主机，并且WordPress又是最流行的Blog系统。所以这也不失为一个简便方法。 3. 通过自己编写Shell脚本和Linux系统的Cron命令来进行备份。这个方法虽然稍微麻烦一些，但却是一个通用办法。与使用的应用程序无关。可制定性强。这个也是我今天要重点介绍的方法。 使用Shell脚本进行备份需要几个条件，首先需要你购买的虚拟主机支持SSH，即可以远程登录服务器并使用Shell，另外你的服务器还必须允许你使用Cron命令，这样就可能进行定期和自动备份。其次，这个方法只适用于Linux或Unix服务器。最后，就是需要懂得一点儿数据库和Shell的知识。 1. 需要是你的虚拟主机支持SSH，这个根据主机的不同而不同。具体方法可以和你自己的主机提供商联系。我这里以Bluehost为例，默认情况下，bluehost并不能使用SSH。你需要联系他们的客服。他们一般会要你提供你身份证明。确认开通以后，可以使用你喜欢的SSH工具连接你的服务器。Unix/Linux默认就有SSH，Windows必须安装相应程序（这就是我为什么讨厌Windows），我推荐Cygwin，它可以完全模拟Unix的环境。然后，输入下面的命令： ssh （你的用户名）@（你的域名或IP） 比如： ssh bush@abc.com 然后，输入密码，就可登录你的主机了。 2. 编写数据库备份Shell。我这里以Mysql和Bash为例，编写了一个简单的示例Shell，只需要稍作修改就可以用到你自己的主机上了。其实这里只用到了一个mysql程序，即mysqldump，命令的讲解请点击这里。 首先，创建备份目录。 $mkdir ~/backup/database 然后，把下面的代码写进一个Shell文件，比如~/backup/database/myDB-backup.sh #!/bin/bash USERNAME=your home folder BACKUP_DIR=/home/$USERNAME/backup/database PASSWORD=your password DATE_STRING=$(date +%Y)$(date +%m)$(date +%d) FILE_NAME=$DATE_STRING.sql.bz2 mysqldump --add-drop-table --all-databases -u $USERNAME -p$PASSWORD &#124; bzip2 -c &#62; $BACKUP_DIR/$FILE_NAME 最后，要使刚才写的Shell可执行，运行下面的命令： $chmod 755 ~/backup/database/myDB-backup.sh 3. 创建Cron。这个步骤与具体服务商的设置有关。如果使用Cpanel的话大体相同。具体请查看你自己虚拟主机的帮助。一般的在CPanel里，你就可以指定刚才创建的Shell(Command to run)，然后指定Shell定期运行的时间，比如每天午夜12点。 [...]]]></description>
			<content:encoded><![CDATA[<p>虚拟主机（hosting）的日常维护中非常重要的一项就是备份数据库了。一旦你的网站发布以后，你的系统就有可能面对各种各样的攻击和不确定性。所以经常的定期备份显得尤为重要。我之前的一个域名下的blog就是因为自己的管理不善，没有进行及时有效的备份而使得数据全部丢失了。所以自从购买的新的Domain和虚拟主机以后，首先就对数据库的备份做一些必要的设置，总结如下，仅供借鉴和参考。</p>
<p>备份的方法有很多，各有利弊：</p>
<p><strong>1. </strong>一般的虚拟主机提供商都提供在线手动备份数据库的功能。可以下载数据库文件到本地或者存储在虚拟主机上。现在比较流行的CPanel都默认提供这种功能。</p>
<p><strong>2. </strong>系统自身的备份功能。比如<a href="http://wordpress.org">wordpress</a>的<a href="http://www.ilfilosofo.com/blog/wp-db-backup/">DB backup插件</a>。它可以自动的定时进行数据库备份。特点就是简单易用，具有图形界面。只需要安装相应的插件，简单设置一下就行了。缺点就是只限于特定应用，并不是通用的方法。但鉴于很多人都是为了写Blog而购买虚拟主机，并且WordPress又是最流行的Blog系统。所以这也不失为一个简便方法。</p>
<p><strong>3. </strong>通过自己编写Shell脚本和Linux系统的Cron命令来进行备份。这个方法虽然稍微麻烦一些，但却是一个通用办法。与使用的应用程序无关。可制定性强。这个也是我今天要重点介绍的方法。</p>
<p>使用Shell脚本进行备份需要几个条件，首先需要你购买的虚拟主机支持SSH，即可以远程登录服务器并使用Shell，另外你的服务器还必须允许你使用<a href="http://fanqiang.chinaunix.net/a1/b5/20010925/1500001350.html">Cron命令</a>，这样就可能进行定期和自动备份。其次，这个方法只适用于Linux或Unix服务器。最后，就是需要懂得一点儿数据库和Shell的知识。</p>
<p><strong>1. </strong>需要是你的虚拟主机支持SSH，这个根据主机的不同而不同。具体方法可以和你自己的主机提供商联系。我这里以<a href="http://bluehost.com">Bluehost</a>为例，默认情况下，bluehost并不能使用SSH。你需要联系他们的客服。他们一般会要你提供你身份证明。确认开通以后，可以使用你喜欢的SSH工具连接你的服务器。Unix/Linux默认就有SSH，Windows必须安装相应程序（这就是我为什么讨厌Windows），我推荐<a href="http://www.cygwin.com">Cygwin</a>，它可以完全模拟Unix的环境。然后，输入下面的命令：<br />
<code style="font-size: 12px; font-family: Courier New; background-color: #ccc;"><br />
<strong>ssh</strong> （你的用户名）<strong>@</strong>（你的域名或IP）<br />
</code></p>
<p>比如： ssh bush@abc.com</p>
<p>然后，输入密码，就可登录你的主机了。</p>
<p><strong>2. </strong>编写数据库备份Shell。我这里以Mysql和Bash为例，编写了一个简单的示例Shell，只需要稍作修改就可以用到你自己的主机上了。其实这里只用到了一个mysql程序，即mysqldump，命令的讲解请点击<a href="http://dev.mysql.com/doc/refman/5.1/zh/client-side-scripts.html#mysqldump">这里</a>。</p>
<p>首先，创建备份目录。<br />
<code style="font-size: 12px; font-family: Courier New; background-color: #ccc;"><br />
$mkdir ~/backup/database<br />
</code></p>
<p>然后，把下面的代码写进一个Shell文件，比如~/backup/database/myDB-backup.sh</p>
<p><code style="font-size: 12px; font-family: Courier New; background-color: #ccc;"><br />
#!/bin/bash<br />
USERNAME=<strong style="color: green;">your home folder</strong><br />
BACKUP_DIR=/home/$USERNAME/backup/database<br />
PASSWORD=<strong style="color: green;">your password</strong><br />
DATE_STRING=$(date +%Y)$(date +%m)$(date +%d)<br />
FILE_NAME=$DATE_STRING.sql.bz2<br />
mysqldump --add-drop-table --all-databases -u $USERNAME -p$PASSWORD | bzip2 -c &gt; $BACKUP_DIR/$FILE_NAME</code></p>
<p>最后，要使刚才写的Shell可执行，运行下面的命令：</p>
<p>$chmod 755 ~/backup/database/myDB-backup.sh</p>
<p><strong>3. </strong>创建Cron。这个步骤与具体服务商的设置有关。如果使用Cpanel的话大体相同。具体请查看你自己虚拟主机的帮助。一般的在CPanel里，你就可以指定刚才创建的Shell(Command to run)，然后指定Shell定期运行的时间，比如每天午夜12点。</p>
<p><a href="http://dwfeng.net/blog/wp-content/uploads/2008/04/cronjob.jpg" rel="shadowbox[post-47];player=img;"><img class="alignnone size-medium wp-image-48" title="cronjob" src="http://dwfeng.net/blog/wp-content/uploads/2008/04/cronjob-300x174.jpg" alt="" width="300" height="174" /></a></p>
<p>其实，Cron与mysqldump一样是Unix/Linux里的一个工具。但因为是虚拟主机，没有使用cron的权限。只能通过CPanel之类的图形界面来定制你自己的Cron job。如果是独立主机的话，不存在这个问题。</p>
<p>好了，通过上面的是设置，你的数据库都会定期的备份到你指定的文件夹下，并保存为bz2压缩格式。文件名会是你的用户名加上备份日期：</p>
<p>像这样：Bush20080416.sql.bz2</p>
]]></content:encoded>
			<wfw:commentRss>http://dwfeng.net/blog/2008/04/16/howto-backup-db-on-hosting.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
