MySQL简易备份方法
2007-11-11 15:10:28 来源:WEB开发网适用对象: MySQL(和PHP搭配之最佳组合) DB管理员.
适用条件: 对 Linux 环境有基础的管理及操作能力.
文章附注: 本篇文章为自由文件,欢迎非商业性质转载,并请注明出处!
商业性质转载请来信告知!
特别注意: 1.本篇文章提供之程式及设定*不一定*符合您的环境,
请依您的系统环境适当地修改程式及设定.
2.在执行任何具破坏性的动作及行为前,
请确认您已作好完整可用的资料备份工作.
目录内容
一.前言
二.错误修正
三.开始备份
四.如何回存
五.MySQL(和PHP搭配之最佳组合)线上备份
六.MySQL(和PHP搭配之最佳组合)线上回存
七.开始排定备份
八.结语
九.参考资料
十.附录-备份Script原始档
一.前言
前几周,正当我在网上快乐的冲浪,在酷!学园快乐的灌口水时, 竟蹦出一页 "phpBB critical error",查询 Database 出现错误的讯息,中断了各学员在各系版唇枪舌战,热烈的讨论,虽然过了不久,系统管理工友把网页修好,但开始连续几个星期,phpBB 讨论区有时还是很容易挂掉,频率大约是 一至二周一次,通常都是在周末大家最闲的时侯发生的,幸好此时刚好世界杯足球赛正好开打,不能到学园灌水,最少还有足球赛可以看. 当时修护的方式,是将 MySQL(和PHP搭配之最佳组合) 服务停止,再把前一次可用的DB档案盖回去, 然後再重新启动 MySQL(和PHP搭配之最佳组合) 服务来测试 phpBB 是否正常,这样子的作法通常都有效, 但总是会遗失某一段时间内的文章,这不是大家所希望的... 为了保存许多珍贵的资料和学园们恶心的口水,我开始著手准备 DB 的备份 工作,准备重建这个有问题 DB ,更为将来校园的迁址作 DB 移转准备.
(DB: Database的简称,以下都以 DB 取代 Database,
phpBB: 酷!学园讨论区系统的软体名称)
二.错误修正
花了一些时间熟悉主机的环境後,我开始寻找错误在那里... 检测 MySQL(和PHP搭配之最佳组合) 内 phpBB 的 DB 後发现,有个 users 的 table 是有问题的,
使用 myisamchk 尝试去修护,发现还不行用预设方式修护,还要多加个 "-o" 的参数才行,在使用myisamchk 时,为避免还有用户来存取 DB ,最好是能够将 MySQL(和PHP搭配之最佳组合) 服务停止,不然最少也要下个 "MySQL(和PHP搭配之最佳组合)admin flush-tables" 後, 再作 myisamchk 指令,像:
myisamchk -o phpbb2_users.MYI
这个动作,可能要作个2~3次,直到没有错误的讯息出现! 修护完,重新启动 MySQL(和PHP搭配之最佳组合) 服务後,就可以用 MySQL(和PHP搭配之最佳组合) 这个 client 的指令, 去 Query 一下 DB 内容,测试看是否正常.很幸运的,DB的部份在此时, 运作是正常的. 当然,在你要备份之前,假如能先检测资料是否正确,那是最好不过了, 假如有需要,可以把检测的工作,排定在备份工作之前,但是记得,这个检测DB 的动作不要排定在 DB 高用量的那段时间,深夜无人上线的时段是个不错的选择!
三.开始备份
phpBB 讨论区的资料档,主要有两个部份,就是 php 主程式和 DB 内容,
php 主程式的备份就比较简单,只要把全部档案 tar 起来就行了,就像:
tar cvfz phpbb2_20020601.tgz phpbb
(上面的 phpbb 是指 phpBB 的 php 网页程式存放目录.)
以後有改到 phpBB 网页程式部份再重新备份一次就行,它的内容资料都写在DB 内,所以 php 程式档部份异动性应该不大.
再来就是 MySQL(和PHP搭配之最佳组合) DB 部份了,预设 MySQL(和PHP搭配之最佳组合) 的 DB 档案是存在 /var/lib/MySQL(和PHP搭配之最佳组合) 内, 以 DB 名称为目录,目录内就是该 DB 的所有资料,像 phpbb2 这个 DB, 就是存在 /var/lib/MySQL(和PHP搭配之最佳组合)/phpbb2 内,在备份前,因为怕资料尚未完全写入磁碟, 而且 MySQL(和PHP搭配之最佳组合) 会 Lock 在使用的 DB 档案,所以应该是要先把 MySQL(和PHP搭配之最佳组合) 先 Shutdown 一下, 整个备份的程序可以下像下面的指令去完成:
/etc/rc.d/init.d/MySQL(和PHP搭配之最佳组合)d stop
tar cvfz phpbb2_db_20020601.tgz phpbb2
/etc/rc.d/init.d/MySQL(和PHP搭配之最佳组合)d start
(上面的 phpbb2 是指存放 phpbb2 这个 DB 的目录.) Ok!这样就完成了! (什麽?就这样! 3行就结束了?!)
对!这样就可以了! 不过要注意的是,怕 DB 内每个 Tables 间的资料有关关联性, 所以最好是把整个 DB 一次备起来,单独只备哪个 Tables 的档案,以後回存时, 怕会有资料关联不一致的问题! 以酷!学园的口水讨论区为例,有21000笔左右的文章加上1200名注册会员,资料库
整个 tar 起来大约30几 MB 左右,每天备份,以一周为周期来计算,备份大约只需要
(35*7=245) 200 多 MB 左右的空间,一星期的备份烧在一张光碟还够!
更多精彩
赞助商链接