なぜ mysql マスター/スレーブ構成を実行する必要があるのですか?その利点は何ですか?この記事では、主に mysql のマスター/スレーブ構成例の詳細な説明を共有し、皆様のお役に立てれば幸いです。
1: サーバーの負荷分散を実現します
メインサーバーにはデータ更新操作のみが実装され、データクエリは関係ありません。クエリリクエストは複数のスレーブサーバーに転送できます。データの更新とクエリを別のサーバーに配置すると、データのセキュリティが向上し、アプリケーションの応答時間が短縮され、システムのパフォーマンスが向上します。
2: レプリケーションを通じてデータのオフサイト バックアップを実現します
どのような場合でも、データのバックアップは非常に重要なリンクであり、mysql マスター/スレーブ構成はオフサイト バックアップを非常に適切に実装し、この問題を完全に解決します。
3:データベースシステムの可用性向上
データベースレプリケーション機能により、マスターサーバーとスレーブサーバー間のデータの同期が実現され、データベースシステムの可用性が向上します。マスター サーバーで問題が発生した場合、データベース管理者はすぐにスレーブ サーバーをデータ更新およびクエリ サービスのマスター サーバーにすることができます。
スレーブはマスター上のデータをどのようにコピーするのでしょうか?
1: マスター内のデータが変更されると、その変更がバイナリ ログに記録されます。
2: スレーブはマスターのログを自身のリレー ログにコピーします。
3: スレーブはログ記録に基づいてデータを更新します。
マスター/スレーブmysqlを構成する
1: マスターサーバーを構成する
(1): マスターMySQL上にユーザー「リンク」を作成し、他のスレーブサーバーがリンクユーザーを介してマスターにリモートアクセスし、バイナリログを読み取ることを許可します。 , データの同期を実現します。
mysql> ユーザーリンクを作成します;
mysql> GRANT REPLICATION SLAVE ON *.* TO 'link'@'%' IDENTIFIED BY
;
(2) : mysql 設定ファイル my.ini (windows) / my.cnf (linux) を変更します
Linux 環境の場合は、/etc/my.cnf ファイルを変更します。Windows 環境の場合は、my.ini を見つけます。 mysqlのインストールディレクトリにあるファイル。次のステートメント行を [mysqld] の下に追加します:
1 2 3 | server-id=1
log-bin=master-bin
log-bin-index=master-bin.index
|
ログイン後にコピー
(3) mysql を再起動し、ステータスを確認し、次の内容を出力します
1 2 3 4 5 6 7 | mysql> SHOW MASTER STATUS;
+-------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+-------------------+----------+--------------+------------------+-------------------+
| master-bin.000001 | 350 | | | |
+-------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)
|
ログイン後にコピー
2: スレーブ サーバーを設定します
(1) mysql を変更します設定ファイルに次のステートメント行を追加します:
1 2 3 4 5 | server-id=2
relay-log-index=slave-relay-bin.index
relay-log=slave-relay-bin
log_slave_updates = 1
#replicate- do -table=bison.user
|
ログイン後にコピー
(2) mysql を再起動し、マスターに接続します
mysql の再起動が完了したら、mysql にログインし、CHANGE MASTER TO ステートメントを使用してマスターに接続します
1 2 3 4 5 | mysql> CHANGE MASTER TO MASTER_HOST='192.168.1.123',
-> MASTER_USER='link',
-> MASTER_PASSWORD='mysql',
-> MASTER_LOG_FILE='mysql-bin.000001',
-> MASTER_LOG_POS=0;
|
ログイン後にコピー
(3) 設定が正しいか確認します
1 | mysql> SHOW SLAVE STATUS\G
|
ログイン後にコピー
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | 部分显示如下:
*************************** 1. row ***************************
Slave_IO_State:
Master_Host: server1
Master_User: repl
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000001
Read_Master_Log_Pos: 4
Relay_Log_File: mysql-relay-bin.000001
Relay_Log_Pos: 4
Relay_Master_Log_File: mysql-bin.000001
<span style= "color:#ff0000;" ><strong> Slave_IO_Running: No
Slave_SQL_Running: No</strong></span>
|
ログイン後にコピー
- (4) スレーブを開始します
- mysql
> スレーブを開始します。
構成を表示:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | mysql> SHOW SLAVE STATUS\G
部分显示如下:主要看Slave_IO_Running和Slave_SQL_Running
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.1.234
Master_User: link
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: master-bin.000001
Read_Master_Log_Pos: 350
Relay_Log_File: slave-relay-bin.000002
Relay_Log_Pos: 548
Relay_Master_Log_File: master-bin.000001
<span style= "color:#ff0000;" ><strong>Slave_IO_Running: Yes
Slave_SQL_Running: Yes</strong></span>
|
ログイン後にコピー
それでは、メインサーバー上にデータベースを作成してみてください。試してみてください。
関連する推奨事項:
mysqlサーバーのマスター/スレーブ構成の概要
Mysqlシリーズ(15) mysqlのマスター/スレーブ構成
mysqlデータベースのマスター/スレーブ構成の詳細な説明
以上がmysqlのマスター/スレーブ構成例の詳細説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。