データベース · 1 min read · Dec 23, 2025

MySQLでのデータベースレプリケーションの設定方法

これは“コピー&ペースト”のHowToです!

このチュートリアルに従う最も簡単な方法は、コマンドラインクライアント/SSHクライアント(Windows用の

PuTTY

など)を使用し、コマンドをコピー&ペーストすることです(IPアドレス、ホスト名、パスワードなどの自分の情報を提供する必要がある場合を除く)。これにより、タイプミスを避けることができます。

MySQLでのデータベースレプリケーションの設定方法

バージョン 1.1
著者: Falko Timme
最終編集日: 2006年1月14日

このチュートリアルでは、MySQLでのデータベースレプリケーションの設定方法を説明します。MySQLレプリケーションを使用すると、マスターサーバーから別のサーバー(スレーブ)にデータベースの正確なコピーを持つことができ、マスターサーバーのデータベースへのすべての更新が即座にスレーブサーバーのデータベースにレプリケートされるため、両方のデータベースが同期されます。これはバックアップポリシーではありません。なぜなら、誤って発行されたDELETEコマンドもスレーブで実行されるからです。しかし、レプリケーションはハードウェア障害からの保護に役立ちます。

このチュートリアルでは、IPアドレス192.168.0.100のマスターからデータベースexampledbをスレーブにレプリケートする方法を示します。両方のシステム(マスターとスレーブ)はDebian Sargeを実行しています。ただし、構成はほとんどすべてのディストリビューションに適用でき、ほとんど変更は必要ありません。

両方のシステムにMySQLがインストールされており、マスターにはテーブルとデータを持つデータベースexampledbがすでに存在していますが、スレーブには存在していません。

まず言いたいのは、これはそのようなシステムを設定する唯一の方法ではないということです。この目標を達成する方法はたくさんありますが、これは私が取る方法です。これがあなたにとって機能するという保証はありません!

1 マスターの設定

まず、/etc/mysql/my.cnfを編集する必要があります。MySQLのネットワークを有効にし、MySQLがすべてのIPアドレスをリッスンするようにする必要があります。したがって、これらの行をコメントアウトします(存在する場合):

| #skip-networking #bind-address = 127.0.0.1 |

さらに、MySQLにどのデータベースのログを書き込むべきか(これらのログはスレーブがマスターで何が変更されたかを見るために使用されます)、どのログファイルを使用するべきか、そしてこのMySQLサーバーがマスターであることを指定する必要があります。データベースexampledbをレプリケートしたいので、次の行を/etc/mysql/my.cnfに追加します:

| log-bin = /var/log/mysql/mysql-bin.log binlog-do-db=exampledb server-id=1 |

次に、MySQLを再起動します:

/etc/init.d/mysql restart

次に、rootとしてMySQLデータベースにログインし、レプリケーション権限を持つユーザーを作成します:

mysql -u root -p
パスワードを入力してください:

これでMySQLシェルにいます。

GRANT REPLICATION SLAVE ON . TO ‘slave_user’@’%’ IDENTIFIED BY ‘’;を実際のパスワードに置き換えてください!)
FLUSH PRIVILEGES;

次に(まだMySQLシェル内で)、次の操作を行います:

USE exampledb;
FLUSH TABLES WITH READ LOCK;
SHOW MASTER STATUS;

最後のコマンドは次のような結果を表示します:

| +---------------+----------+--------------+------------------+ | File | Position | Binlog_do_db | Binlog_ignore_db | +---------------+----------+--------------+------------------+ | mysql-bin.006 | 183 | exampledb | | +---------------+----------+--------------+------------------+ 1 row in set (0.00 sec) |

この情報を書き留めてください。後でスレーブで必要になります!

次に、MySQLシェルを終了します:

quit;


exampledbの既存のテーブルとデータをマスターからスレーブに移す方法は2つあります。最初の方法はデータベースダンプを作成すること、2つ目はスレーブでLOAD DATA FROM MASTER;コマンドを使用することです。後者は、この操作中にマスターのデータベースがロックされるという欠点があります。したがって、高トラフィックの本番システムで大きなデータベースがある場合、これは望ましくなく、この場合は最初の方法に従うことをお勧めします。ただし、後者の方法は非常に速いので、ここでは両方を説明します。

最初の方法に従いたい場合は、次のようにします:

mysqldump -u root -p –opt exampledb > exampledb.sqlをMySQLユーザーrootの実際のパスワードに置き換えてください!重要: -pの間にスペースはありません!

これにより、exampledbのSQLダンプがexampledb.sqlというファイルに作成されます。このファイルをスレーブサーバーに転送してください!

LOAD DATA FROM MASTER;の方法を選択する場合は、今は何もする必要はありません。


最後に、exampledbのテーブルのロックを解除する必要があります:

mysql -u root -p
パスワードを入力してください:
UNLOCK TABLES;
quit;

これでマスターの設定は完了です。次はスレーブです…

Share: X/Twitter LinkedIn

新しい投稿を受信箱で受け取る

スパムはありません。いつでも購読を解除できます。