Documentation Home
MySQL 5.6 リファレンスマニュアル
Download this Manual
PDF (US Ltr) - 26.8Mb
PDF (A4) - 26.9Mb
HTML Download (TGZ) - 7.1Mb
HTML Download (Zip) - 7.2Mb


MySQL 5.6 リファレンスマニュアル  /  ...  /  ローデータファイルを使用したデータスナップショットの作成

17.1.1.6 ローデータファイルを使用したデータスナップショットの作成

データベースが大きい場合、ローデータファイルをコピーする方が、mysqldump を使用して各スレーブでファイルをインポートするよりも、効率が高くなる場合があります。この方法では、INSERT ステートメントが繰り返されたときのインデックス更新のオーバーヘッドが省かれます。

複雑なキャッシュまたはロギングアルゴリズムを持つストレージエンジンのテーブルでこの方法を使用すると、完全なポイントインタイムスナップショットを作成するための追加手順が必要となります。グローバル読み取りロックを獲得した場合、最初のコピーコマンドはキャッシュ情報とロギング更新が除外する場合があります。ストレージエンジンがこれにどのように反応するかは、そのクラッシュリカバリ能力によります。

マスターとスレーブで ft_stopword_fileft_min_word_len、または ft_max_word_len の値が異なり、全文インデックスを持つテーブルをコピーする場合も、この方法が確実に機能するとはかぎりません。

InnoDB テーブルを使用する場合、MySQL Enterprise Backup コンポーネントから mysqlbackup コマンドを使用して、一貫性のあるスナップショットを作成できます。このコマンドは、あとでスレーブで使用するために、スナップショットに対応するログ名とオフセットを記録します。MySQL Enterprise Backup は MySQL Enterprise サブスクリプションの一部として同梱される製品です。詳細は、セクション25.2「MySQL Enterprise Backup」を参照してください。

または、コールドバックアップ技術を使用して InnoDB テーブルの信頼できるバイナリスナップショットを取得します。MySQL Server のスローシャットダウン を実行したあとにすべてのデータファイルをコピーします。

MyISAM テーブルのローデータスナップショットを作成するには、MySQL データファイルが単一ファイルシステム上に存在するという条件で、cpcopy などの標準コピーツール、scprsync などのリモートコピーツール、ziptar などのアーカイブツール、dump などのファイルシステムスナップショットツールを使用できます。特定のデータベースだけを複製する場合、それらのテーブルに関係するファイルだけをコピーします。(InnoDB の場合、すべてのデータベースのすべてのテーブルは、innodb_file_per_table オプションを有効にしている場合を除いて、system tablespace ファイルに格納されます。)

次のファイルは明確にアーカイブから除外することをお勧めします。

ローデータスナップショットでもっとも一貫性のある結果を得るには、次のように、プロセス中にマスターサーバーをシャットダウンします。

  1. 読み取りロックを獲得してマスターのステータスを取得します。セクション17.1.1.4「レプリケーションマスターバイナリログ座標の取得」を参照してください。

  2. 個別のセッションで、マスターサーバーをシャットダウンします。

    shell> mysqladmin shutdown
  3. MySQL データファイルのコピーを作成します。次の例では、これを行うための一般的な方法を示します。この中の 1 つだけを選択する必要があります。

    shell> tar cf /tmp/db.tar ./data
    shell> zip -r /tmp/db.zip ./data
    shell> rsync --recursive ./data /tmp/dbdata
  4. マスターサーバーを再起動します。

InnoDB テーブルを使用しない場合、次の手順で説明するとおり、サーバーをシャットダウンしないでマスターからシステムのスナップショットを取得できます。

  1. 読み取りロックを獲得してマスターのステータスを取得します。セクション17.1.1.4「レプリケーションマスターバイナリログ座標の取得」を参照してください。

  2. MySQL データファイルのコピーを作成します。次の例では、これを行うための一般的な方法を示します。この中の 1 つだけを選択する必要があります。

    shell> tar cf /tmp/db.tar ./data
    shell> zip -r /tmp/db.zip ./data
    shell> rsync --recursive ./data /tmp/dbdata
  3. 読み取りロックを獲得したクライアントでは、ロックを解除します。

    mysql> UNLOCK TABLES;

データベースのアーカイブまたはコピーを作成したあと、スレーブレプリケーションプロセスを開始する前に、各スレーブにファイルをコピーします。


User Comments
User comments in this section are, as the name implies, provided by MySQL users. The MySQL documentation team is not responsible for, nor do they endorse, any of the information provided here.
  Posted by John Kounis on April 25, 2011
If you have stored procedures, you cannot skip copying over the mysql database, as this procedure recommends. You must copy the mysql database over too, since stored procedures are stored in the "proc" table in the mysql database.
  Posted by Joeri Beirens on April 14, 2014
When you use the backup for slave data, you need to move these file from the new data directory:

master.info
auto.cnf
relay-log.info

Otherwise the server you copied the data to cannot act as slave of the server you copied the data from.
Sign Up Login You must be logged in to post a comment.