mysqldump -all-databasesにはすべてのオブジェクトが含まれますか


回答:


21

mysqldump -all-databasesにはすべてのオブジェクトが含まれているわけではありません

mysqldump --help

  -A, --all-databases Dump all the databases. This will be same as --databases
                      with all databases selected.

したがって、--all-databasesを指定したmysqldumpは、すべてのデータベースのみをダンプします。

すべてのデータベースを新しいサーバーに移行するには、完全なバックアップを作成する必要があります。

mysqldump mysqlインスタンス全体

mysqldump -h... -u... -p... --events --routines --triggers --all-databases > MySQLData.sql

欠点は、この方法で作成されたバックアップは、mysqldumpが生成されたmysqlの同じメジャーリリースバージョンにのみリロードできることです。言い換えると、MySQL 5.0データベースのmysqldump --all-databasesは5.1または5.5にロードできません。理由 ?mysqlスキーマは、メジャーリリース間でまったく異なります。

これは、読み取り可能で移植性の高いユーザーのSQL Grantsをダンプする一般的な方法です。

mysql -h... -u... -p... --skip-column-names -A -e"SELECT CONCAT('SHOW GRANTS FOR ''',user,'''@''',host,''';') FROM mysql.user WHERE user<>''" | mysql -h... -u... -p... --skip-column-names -A | sed 's/$/;/g' > MySQLGrants.sql

RolandoMySQLDBAからの回答をご覧ください。大規模なデータベースのmysqldumpをどのように最適化できますか?


1
--events に加えて必要なものを忘れて--routinesしまい--triggers--single-transaction不必要にテーブルをロックするのを避けるために省略しました。
マイケル-sqlbot

1
明確に--single-transactionするために、バックアップの実行中にMyISAMテーブルが書き込まれている場合、一貫したバックアップを作成しません。ただし、--single-transactionすべてのInnoDBを使用していて、mysqldump実行中のブロックを避けたい場合は、追加することをお勧めします。
ジェームズL
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.