コンテキスト:
デモブランチが構築されるたびに、製品データベースのコピーをダウンロードして、デモサーバーにセットアップしたいと思います。このようにして、MySQLの下にXデモに対応するXデータベースがあります。
私はmysql_import
を使用してそれを達成しましたが、DBをインポートするときに3〜5分かかります。だからスピードアップするためにXtrabackup
を使いたい。
問題:
問題は、完全バックアップ中に、xtrabackupが必要なすべてのファイルとib_logfile
filesもコピーすることです。
それでは、データベースをdemo_1874
という名前のデータベースにインポートするとします。
--prepare
を2回実行し、結果を圧縮します。/var/lib/mysql
の下に貼り付けます(ib_logfile
)original_db
からdemo_1874
に変更します質問
ib_logfile
のようなファイルをコピーすることにより、このMySQLサーバー上にある他のすべてのデータベースが破壊されますか?
Xtrabackupを使用して他のものを変更せずに他のものの間でデータベースをインポートする他のオプションは何ですか?
必要なのは、部分的なバックアップです。 innodb_file_per_table=ON
は、機能させるための前提条件です。
あなたの場合の手順は次のようになります:
本番サーバーから部分バックアップを取得します
innobackupex --databases="mydatabase" /path/to/backup
移行先サーバーで、エクスポート用のバックアップコピーを準備します。
innobackupex --apply-log --export /path/to/backup
各テーブルについて、これらの手順を繰り返します。
同じ構造の新しいテーブルを作成します(mysqldump -t production
またはSHOW CREATE TABLE t
を使用して本番サーバーから取得します)
demo_1874> CREATE TABLE t (...) ENGINE=InnoDB;
InnoDBが持っているテーブルスペースを破棄する
demo_1874> ALTER TABLE mydatabase.mytable DISCARD TABLESPACE; created.
t.*
ファイルを部分バックアップから/var/lib/mysql/demo_1874
にコピーし、mysql:mysqlにコピーして、部分バックアップからテーブルスペースをインポートします
demo_1874> ALTER TABLE t IMPORT TABLESPACE;
詳細は http://www.percona.com/doc/percona-xtrabackup/2.2/innobackupex/partial_backups_innobackupex.html を参照してください。