mysqldump -all-databases
すべてのオブジェクトが含まれますか?
すべてのデータベースを新しいサーバーに移行する必要があります。
mysqldump -all-databases
すべてのオブジェクトが含まれますか?
すべてのデータベースを新しいサーバーに移行する必要があります。
回答:
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をどのように最適化できますか?
--single-transaction
するために、バックアップの実行中にMyISAMテーブルが書き込まれている場合、一貫したバックアップを作成しません。ただし、--single-transaction
すべてのInnoDBを使用していて、mysqldump
実行中のブロックを避けたい場合は、追加することをお勧めします。
--events
に加えて必要なものを忘れて--routines
しまい--triggers
、--single-transaction
不必要にテーブルをロックするのを避けるために省略しました。