使用use db_name;show tables 获得所有表。脚本针对MySQL5以上版本,mysql4以下未测试,mysqldump 参数可能有变。 备份表的路径:/backup_mysql/当天日期/数据名 这个目录中。 #!/bin/bash MYUSER=root MYPASS=123456 HOST=localhost BACKUPDIR=/backup_mysq
使用use db_name;show tables 获得所有表。脚本针对MySQL5以上版本,mysql4以下未测试,mysqldump 参数可能有变。
备份表的路径:/backup_mysql/当天日期/数据名 这个目录中。
#!/bin/bash
MYUSER="root"
MYPASS="123456"
HOST="localhost"
BACKUPDIR="/backup_mysql"
DATE=`date -I`
RETENTION=20
#MYSQLDATA="/var/lib/mysql"
[ ! -d $BACKUPDIR/$DATE ] && mkdir -p $BACKUPDIR/$DATE
DBS=`mysql -u$MYUSER -p$MYPASS -Bse "show databases"|grep -v "information_schema" |grep -v "test"`
for db_name in $DBS
do
mkdir -p $BACKUPDIR/$DATE/$db_name
tables=`mysql -u$MYUSER -p$MYPASS -Bse "use $db_name;show tables"`
for table_name in $tables
do
mysqldump -u$MYUSER -p$MYPASS -h$HOST --single-transaction --master-data=2 $db_name $table_name >$BACKUPDIR/$DATE/$db_name/$table_name.sql
done
done
cd $BACKUPDIR
tar zcf $DATE.tar.gz $DATE && rm -rf $BACKUPDIR/$DATE
find $BACKUPDIR -type d -ctime +$RETENTION | xargs rm -rf
注:使用tar 打包绝对路径时,出现tar: Removing leading `/' from member names 警告 ,解决办法,增加-P 参数或者cd到打包目录(推荐);tar 不输出信息,去掉-v参数。
tar 的 P 参数解释: -P, --absolute-names don't strip leading `/'s from file names
--转自