ホームページ  >  記事  >  データベース  >  MySQL マスター/スレーブ レプリケーションを設定する方法

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

不言
不言オリジナル
2019-03-04 16:52:332212ブラウズ

この記事では、MySQL サーバー間のマスター/スレーブ レプリケーションの設定について紹介します。具体的な内容を見てみましょう。

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

設定内容:

マスターサーバー: 192.168.1.10

スレーブサーバー: 192.168.1.20

データベース: mydb

1. MySQL メイン サーバーのセットアップ

REPLICATION SLAVE 権限を持つサーバーを作成します。メインサーバーの mysql アカウントを使用すると、レプリケーションクライアントがマスターに接続します。

mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl_user'@'192.168.1.20' IDENTIFIED BY 'secretpassword';
mysql> FLUSH PRIVILEGES;

すべてのテーブルにブロック書き込みステートメントを設定するため、バックアップ後に変更を加えないでください。

mysql> use mydb;
mysql> FLUSH TABLES WITH READ LOCK;
mysql> exit;

mysql 設定ファイルを編集し、[mysqld] セクションに次のコードを追加します。

# vim /etc/my.cnf
[mysqld]
log-bin=mysql-bin
binlog-do-db=mydb
server-id=1
innodb_flush_log_at_trx_commit=1
sync_binlog=1

変更を有効にするためにマスター mysql サーバーを再起動します。

# service mysqld restart

次のコマンドを使用して、現在のバイナリ ログ ファイル名 (File) と現在のオフセット (Position) 値を確認します。

mysql > SHOW MASTER STATUS;
+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000002 |      107 | mydb         |                  |
+------------------+----------+--------------+------------------+

上記の出力は、現在のバイナリ ファイルがオフセット値 107 の mysql-bin.000002 を使用していることを示しています。スレーブサーバーで使用するために、これらの値に注意してください。

データベースをバックアップし、スレーブ mysql サーバーにコピーします。

# mysqldump -u root -p mydb > mydb.sql
# scp mydb.sql 192.168.1.20:/opt/

バックアップが完了したら、変更を行えるようにテーブルから読み取りロックを削除します。

mysql> UNLOCK TABLES;

2. MySQL スレーブ サーバーのセットアップ

スレーブ mysql 設定ファイルを編集し、[mysqld] セクションに次の値を追加します。

# vim /etc/my.cnf
[mysqld]
server-id=2
replicate-do-db=mydb

server-id は常にゼロ以外の値です。これらの価値観は、他のマスターやスレーブと決して似ることはありません。

mysql スレーブ サーバーを再起動します。レプリケーションを設定している場合は、開始時に -skip-slave-start を使用してください。すぐにマスター サーバーに接続しないでください。

# /etc/init.d/mysqld restart

次のコマンドを使用して、スレーブ サーバーでオプション値を設定します。

mysql>  CHANGE MASTER TO MASTER_HOST='192.168.1.10',
    -> MASTER_USER='repl_user',
    -> MASTER_PASSWORD='secretpassword',
    -> MASTER_LOG_FILE='mysql-bin.000002',
    -> MASTER_LOG_POS=107;

最後にスレーブスレッドを開始します

mysql> SLAVE START;

スレーブサーバーのステータスを確認します。

mysql> show slave status G
*************************** 1. row ***************************
               Slave_IO_State:
                  Master_Host: 192.168.1.15
                  Master_User: repl_user
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000002
          Read_Master_Log_Pos: 107
               Relay_Log_File: mysqld-relay-bin.000001
                Relay_Log_Pos: 4
        Relay_Master_Log_File: mysql-bin.000002
             Slave_IO_Running: No
            Slave_SQL_Running: No
              Replicate_Do_DB: mydb
          Replicate_Ignore_DB:
           Replicate_Do_Table:
       Replicate_Ignore_Table:
      Replicate_Wild_Do_Table:
  Replicate_Wild_Ignore_Table:
                   Last_Errno: 0
                   Last_Error:
                 Skip_Counter: 0
          Exec_Master_Log_Pos: 107
              Relay_Log_Space: 107
              Until_Condition: None
               Until_Log_File:
                Until_Log_Pos: 0
           Master_SSL_Allowed: No
           Master_SSL_CA_File:
           Master_SSL_CA_Path:
              Master_SSL_Cert:
            Master_SSL_Cipher:
               Master_SSL_Key:
        Seconds_Behind_Master: NULL
Master_SSL_Verify_Server_Cert: No
                Last_IO_Errno: 0
                Last_IO_Error:
               Last_SQL_Errno: 0
               Last_SQL_Error:
  Replicate_Ignore_Server_Ids:
             Master_Server_Id: 1
1 row in set (0.00 sec)
mysql>

MySQL マスター/スレーブ レプリケーションがシステムと作業モードで正常に構成されました。

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

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