弄了一个香港的服务器搞着耍,没怎么耍都快长毛了,今天就拿它出来练练,反正闲着也是闲着。这次就搞一个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
执行结果:
[root@HK-VPN 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=不需要备份的数据库,如果备份多个数据库,重复设置这个选项即可
转载请注明:21运维 » mysql 增量备份shell简易脚本