弄了一个香港的服务器搞着耍,没怎么耍都快长毛了,今天就拿它出来练练,反正闲着也是闲着。这次就搞一个mysql的增量备份。搞之前,先确定mysql开启了日志:
log-bin=mysql-bin
binlog_format=mixed
如下是随便写了一个脚本,按照每天进行日志备份。
注意:
1,这里是对日志文件每天都全部拷贝了,针对增删改操作较多的,那么日志较大的情况就最好不这么搞了,日志文件可能会很大。
2,操作之前最好先进行一次全量备份,要不只备份这些,数据库本身挂了,拿这个恢复也是有问题的。
#!/bin/bash
#author:21yunwei
today=`date +"%Y%m%d"`
datadir=/home/mysql/data
today_bkdir=/home/backup/mysql/$today
[ ! -d $today_bkdir ] && mkdir -p $today_bkdir && chown -R mysql.mysql $today_bkdir
mysqladmin -hx.x.x.x -uroot -pxxxxx flush-logs
total=`ls $datadir/mysql-bin.* |wc -l`
total=`expr $total - 2`
for f in `ls $datadir/mysql-bin.*|head -n $total`
do
bf=`basename $f`
cp $f $today_bkdir/$bf
done
执行结果:
[[email protected] 20160329]# ll
总用量 7712
-rw-r----- 1 root root 1146 3月 29 17:38 mysql-bin.000001
-rw-r----- 1 root root 539 3月 29 17:38 mysql-bin.000002
-rw-r----- 1 root root 535 3月 29 17:38 mysql-bin.000003
-rw-r----- 1 root root 1134 3月 29 17:38 mysql-bin.000004
-rw-r----- 1 root root 7846058 3月 29 17:38 mysql-bin.000005
-rw-r----- 1 root root 167 3月 29 17:38 mysql-bin.000006
-rw-r----- 1 root root 167 3月 29 17:38 mysql-bin.000007
-rw-r----- 1 root root 167 3月 29 17:38 mysql-bin.000008
-rw-r----- 1 root root 167 3月 29 17:38 mysql-bin.000009
-rw-r----- 1 root root 167 3月 29 17:38 mysql-bin.000010
-rw-r----- 1 root root 167 3月 29 17:38 mysql-bin.000011
-rw-r----- 1 root root 167 3月 29 17:38 mysql-bin.000012
-rw-r----- 1 root root 167 3月 29 17:38 mysql-bin.000013
补充内容:
1,可以根据实际需要写入到任务计划里边执行这个脚本。
2,从网上看到日志还有几个参数,这里记录下便于后续使用:
[mysqld]binlog_format = MIXED //binlog日志格式
log_bin =目录/mysql-bin.log //binlog日志名
expire_logs_days = 7 //binlog过期清理时间
#max_binlog_size 100m //binlog每个日志文件大小 最大值和默认是1个G
binlog-do-db=game #需要备份的数据库名,如果备份多个数据库,重复设置这个选项即可
binlog-do-db=platform #
#binlog-ignore-db=不需要备份的数据库,如果备份多个数据库,重复设置这个选项即可