1. 程式人生 > >shell 備份資料庫分表備份

shell 備份資料庫分表備份

對資料庫分表備份。

#!/bin/sh
# 定義資料庫連線引數
db_host=127.0.0.1
db_port=3306
db_username=root
db_password=123456


#定義當前伺服器要備份的資料庫
db_name=(bajie beidailu)

#定義要忽略的資料表
ignore_table=(snake_articles snake_group wxshop_admin)

#獲取當前日期
today=`date +%Y-%m-%d`
#定義檔案儲存目錄
backup_dir=/Users/xubin/backup

#遍歷資料表
for db in ${db_name[@]};
do
#獲取當前資料庫的所有表`
tables=`mysql -h${db_host} -u${db_username} -p${db_password} -Bse  "use $db;show tables"`
	for tabs in ${tables[@]}
	do

	if [[ "${ignore_table[@]}" =~ $tabs ]];then
		echo $tabs
	else
		dump_dir=$backup_dir/$today/$db
		if [ ! -d "$dump_dir" ];then
		mkdir -p $dump_dir
		fi
		mysqldump -u${db_username} -p${db_password} ${db} $tabs 2>/dev/null | gzip>$dump_dir/$tabs.sql.gz
	fi
	done
done

#清理10天之前的備份資料
cd /Users/xubin/backup
rm -rf `find . -name "*" -mtime +10`

註釋:

查詢檔案更新日時在距現在時刻二天以內的檔案 find ./ -mtime -2

查詢檔案更新日時在距現在時刻二天以上的檔案 find ./ -mtime +2

查詢檔案更新日時在距現在時刻一天以上二天以內的檔案 find ./ -mtime 2

查詢檔案更新日時在距現在時刻二分以內的檔案 find ./ -mmin -2

查詢檔案更新日時在距現在時刻二分以上的檔案 find ./ -mmin +2

查詢檔案更新日時在距現在時刻一分以上二分以內的檔案 find ./ -mmin 2

這個時間是檔案的建立時間不是檔名稱

使用效果: