mysql分批導出數據和分批導入數據庫
由於某些原因,比如說測試環境有很多庫,需要遷移到新的環境中,不需要導出系統庫的數據。而數據庫又有好多,如何才能將每個庫導出到獨立的文件中呢?導入到一個文件的話,又很大,不好辦。
這里是這個在測試環境下的實驗記錄,方便操作。
# 導出的腳本
#!/bin/bash ####################################################### # Function: dump databases # Author: davie # Date: 2019-05-20 # Version: 1.0 # Script name: /usr/local/scripts/mutiple_database_dump.sh ####################################################### Date_time=`date +%F_%H_%M` Host="192.168.100.100" User_name="admin" Pass_word="admin_password" Back_dir="/data/mysql/lww_dump/192.168.100.100_dump" Mysql_cmd="/usr/local/mysql/bin" if [ ! -d $"Back_dir" ] ;then mkdir -p "${Back_dir}" fi "${Mysql_cmd}"/mysql -h "${Host}" -u"${User_name}" -p"${Pass_word}" -e "show databases"|grep -Evi 'Database|information_schema|mysql|performance_schema' | while read db; do echo "$db"
"${Mysql_cmd}"/mysqldump -h "${Host}" -u"${User_name}" -p"${Pass_word}" --opt --hex-blob --default-character-set=utf8mb4 --skip-tz-utc --single-transaction --master-data=2 -B "${db}" | gzip> "${Back_dir}"/"${db}"."${Date_time}".sql.gz & done
# 導入腳本
# 導入腳本 #!/bin/bash ####################################################### # Function: import databases # Author: davie # Date: 2019-05-20 # Version: 1.0 # Script name: /usr/local/scripts/mutiple_database_import.sh ####################################################### Date_time=`date +%F_%H_%M` Host="192.168.100.101" User_name="admin" Pass_word="admin_password" Back_dir="/data/mysql/lww_dump/192.168.100.100_dump" Mysql_cmd="/usr/local/mysql/bin" Log_file="/data/mysql/lww/lww_dump/logs" ls "${Back_dir}" | while read dbfile; do /usr/bin/gunzip <"${Back_dir}"/"${dbfile}" | "${Mysql_cmd}"/mysql -h "${Host}" -u"${User_name}" -p"${Pass_word}" if [ $? -eq 0 ]; then echo "${Date_time}" >>"${Log_file}"/"${Host}".import.logs echo ""${dbfile}" ok" >>"${Log_file}"/"${Host}".import.logs else echo "${Date_time}" >>"${Log_file}"/"${Host}".import.logs echo ""${dbfile}" error" >>"${Log_file}"/"${Host}".import.logs fi done