1 つのコマンドで特定の数の MySql データベースをエクスポートする方法

1 つのコマンドで特定の数の MySql データベースをエクスポートする方法

約 100 個の異なるデータベースを含む MySql サーバーで約 20 個のデータベースをエクスポートする必要があります。コンソール コマンドを使用して、データベース名のリストを個別のファイルにエクスポートすることは可能ですか? (もちろん Linux の場合)。

答え1

echo "show databases" | mysql -N | while read db
do
  mysqldump ${db} > ${db}.sql
done

grep不要なデータベースを削除するには、次のように使用できますmysqlinformation_schema

答え2

バックアップしたい各データベースの名前を1行ずつ記述したテキストファイルを作成します。

例えば

db1
reports

次に、次のようなスクリプトを使用します

#!/bin/bash
ERRORS=0

while read db
do
    echo "Processing $db"
    mysqldump -u root -p365576dx "$db" >"$db".sql
    EXITSTATUS=$?
    if [ "$ERRORS" -eq "0" -a "$EXITSTATUS" -ne "0" ]
    then
       ERRORS="$EXITSTATUS"
    fi

done<dbstodump

if [ "$ERRORS" -ne "0" ]
then
    echo "Errors occurred see above for details"
    exit 1
fi

答え3

最も簡単な解決策は、コマンド ライン上で単純な for ループを使用することです。私の例では、データベースcarsanimals、をエクスポートしますcomputers

for db in cars animals computers ; do mysqldump -uuser -ppassword "$db" > "$db.sql" ; done

関連情報