一、信息摘要
linux版本:CentOS 7.9
mysql版本:MySQL 5.7.36
腳本實現(xiàn)功能:利用mysqldump工具實現(xiàn)對mysql中的數(shù)據(jù)庫分庫備份,和對所備份數(shù)據(jù)庫中的表分表備份
二、shell腳本
#!/bin/bash
#########################
#File name:mysqlbak.sh
#Version:v1.0
#Email:peng779016@163.com
#Created time:2023-07-26 14:21:05
#Description:
#########################
#定義變量
bak_user='root'
bak_password='123456'
bak_cmd="-u${bak_user} -p${bak_password}"
exclude_db="information_schema|mysql|performance_schema|sys"
bak_dir=/backup/db
#分庫備份
[ -d ${bak_dir} ] || mkdir -p ${bak_dir}
mysql ${bak_cmd} -e "show databases" -N 2>/dev/null | egrep -v "${exclude_db}" > dbtmp
while read db
do
mysqldump ${bak_cmd} --set-gtid-purged=off -B $db 2>/dev/null | gzip > ${bak_dir}/`date +%F`-$db.sql.gz
if [ $? -eq 0 ]
then
echo "database $db is being backed up ... success!"
else
echo "database $db is being backed up ... failure!"
fi
#分表備份
[ -d ${bak_dir}/$db ] || mkdir -p ${bak_dir}/$db
mysql ${bak_cmd} -N -e "use $db;show tables" 2>/dev/null > tbtmp
while read tb
do
mysqldump ${bak_cmd} --set-gtid-purged=off $db $tb 2>/dev/null | gzip > ${bak_dir}/$db/`date +%F`-$db-$tb.spl.gz
if [ $? -eq 0 ]
then
echo "table $tb is being backed up ... success!"
else
echo "table $tb is being backed up ... failure!"
fi
done < tbtmp
done < dbtmp
#刪除臨時文件
rm -rf dbtmp
rm -rf tbtmp
三、腳本描述
1)定義變量
定義了備份用戶、備份用戶密碼、備份參數(shù)命令(簡化代碼)、不需要備份的數(shù)據(jù)庫、備份目錄這些變量。
2)分庫備份
- 首先檢查備份目錄是否存在,不存在則創(chuàng)建。
- 然后提取出將要備份的數(shù)據(jù)庫名到臨時文件dbtmp中。
- while循環(huán)讀取臨時文件dbtmp中的行數(shù)據(jù),用mysqldump命令壓縮備份每個數(shù)據(jù)庫并在備份目錄下產(chǎn)生數(shù)據(jù)庫備份文件。
- 輸出備份結(jié)果信息。
3)分表備份
- 首先檢查備份目錄下是否存在以數(shù)據(jù)庫為名的目錄,不存在則創(chuàng)建。
- 然后提取出每次循環(huán)數(shù)據(jù)庫中的每個表名到臨時文件tbtmp中。
- 嵌套while循環(huán)讀取臨時文件tbtmp中的行數(shù)據(jù),用mysqldump命令壓縮備份每個表并在備份目錄/數(shù)據(jù)庫名/目錄下生成表備份文件。
- 輸出備份結(jié)果信息。
4)刪除臨時文件
最后刪除臨時文件。
四、腳本功能測試
1)執(zhí)行shell腳本,分庫分表備份mysql數(shù)據(jù)庫,執(zhí)行結(jié)果如下:
?2)測試備份文件的可用性
數(shù)據(jù)庫備份文件正常。
表備份文件正常。文章來源:http://www.zghlxwxcb.cn/news/detail-608708.html
該腳本功能正??捎谩?span toymoban-style="hidden">文章來源地址http://www.zghlxwxcb.cn/news/detail-608708.html
到了這里,關(guān)于利用mysqldump實現(xiàn)分庫分表備份的shell腳本的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!