MySQLで別データベース間でテーブルをレプリケートする方法

MySQLでは2つの方法で、データベース間のレプリケーションに対応するテーブルを作成できます。

方法1:INSERT INTO SELECT ステートメントの利用

  1. 空のテーブルをターゲットデータベースに作成し、ソースデータベースのテーブル構造と同じ構造にします。
  2. INSERT INTO SELECTを使って元のデータベースのデータを宛先データベースのテーブルへ挿入する。

サンプルコードは以下のとおりです。

INSERT INTO destination_database.destination_table
SELECT * FROM source_database.source_table;

MySQLレプリケーション機能を利用する方法

  1. ソースデータベースのmy.cnf設定ファイルに次の設定を追加する:
server-id=1
log-bin=mysql-bin
  1. 構成を有効にするため、ソースデータベースサーバーを再起動します。
  2. ターゲットデータベースのmy.cnf設定ファイルに次の設定を追加してください。
server-id=2
log-bin=mysql-bin
replicate-do-db=source_database
  1. 再起動して構成を有効にします。
  2. コピー元のテーブルと同じテーブルを対象データベース上に作成します。
  3. ターゲットデータベース内で以下のコマンドを実行し、ターゲットデータベースとソースデータベース間にレプリケーション関係を作成します。
CHANGE MASTER TO
MASTER_HOST='source_database_host',
MASTER_USER='replication_user',
MASTER_PASSWORD='replication_password',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=123456;

source_database_hostがソースデータベースのホスト名、replication_userがレプリケーション権限を持つユーザー、replication_passwordは当該ユーザーのパスワード、mysql-bin.000001はソースデータベースでバイナリログアーカイブのファイル名、123456はソースデータベースでバイナリログアーカイブのポジション

START SLAVE;

注意事項:

  1. レプリケーション機能を使用する場合は、必ずソースデータベースとターゲットデータベースのバージョンが同じであることを確認してください。
  2. コピー操作を行う前に、宛先データベースにコピー元のデータベースにあるテーブルと同じ名前のテーブルがないことを確認してください。そうしないとコピーが失敗します。
  3. レプリケーション時、ソースデータベースとターゲットデータベース間のネットワーク接続が利用可能である必要があります。そうしないと、レプリケーションは中断されます。
bannerAds