1

金曜日にオフラインになる可能性のある2つのWebサーバーがあります。これらのサーバーで最大90のWebサイトがホストされており、各Webサイトフォルダーを独自の.tar.gzファイルにバックアップする方法をすでに見つけています。今必要なのは、データベースサーバーから各データベースを独自のデータベースとしてエクスポートする方法を見つけることです。 1つのコマンドでSQLバックアップ。

現在、私が知っている唯一の方法はPHP myAdminを使用することですが、100以上のデータベースの場合は少し面倒になります。

SSH経由で各データベースを独自のSQLバックアップファイルとしてエクスポートする簡単な方法はありますか?

4

3 に答える 3

1

mysqldump --all-databases可能ですが、大きなSQLダンプは1つしか取得できません。

この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

あなたはそれをテストし、あなたのニーズにパス/名前を適応させる必要があります。

于 2011-03-02T16:32:49.060 に答える
0
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.";
于 2013-03-19T14:54:49.680 に答える
0

これは共有ホスティングサーバーに適しており、すべてのバックアップをそれぞれのユーザーのホームフォルダーに保存するため、ユーザーはそれに応じてバックアップを復元/使用/削除できます。

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.";
于 2013-03-19T15:30:18.190 に答える