# crontab -l
- */15 * * * * /usr/sbin/ntpdate 210.72.145.44 > /dev/null 2>&1
- #每周日的2:01进行一次全备
- 01 02 * * 0 /usr/local/bin/mysqlbakfull.sh > /dev/null 2>&1
- #每周一至六的2:01进行增量备份
- 01 02 * * 1-6 /usr/local/bin/mysqlbak.sh > /dev/null 2>&1
# cat /usr/local/bin/mysqlbakfull.sh
- #!/bin/bash
- #定义一年中的第几周
- datestr=`date +%Y%m-%U`
- #定义数据库备份目录
- sqlbakdir=/opt/mysqlbak/$datestr
- #数据库数据目录
- mysqldir=/usr/local/mysql/data/;
- #定义要拷贝的bin-log文件
- a=`tail -n1 $mysqldir/mysql-bin.index |cut -c3-18`
- #创建数据库备份目录
- if [ ! -d "$sqlbakdir" ]; then
- mkdir -p "$sqlbakdir"
- fi
- #全备数据到指定的目录中
- /usr/local/mysql/bin/mysqldump --opt -uroot -p'password' dbname > $sqlbakdir/dbname.sql
- #全备后可以删除不需要的bin-log文件,节省磁盘空间
- /usr/local/mysql/bin/mysql -uroot -p'password' -e "PURGE BINARY LOGS TO '$a';";
- #/usr/local/mysql/bin/mysql -uroot -p'password' -e "PURGE BINARY LOGS BEFORE '$tadayis 02:01:00';";
# cat /usr/local/bin/mysqlbak.sh
- #!/bin/bash
- datestr=`date +%Y%m-%U`;
- #日期格式形如“201010080201”
- datestr2=`date '+%Y%m%d%H%M'`;
- mysqldir=/usr/local/mysql/data/;
- sqlbakdir=/opt/mysqlbak/$datestr
- cd $mysqldir
- a=`tail -n1 $mysqldir/mysql-bin.index`
- /usr/local/mysql/bin/mysqladmin -uroot -p'password' flush-logs
- cp $a $sqlbakdir/mysql-bin.$datestr2
最后再做个计划任务,将目录$datestr打包用ftp/ssh/rsync传输到异地