ホームページ >データベース >mysql チュートリアル >MySQL マスター間レプリケーションを設定する方法

MySQL マスター間レプリケーションを設定する方法

不言
不言オリジナル
2019-03-05 11:12:253131ブラウズ

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 *.*&#39;&#39;repl_user&#39;@&#39;%&#39;IDENTIFIED BY&#39;secretpassword&#39;; 
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 =&#39;192.168.1.15&#39;,
    - > MASTER_USER =&#39;repl_user&#39;,
    - > MASTER_PASSWORD =&#39;secretpassword&#39;,
    - > MASTER_LOG_FILE =&#39;mysql-bin.000003&#39;,
    - > MASTER_LOG_POS = 332;

ステップ 3: MySQL マスター間レプリケーションを設定する方法 Master-1 のインストールを完了する

MySQL マスター間レプリケーションを設定する方法 Master-1 サーバーにログインし、次のコマンドを実行します。

mysql> CHANGE MASTER TO MASTER_HOST =&#39;192.168.1.16&#39;,
     MASTER_USER =&#39;repl_user&#39;,
     MASTER_PASSWORD =&#39;secretpassword&#39;,
     MASTER_LOG_FILE =&#39;mysql-bin.000001&#39;,
     MASTER_LOG_POS = 847;


ステップ 4: 両方のサーバーでスレーブを開始する

両方のサーバーで次のコマンドを実行して、レプリケーション スレーブ プロセスを開始します。

mysql> SLAVE START;

MySQL マスター間レプリケーションを設定する方法 マスター-マスター レプリケーションがシステムと作業モードで正常に構成されました。レプリケーションが適切に機能していることをテストするには、いずれかのサーバーで変更を加え、その変更が他のサーバーに反映されているかどうかを確認します。

以上がMySQL マスター間レプリケーションを設定する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。