mysqldump --single-transaction --quick --triggers --routines --events --user=<用戶名> --password=<密碼> --host=<主機(jī)名> -B <數(shù)據(jù)庫名1> <數(shù)據(jù)庫名2> |gzip > backup.sql.gz
--single-transaction:使用事務(wù)來確保備份數(shù)據(jù)的一致性色解。
--quick:以快速模式進(jìn)行備份,減少鎖定時(shí)間餐茵。
--routines:備份存儲過程和函數(shù)科阎。
--triggers:備份觸發(fā)器。
--events 參數(shù)用于備份 MySQL 數(shù)據(jù)庫中的事件(events)
--user=<用戶名>:指定用于連接到數(shù)據(jù)庫的用戶名忿族。
--password=<密碼>:指定連接到數(shù)據(jù)庫所需的密碼锣笨。請確保在命令行中使用密碼時(shí)注意安全性蝌矛。
--host=<主機(jī)名>:指定數(shù)據(jù)庫服務(wù)器的主機(jī)名或 IP 地址。
<數(shù)據(jù)庫名>:要備份的數(shù)據(jù)庫的名稱错英。
管道(|)和 gzip 命令入撒,將備份結(jié)果壓縮為 gzip 格式,以減少備份文件的大小椭岩。
backup.sql:將備份結(jié)果輸出到名為 backup.sql 的文件中茅逮。您可以根據(jù)需要更改備份文件的名稱和路徑。
備份腳本(并發(fā)5個判哥,同時(shí)備份五個數(shù)據(jù)庫):
#!/bin/bash
# Full backup database.
db_user="*****"
db_pass="**********************"
db_host1="************************"
db_host2="************************"
db_name_1="/Data/sh/dbback/db_name_1"
db_name_2="/Data/sh/dbback/db_name_2"
bak_dir="/db_back/db_bak_sql"
date_dir="/db_back/db_bak_sql/`date -I`"
source /etc/profile
if [ ! -f $date_dir ];then
mkdir -p $date_dir
fi
echo "start_time : `date +%m-%d_%H:%M:%S`" >> $date_dir/time.txt
process=5
tmp_fifofile=/tmp/$$.fifo
mkfifo $tmp_fifofile
exec 86<>$tmp_fifofile
rm $tmp_fifofile
for i in `seq $process`
do
echo >&86
done
function dbdump() {
while read line
do
read -u 86
{
/usr/bin/mysqldump --default-character-set=utf8 --single-transaction --quick --triggers --routines --events -u$db_user -p$db_pass -h$1 $line |gzip > $date_dir/$line.sql.gz
echo >&86
}&
done < $2
wait
}
dbdump $db_host1 $db_name_1
dbdump $db_host2 $db_name_2
exec 86>&-
echo "finish_time : `date +%m-%d_%H:%M:%S`" >> $date_dir/time.txt
cd $bak_dir
tar --remove-files -czvf `date -I`.tar.gz `date -I` &>/dev/null