393

すべての MySQL データベースのバックアップを保持したいと考えています。100 以上の MySQL データベースがあります。それらすべてを同時にエクスポートし、一度にすべてを MySQL サーバーに再度インポートしたいと考えています。どうやってやるの?

4

11 に答える 11

859

書き出す:

mysqldump -u root -p --all-databases > alldb.sql

mysqldumpのドキュメントを参照してください。コメントに記載されているオプションのいくつかを使用することをお勧めします。

mysqldump -u root -p --opt --all-databases > alldb.sql
mysqldump -u root -p --all-databases --skip-lock-tables > alldb.sql

輸入:

mysql -u root -p < alldb.sql
于 2012-02-29T11:15:19.570 に答える
10

mysql コマンドは必要なことを直接実行できるのに、フォーマットされた出力を解析するのはなぜですか?

databases=`mysql -u $USER -p$PASSWORD --batch --skip-column-names -e "SHOW DATABASES;" | grep -E -v "(information|performance)_schema"`

データベース名とこれのみをリストします。

于 2015-07-08T13:45:11.033 に答える
4

すべてのデータベースをダンプするとき。明らかに、それは大きなデータを持っています。したがって、以下を優先することができます。

バックアップの作成:

mysqldump -u [user] -p[password]--single-transaction --quick --all-databases | gzip > alldb.sql.gz

エラーの場合

-- 警告: テーブル mysql.event のデータをスキップしています。--events オプションを明示的に指定してください。

使用する:

mysqldump -u [user] -p --events --single-transaction --quick --all-databases | gzip > alldb.sql.gz

バックアップの復元:

gunzip < alldb.sql.gz | mysql -u [user] -p[password]

それが役立つことを願っています:)

于 2016-09-01T07:23:07.553 に答える
4

mysql テーブルの列が異なる場合があるため、異なる MySQL バージョンからエクスポートおよびインポートする場合は注意してください。運が悪いと、権限の付与が機能しない可能性があります。念のため、新しいデータベースにインポートするための許可をダンプするために、このスクリプト (mysql_export_grants.sql ) を作成しました。

#!/bin/sh
stty -echo
printf 'Password: ' >&2
read PASSWORD
stty echo
printf "\n"
if [ -z "$PASSWORD" ]; then
        echo 'No password given!'
        exit 1
fi
MYSQL_CONN="-uroot -p$PASSWORD"
mysql ${MYSQL_CONN} --skip-column-names -A -e"SELECT CONCAT('SHOW GRANTS FOR ''',user,'''@''',host,''';') FROM mysql.user WHERE user<>''" | mysql ${MYSQL_CONN} --skip-column-names -A | sed 's/$/;/g'
于 2015-12-16T03:26:22.330 に答える