mysqldump全备脚本

针对数据量比较小的数据库,可以使用mysqldump进行逻辑备份。

建议数据库大小在5G以下,备份速度跟物理备份可能差不多,最好在从库或专有备份库上备份,如果是单库,建议是凌晨5点以及错开这个时间段对数据库操作比较久的事件。

cat mysqldump.sh

#!/bin/bash
# mysql_config_editor set --login-path=root --user=root  --host=127.0.0.1 --port=3306 --socket=/data/mysql/mysql.sock --password

export MYSQL_TEST_LOGIN_FILE=/root/.mylogin.cnf

Date=`date -d 'today' +%Y%m%d`
Date14=`date -d '14 days ago' +%Y%m%d`
backdir='/data/mysqldump'
mkdir -p $backdir

Dbname=`/usr/bin/mysql --login-path=root -e "show databases" | grep -Ev "test|information_schema|performance_schema|Database"`

for i in $Dbname
  do
   /usr/bin/mysqldump --login-path=root --single-transaction --master-data=2 --routines --flush-privileges --databases  $i |gzip > $backdir/"$i"."$Date".sql.gz
done

find $backdir -name "*$Date14.sql.gz" -exec rm -f {} \;
#Linux解压缩保留源文件的方法:
#gunzip –c filename.gz > filename

几个常见参数说明,默认都是FALSE

# single-transaction 适用innodb,目的是保持一致性
# master-data=2 注释change master to 
# routines 备份存储过程(函数),根据你的需要,还可以-E 备份事件
# flush-logs 转储日志(binlog)

猜你喜欢

转载自my.oschina.net/longquan/blog/1801632