ホームページ >データベース >mysql チュートリアル >MySQL マスター間レプリケーションを設定する方法
MySQL マスター間レプリケーションを設定する方法 マスター/スレーブ レプリケーションでは、マスター サーバーが変更を完了した直後にスレーブ サーバーが更新されるように設定します。ただし、スレーブ サーバーに変更が加えられた場合、マスターは更新されません。この記事では、MySQL マスター間レプリケーションを設定する方法 サーバー間のマスター-マスター レプリケーションのセットアップについて紹介します。
#このセットアップでは、どちらかのサーバーで行われた変更は、もう一方のサーバーでも更新されます。
セットアップの詳細:
Master-1: 192.168.1.15 Master-2: 192.168.1.16 Database: mydb
ステップ 1: MySQL マスター間レプリケーションを設定する方法 Master-1 サーバーをセットアップする
MySQL マスター間レプリケーションを設定する方法 構成ファイルを編集する[ mysqld] セクションに次のコードを追加します。
# vim /etc/my.cnf
[mysqld] log-bin=mysql-bin binlog-do-db=mydb server-id=1
変更を有効にするには、MySQL マスター間レプリケーションを設定する方法 サーバーを再起動します。
# service mysqld restart
Master-1 サーバー上で REPLICATION SLAVE 権限を持つ mysql アカウントを作成すると、レプリケーション クライアントがマスターに接続します。
mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl_user'@'%' IDENTIFIED BY 'secretpassword'; mysql> FLUSH PRIVILEGES;
すべてのテーブルにブロック書き込みステートメントがあるため、バックアップ後に変更を加えることができません。
mysql> use mydb; mysql> FLUSH TABLES WITH READ LOCK;
次のコマンドを使用して、現在のバイナリ ログ ファイル名 (File) と現在のオフセット (Position) 値を確認します。
mysql> SHOW MASTER STATUS; +------------------+----------+--------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +------------------+----------+--------------+------------------+ | mysql-bin.000003 | 332 | mydb | | +------------------+----------+--------------+------------------+ 1 row in set (0.00 sec)
上記の出力は、現在のバイナリ ファイルがオフセット 332 の mysql-bin.000003 を使用していることを示しています。次の手順でマスター 2 サーバーで使用するために、これらの値をメモしておきます。
データベースをバックアップし、別の mysql サーバーにコピーします。
# mysqldump -u root -p mydb > mydb.sql # scp mydb.sql 192.168.1.16:/opt/
バックアップが完了したら、変更を行えるようにテーブルから読み取りロックを削除します。
mysql> UNLOCK TABLES;
ステップ 2: MySQL マスター間レプリケーションを設定する方法 Master-2 サーバーをセットアップする
mysql Master-2 構成ファイルを編集し、[mysqld] の下に次の値を追加します。セクション。
#vim /etc/my.cnf [mysqld] log-bin = mysql-bin binlog-do-db = mydb server-id = 1
server-id は常にゼロ以外の値です。これらの値は、他のマスターやスレーブと似ることはありません。
MySQL マスター間レプリケーションを設定する方法 サーバーを再起動します。レプリケーションが構成されている場合は、起動時に -skip-slave-start を使用し、すぐにはマスター サーバーに接続しないでください。
#service mysqld restart
プライマリ サーバーから取得したデータベースのバックアップを復元します。
#mysql -u root -p mydb </opt/mydb.sql
Master-1 サーバー上で REPLICATION SLAVE 権限を持つ mysql アカウントを作成すると、レプリケーション クライアントがマスターに接続します。
mysql> GRANT REPLICATION SLAVE ON *.*''repl_user'@'%'IDENTIFIED BY'secretpassword'; mysql> FLUSH PRIVILEGES;
次のコマンドを使用して、現在のバイナリ ログ ファイル名 (File) と現在のオフセット (Position) 値を確認します。
mysql > SHOW MASTER STATUS; +------------------+----------+--------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +------------------+----------+--------------+------------------+ | mysql-bin.000001 | 847 | mydb | | +------------------+----------+--------------+------------------+ 1 row in set (0.00 sec)
上記の出力は、現在のバイナリがオフセット 847 の mysql-bin.000001 を使用していることを示しています。ステップ 3 で使用するために、これらの値をメモしておきます。
次のコマンドを使用して、スレーブ サーバーでオプション値を設定します。
mysql> CHANGE MASTER TO MASTER_HOST ='192.168.1.15', - > MASTER_USER ='repl_user', - > MASTER_PASSWORD ='secretpassword', - > MASTER_LOG_FILE ='mysql-bin.000003', - > MASTER_LOG_POS = 332;
ステップ 3: MySQL マスター間レプリケーションを設定する方法 Master-1 のインストールを完了する
MySQL マスター間レプリケーションを設定する方法 Master-1 サーバーにログインし、次のコマンドを実行します。
mysql> CHANGE MASTER TO MASTER_HOST ='192.168.1.16', MASTER_USER ='repl_user', MASTER_PASSWORD ='secretpassword', MASTER_LOG_FILE ='mysql-bin.000001', MASTER_LOG_POS = 847;
ステップ 4: 両方のサーバーでスレーブを開始する
両方のサーバーで次のコマンドを実行して、レプリケーション スレーブ プロセスを開始します。
mysql> SLAVE START;
MySQL マスター間レプリケーションを設定する方法 マスター-マスター レプリケーションがシステムと作業モードで正常に構成されました。レプリケーションが適切に機能していることをテストするには、いずれかのサーバーで変更を加え、その変更が他のサーバーに反映されているかどうかを確認します。
以上がMySQL マスター間レプリケーションを設定する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。