十五年测试老手,长期负责WEB\APP 项目测试,目前主要负责团队管理工作。

计划备份mysql数据库

上一篇 / 下一篇  2009-06-14 10:11:11 / 个人分类:mysql

1:mysql是我们使用最多的数据库,如果在日常中正确的对mysql数据进行备份,下面我们就来做这事,通过脚本来实现
5CmVB_(}051Testing软件测试网2dT#@M l!`:c%X9x
###################################################################################################################################
A,~'w1I w h5K;r"E[ \(~0#!/bin/bash51Testing软件测试网9z(j'P9XY"^SG3I [
#backup My databases51Testing软件测试网0@!J&Yqi3XUZwA
#by luox at 2008-10-2451Testing软件测试网n.rd*c.} u
source /home/cacti/.bash_profile51Testing软件测试网)p4A `;h xn+z7j
PATH=/home/cacti/local/mysql5.0.22/bin:/home/cacti/local/php5.2.6/bin:/home/cacti/local/apache2.2.9/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin51Testing软件测试网#Y2X;e!f5r-L1W2[.A8r
51Testing软件测试网0QK?rz+q0|${,P
#date +%Y-%m-%d
K}:s5zSt6A3w0#backup bbs database
2z9C!MqK+v7FH0mysqldump -S /home/cacti/tmp/mysql.sock -u bbsuser -p'pDdWShDzwXSLzSCB' --default-character-set=gbk --opt --extended-insert=false --hex-blobbbsuser>/home/cacti/backup/bbsuser_bak_`date +%Y-%m-%d`.sql
c6X In? nr-L'j h btK051Testing软件测试网0R+^W \u(U
#compress the bak files
6p&MG3JU \3@0bzip2 /home/cacti/backup/bbsuser_bak_`date +%Y-%m-%d`.sql51Testing软件测试网Pr8c(xm;f6L

r9V\ m JW6}NG0
^ VV:Qfz`]0#remove 4 week old bak files51Testing软件测试网+m fx&]gK4Ci
find /home/cacti/backup/ -name '*.bz2' -ctime +28 -exec rm {} \;51Testing软件测试网 ^"m3YcIL~v5w

R'J'Rp#d'c0##################################################################################################################################51Testing软件测试网4j?4pF#EP
通过上面的脚本就可以实现备份数据,简单介绍一下mysqldump这个命令的使用(上文中粗体bbsuser指的是数据库名)
C%{H"\ Oh0O'],R0-S 指定数据库使用的sock文件,一个系统中可以运行多个不同端口的mysql,如果要连接这个数据库就需要用到这个参数来指定sock文件
Pu0Kay_0p0-u 指定用户,在这里,如果我们备份bbsuser数据库,只需要用到bbsuser这个用户就可以了。当然root用户也可以,只不过我们写在脚本里当然用权限小点更佳
B~F` n5b(n$CX0-p 指定密码,使用''将密码括起来
I-u:ImC0]0--default-character-set= 用于设置数据库的格式,这和数据库使用默认的语言有关,可以连接到数据库里使用show variables;来查看当前,一般有utf8 gbk
*mqdSVF!I4Q8A0--opt 实施备份可能是最常用的方法,因为备份速度上的优势
8p1yQ&i`(f0--extended-insert=false 是为了导出为多行Insert,不然可能因为Insert语句过长出错
#W`!B y!?_ u)xpq0--hex-blob 使用十六进制格式导出二进制字符串字段
o,FK;b aVQ0-A, --all-databases Dump all the databases. This will be same as --databases with all databases selected. 可以用于备份所有数据库51Testing软件测试网 kQv3d;E NS]
PS:使用date +%Y-%m-%d 可以显示出当天的日期,我们在备份时也加个这参数可以起很好的标识备份文件日期作用。如果在mysqldump中引用date需要使用`date +%Y-%m-%d`51Testing软件测试网w$D*tF_J

I(p~&Yp,w)SW"D02:bzip2 可以将文件压缩成bz2的文件,并且删除掉原来的,
W)J;l"Bs'q%w@kM0
(DL@7i7? w5u0C!_03:通过find来查找,然后根据时间,如果多于28天(4周)就进行删除。51Testing软件测试网!s8{i%@H/uC

#s'@0Y-L ub!T3Y)Mh04:接下来还可以将这个脚本执行放到Crontab中,让脚本一天运行一次,就可以对数据进行很好的备份了。51Testing软件测试网/}N"{ ]1Sp n
#################################################################################51Testing软件测试网@s(L3[ D,]Y"d
#backup my database
u&GtxD)J05 0 * * * /home/cacti/backup/backupmysql.sh >/dev/null 2>&151Testing软件测试网%x{^Fj
#################################################################################
@#mkq$_3YJj\x nD051Testing软件测试网bJ:X'w`\:T-I
3:数据库的导入:51Testing软件测试网0k(T{ pz2oy#MjP
/home/cacti/local/mysql5.0.22/bin/mysql -S /home/cacti/tmp/mysql.sock -ubbsuser -p'pDdWShDzwXSLzSCB' bbsuser </home/cacti/backup/bbsuser_bak_2008-10-24.sql51Testing软件测试网6keq`he+r2n$P

gq0y9U'd&?9s0

TAG: 数据库 MySQL 备份

 

评分:0

我来说两句

Open Toolbar