嘿,我們有兩臺Web服務器,它們可能在星期五離線。我們在這些服務器上託管了大約90個網站,並且我已經找到了將每個網站文件夾備份到它自己的.tar.gz文件的方法 - 我現在需要的是找到一種方法將我們的數據庫服務器中的每個數據庫作爲自己的SQL備份與一個命令。如何使用一個命令備份多個數據庫以分離文件
目前我知道如何使用PHP myAdmin的唯一方法,但對於100多個有點乏味的數據庫。
是否有一種簡單的方法可以通過SSH將每個數據庫導出爲自己的SQL備份文件?
嘿,我們有兩臺Web服務器,它們可能在星期五離線。我們在這些服務器上託管了大約90個網站,並且我已經找到了將每個網站文件夾備份到它自己的.tar.gz文件的方法 - 我現在需要的是找到一種方法將我們的數據庫服務器中的每個數據庫作爲自己的SQL備份與一個命令。如何使用一個命令備份多個數據庫以分離文件
目前我知道如何使用PHP myAdmin的唯一方法,但對於100多個有點乏味的數據庫。
是否有一種簡單的方法可以通過SSH將每個數據庫導出爲自己的SQL備份文件?
你可能mysqldump --all-databases
但你只會得到一個大的SQL轉儲。
發現這個bash腳本:
for T in `mysql -N -B -e 'show databases' -pYOUR_ROOT_PASSWORD`;
do echo $T;
mysqldump -pYOUR_ROOT_PASSWORD $T | gzip -c > $T.sql.gz;
done
你只需要測試和路徑/名稱適應您的需求。
if [ -z "$1" ]
then
echo "Provide MySQL root password as argument.";
exit;
fi
cnt=0
for T in `mysql -N -B -e 'show databases' -u root -p$1`;
do
D=`date "+%Y_%m_%d_%H_%M_%S"`;
cnt=$((cnt + 1))
File=$T"_"$D;
echo "Backing up $T to $File.sql.gz";
mysqldump -u root -p$1 $T | gzip -c > $File.sql.gz;
echo "Done.";
done
echo "$cnt databases backed up.";
這一個適用於共享託管服務器,它存儲在各個用戶的主文件夾每個備份,使他們能夠恢復/使用/相應刪除它們。
backup_folder="automated_backup/";
if [ "$(id -u)" != "0" ]; then
echo "This script must be run as root" 1>&2
exit 1
fi
if [ -z "$1" ]
then
echo "Provide MySQL root password as argument.";
exit;
fi
cnt=0
for T in `mysql -N -B -e 'show databases' -u root -p$1`;
do
D=`date "+%Y_%m_%d_%H_%M_%S"`;
cnt=$((cnt + 1))
User=`echo $T | cut -d'_' -f 1`
Folder="/home/$User/";
Folder2=$Folder$backup_folder;
if [ -d "$Folder" ]; then
if [ ! -d "$Folder2" ]; then
echo "$Folder2 not exists, creating it …";
mkdir -p $Folder2
fi
File=$Folder2$T"_"$D;
echo "Backing up $T to $File.sql.gz";
mysqldump -u root -p$1 $T | gzip -c > $File.sql.gz;
chown $User.$User -R $Folder2;
echo "Done.";
fi
done
echo "$cnt databases backed up.";
100個數據庫沒有現成的備份策略,你可以利用這個練習? {shudder} – 2011-03-02 16:36:00
我走進了一個我們的服務器管理員無法備份單個文件的工作 - 忘記了他甚至無法通過SSH關閉服務器,即使使用一步一步的備忘單。我是一名訓練有素的平面設計師,但如果我們的服務器可能正在關閉,我正在盡一切可能來保存數據,因爲我們目前沒有備份,除了我以前通過網站逐個完成的備份 – innovati 2011-03-02 16:38:50