背景:作為運維,備份及其重要,在進行刪改操作,無論是應用系統還是資料庫,還是系統檔案,備份是第一步,警惕一頓操作猛如虎的行為
備份:我可以根據庫備份,也可以根據庫中的表來備份。所以寫了2個指令碼,備份的粒度不一樣,就可以多方面去實現我們想要的恢復效果
一、分庫備份
user=root
passwd=123456
host=localhost
date=$(date +%f-%h-%m-%s)
back_dir=/data/daba_bak
#獲取庫
data_list=$(mysql -u$user -p$passwd -s -e "show databases;" |egrep -v "(database|information_schema|performance_schema|testdata)" 2>/dev/null)
#判斷是否存在備份目錄
if [ ! -d $back_dir ];then
mkdir -p $back_dir
fifor db in $data_list
do #備份檔案,備份失敗則郵件預警
file_name="$back_dir/$_$.sql.gz"
if ! mysqldump -h$host -u$user -p$passwd -b $db |gzip > $file_name 2>/dev/null ;then
echo "mysql dump $db faile,pls check!"|mail -s "mysqldump error" $mail_acc
else
echo "$db mysqldump ok!!"
fidone
二、分表備份
user=root
passwd=lxmlxm
host=localhost
date=$(date +%f-%h:%m:%s)
bak_dir=/data/
db_name=$(mysql -u$user -h$host -p$passwd -s -e "show databases;" |egrep -v "database|information_schema|performance_schema" 2>/dev/null)
if [ ! -d $bak_dir ] ;then
mkdir -p $bak_dir
fifor db in $db_name
do talbe_list=$(mysql -u$user -h$host -p$passwd -s -e "use $db;show tables;")
for table in $talbe_list
do if [ ! -d $bak_dir/$db ] ;then
mkdir -p $bak_dir/$db/
fitable_file_name=$/$/$_$.sql.gz
if ! mysql -u$user -h$host -p$passwd $db $table | gzip > $table_file_name 1>/dev/null ;then
echo "$db-$table mysqldump faile" |mail -s "mysql table dump faile" $mail_acc
else
echo "$db----$table dump successful!"
fi done
done
mysql資料庫備份shell指令碼
bin bash author george zheng 2012 03 12 version 1.2 myuser root mypass k943587 djj as host localhost date date i name date y m d h m s backupdir home ...
shell指令碼備份mysql資料庫
獲取mysql伺服器所有資料庫名稱,過濾掉不需要備份的資料庫 通過mysqldump來for迴圈匯出所有的資料庫的sql檔案 用zip加密壓縮所有的sql檔案 定期進行資料清理工作 bin bash 02.03.1.資料庫資訊定義 04.mysql host 192.168.1.1 05.mysql...
shell指令碼操作MySQL資料庫
搬運出處 mysql hhostname pport uusername ppassword e 相關mysql的sql語句,不用在mysql的提示符下執行mysql,即可以在shell中操作mysql的方法。bin bash hostname 192.168.111.84 資料庫資訊 port 3...