MySQL逻辑备份mysqldump

一个用mysqldump做逻辑备份的小脚本

用于小数据量的备份,全库,按日期,按库,按表,进行分类

# date -s "2015/01/01" && bash mybackup.sh

#!/bin/bash

# 使用mysqldump进行逻辑备份
# 目录结构/backup/日期 
# 每隔7天删除旧的备份目录

db_backup_root="/backup"
today=`date +%Y%m%d`

old_backup_dir=`date -d "-7 day" +%Y%m%d`


db_user="root"
db_passwd="geekoo"
sock=`mysql -u$db_user -p$db_passwd -e "show variables like '%sock%'" | grep -v Variable_name | awk {'print $2'}`
mysql_client=`which mysql`
mysqldump_client=`which mysqldump`
xmysql="$mysql_client -S $sock -u$db_user -p$db_passwd"
xmysqldump="$mysqldump_client -S $sock -u$db_user -p$db_passwd"


if [ -d $old_backup_dir ]; then
	echo "delete old backup $old_backup_dir"
	rm -rf $old_backup_dir
fi

if [ ! -d $today ]; then
	mkdir -p $db_backup_root/$today
fi

$xmysql -e "show databases;" | grep -vE "(Database|_schema)" > $db_backup_root/$today/db_list

while read dbname
do 
echo $dbname

if [ ! -d $db_backup_root/$today/$dbname ]; then
	mkdir -p $db_backup_root/$today/$dbname
fi

$xmysql -e "use $dbname; show tables;" | grep -v Tables_in > $db_backup_root/$today/$dbname/table_list

	while read tablename
	do
	echo $tablename
	$xmysqldump $dbname $tablename -R --events --triggers > $db_backup_root/$today/$dbname/$tablename.sql
	
	done < $db_backup_root/$today/$dbname/table_list
done < $db_backup_root/$today/db_list

 

posted @ 2015-10-28 10:49  chgxtony  阅读(155)  评论(0编辑  收藏  举报