:mysql是我们使用最多的数据库如果在日常中正确的对mysql数据进行备份下面我们就来做这事通过脚本来实现
###################################################################################################################################
#!/bin/bash
#backup My databases
#by luox at
source /home/cacti/bash_profile
PATH=/home/cacti/local/mysql/bin:/home/cacti/local/php/bin:/home/cacti/local/apache/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
#date +%Y%m%d
#backup bbs database
mysqldump S /home/cacti/tmp/mysqlsock u bbsuser ppDdWShDzwXSLzSCB defaultcharacterset=gbk opt extendedinsert=false hexblob bbsuser >/home/cacti/backup/bbsuser_bak_`date +%Y%m%d`sql
#compress the bak files
bzip /home/cacti/backup/bbsuser_bak_`date +%Y%m%d`sql
#remove week old bak files
find /home/cacti/backup/ name *bz ctime + exec rm {} \;
##################################################################################################################################
通过上面的脚本就可以实现备份数据简单介绍一下mysqldump这个命令的使用(上文中粗体bbsuser指的是数据库名)
S 指定数据库使用的sock文件一个系统中可以运行多个不同端口的mysql如果要连接这个数据库就需要用到这个参数来指定sock文件
u 指定用户在这里如果我们备份bbsuser数据库只需要用到bbsuser这个用户就可以了当然root用户也可以只不过我们写在脚本里当然用权限小点更佳
p 指定密码使用将密码括起来
defaultcharacterset= 用于设置数据库的格式这和数据库使用默认的语言有关可以连接到数据库里使用show variables;来查看当前一般有utf gbk
opt 实施备份可能是最常用的方法因为备份速度上的优势
extendedinsert=false 是为了导出为多行Insert不然可能因为Insert语句过长出错
hexblob 使用十六进制格式导出二进制字符串字段
A alldatabases Dump all the databases This will be same as databases with all databases selected 可以用于备份所有数据库
PS:使用date +%Y%m%d 可以显示出当天的日期我们在备份时也加个这参数可以起很好的标识备份文件日期作用如果在mysqldump中引用date需要使用`date +%Y%m%d`
bzip 可以将文件压缩成bz的文件并且删除掉原来的
通过find来查找然后根据时间如果多于天(周)就进行删除
:接下来还可以将这个脚本执行放到Crontab中让脚本一天运行一次就可以对数据进行很好的备份了
#################################################################################
#backup my database
* * * /home/cacti/backup/backupmysqlsh >/dev/null >&
#################################################################################
:数据库的导入
/home/cacti/local/mysql/bin/mysql S /home/cacti/tmp/mysqlsock ubbsuser ppDdWShDzwXSLzSCB bbsuser </home/cacti/backup/bbsuser_bak_sql
本文出自 gzmaster 博客请务必保留此出处