赞
踩
mysql自动备份成sql格式,脚本如下:
#/usr/local/crontab/dumpbackup
# use like this : dumpbackup db1 db2 db3 ...
#! /bin/bash
dbsum=$#
if [ "${dbsum}" -eq 0 ];then
echo "Error:no database chosed"
exit 1
fi
mkdir -p /opt/hotbackup/innodb/
backdir=/opt/hotbackup/innodb/
touch /var/log/pixplayerbackup.log
datetime=`date +"%Y%m%d%H%M"`
filesum=`ls ${backdir} | wc -l`
if [ "${filesum}" -ge 5 ];then
cd ${backdir}
rm -rf `ls | head -1`
fi
cd /usr/local/mysql/bin
for i in $*;do
echo "backing up for database $i starting ..."
/usr/local/mysql/bin/mysqldump -uroot -p123456 --master-data=2 --flush-logs --opt --default-character-set=utf8 $i > ${backdir}$i.sql
echo "backing up for database $i completed"
done
echo "tar and gzip the backed file now ..."
cd ${backdir}
tar -c *.sql | gzip >./${datetime}.tar.gz
rm -rf *.sql
echo "all success ! you can find the backed file in ${backdir} suffixed by .tar.gz"
exit 0
脚本说明,保留最近5天的备份,将数据库备份成sql格式,这种备份能保证数据备份的完整性及正确性。
备注:
mysqldump命令说明:
--databases (--all-databases)
这个选项是备份所有的数据库。
--add-drop-table
这个选项将会在每一个表的前面加上DROP TABLE IF EXISTS语句,这样可以保证IMPORT您的MySQL数据库的时候不会出错,因为每次导回的时候,都会首先检查表是否存在,存在就删除。
--add-locks
这个选项会在INSERT语句中捆上一个LOCK TABLE和UNLOCK TABLE语句。这就防止在这些记录被再次导入数据库时其他用户对表进行的操作.此时,mysqldump命令给每一个产生INSERT语句加上列(field)的名字。当把数据导出导另外一个数据库时这个选项很有用。
-F or -flush-logs
在执行导出之前将会刷新MySQL服务器的log。
-f or -force
即使有错误发生,仍然继续导出。
-l or --lock-tables
导出表的时候服务器将会给表加锁。(同上:--add-locks)
--opt
此选项将打开所有会提高文件导出速度和创造一个可以更快导入的文件的选项。
如果没有使用--opt,MYSQLDUMP就会把整个结果集装载到内存中,然后导出。如果数据非常大就会导致导出失败。这个开关在默认情况下是启用的,如果不想启用它:--skip-opt来关闭它。)
-R
如果要导出存储过程,加 -R开关即可。
--master-data
该选项可以会将当前mysql使用的binlog日志的名称和位置记录到dump中,方便进行在线搭建从服务器,也可以在某些恢复的过程中通过备份的binlog做进一步的恢复操作。
如果--master-data=2,以注释的形式存在
如果--master-data=1,不已注释的形式存在
--no-data
紧紧dump数据库结构创建脚本
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。