配合異步複製,編寫數據庫批量導出導入腳本

部分參考來自網絡,沒有引用出處請見諒。

背景:因爲上一篇文章說的是配置異步複製,需要從其他數據庫中導出相關的數據庫到主機中。

但是並不是全部導出,包含數據庫例如:

ser_XXX_01

ser_XXX_02

ser_XXX_03

ser_XXX_04

ser_XXX_05

cli_YYY_01

cli_YYY_02

cli_YYY_03

cli_YYY_04

iat_ZZZ_01

iat_ZZZ_02

iat_ZZZ_03

而我需要的知識ser_XXX_0*。其實數量要比這大得多。所以手工導出導入的話相當費時,不如多動腦子。

所以就有了如下節奏。

備份(導出)腳本backup - mysql備份.sh如下:

#!/bin/bash
#1.some mysql params:
mysql_host="192.168.0.110"  
mysql_user="user1"  
mysql_passwd="user1"  
  
#mysql backup dir
back_dir="/home/shang/backup/"  

#for filter the need backup databases.
#eg. mysql has many databases: aaa_bbb, ccc_ddd, eee_fff, ggg_hhh, 
# and AAA_XXX_01, AAA_XXX_02,AAA_XXX_03,AAA_XXX_04,AAA_XXX_05,
# but I only need AAA_XXX*.
db_name_filter="AAA_XXX"

if [ ! -d $back_dir ]; then  
    mkdir -p $back_dir  
fi  

# the array of databases should be backup
db_array=$((echo "show databases;" | mysql -u$mysql_user -p$mysql_passwd -h$mysql_host) | grep "${db_name_filter}") 
# echo ${db_arr}

cd $back_dir

for db_name in ${db_array}
do
	mysqldump -h$mysql_host -u$mysql_user -p$mysql_passwd --routines --databases $db_name > "${db_name}_backup.sql"
done

mysql_source - 導入備份.sh腳本如下:

#!/bin/bash
#1.some mysql params:
mysql_host="192.168.0.110"  
mysql_user="user1"  
mysql_passwd="user1"  
  
#mysql backup dir
# all *.sql backup file in here 
back_dir="/home/shang/backup/"  

cd $back_dir

# the array of databases should be backup
db_array=$(ls) 
# echo ${db_arr}

cd $back_dir

for db_name in ${db_array}
do
	#mysqldump -h$mysql_host -u$mysql_user -p$mysql_passwd --routines --databases $db_name > "${db_name}_backup.sql"
	#debug info:
	#echo $db_name
	mysql -h$mysql_host -u$mysql_user -p$mysql_passwd < $db_name
done



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章