ホームページ  >  記事  >  データベース  >  MySQL の読み取りと書き込みの分離とは何ですか?マスター/スレーブデータベースを設定するにはどうすればよいですか?

MySQL の読み取りと書き込みの分離とは何ですか?マスター/スレーブデータベースを設定するにはどうすればよいですか?

不言
不言転載
2018-10-09 15:22:022518ブラウズ

この記事では、Mysql の読み取りと書き込みの分離とは何ですか?マスター/スレーブデータベースを設定するにはどうすればよいですか?困っている友人は参考にしていただければ幸いです。

読み取りと書き込みの分離とは何ですか?

Mysql には、追加、削除、変更、読み取りという 4 つの機能しかありません。システムのパフォーマンスの向上に役立ちます。
考えてみてください。入居、返品、交換、商品の販売が正面玄関でのみ商品を販売し、その他は裏口に行くように変更されました。これは非常に明確ではありませんか。
多くの場合、ハイエンドに見えるものは非常に簡単に作成できます。

以下は初心者向けに書かれており、すべて非常に直感的な操作です。

1. mysql5.7
PS: 条件が限定されている場合は、2 つの mysql サービス (3306、3307 などの異なるポート) をインストールするだけで済みますが、これは本来の効率性の意図とは少し異なります。

2. コード:

#1. 通常、コード層では、update、insert、select * from などの mysql 操作クラスの読み取りと書き込みがルーティングされます。
2. ミドルウェア エージェントは、コードを変更せずに、読み取りおよび書き込みリクエストをマスター/スレーブ サーバーに送信します。

次に、その方法について説明します。マスター/スレーブ サーバーを構成するには:

1. ポートを開く: ほとんどのホストはデフォルトで MySQL ポート 3306 に設定されているため、最初に 2 台のマシンを構成します。セキュリティ グループまたはファイアウォールで 3306 ポートを開いて再起動します。 2. ポートが開かれ、2 つのサーバーを構成します (1 つのホストと 2 つの MySQL サーバーにも同じことが当てはまります):


次はメイン IP: 192.168.0.1、スレーブ IP: 192.168.0.2、作成です。同期アカウントの指定、パスワード spec_password の例:

メインサーバー (追加、削除、変更):

#1.Mysql配置改以下并重启服务(命令行里直接重启:service mysql restart)
[mysqld]
server-id=1
log-bin=master-bin
log-bin-index=master-bin.index

#2.命令行mysql执行或phpmyadmin里执行:
GRANT REPLICATION SLAVE ON *.* TO 'spec'@'192.168.0.2' IDENTIFIED BY 'spec_password';
flush privileges;

以上でメインサーバーが完成します。

Configurationサーバーから:

#1.Mysql配置改以下并重启服务(命令行里直接重启:service mysql restart)
[mysqld]
server-id=2
relay-log-index=slave-bin.index
relay-log=slave-bin

#2.命令行mysql执行或phpmyadmin里执行:
change master to master_host='192.168.0.1',master_port=3306,master_user='spec',master_password='spec_password',master_log_file='master-bin.000001',master_log_pos=0;
start slave

一般的に、構成は完了しました。

3. テスト:

サーバーからのクエリ ステートメント:スレーブのステータスを表示

If Slave_IO_State=マスターがイベントを送信するのを待っています。成功します。

残りのステータスは通常、次の理由によるものです:

1. マスター/スレーブのセキュリティ グループまたはファイアウォールがポート 3306# を開いていない。 # # 2. マスターとスレーブ間の Ping エラー。

3. 上記スペック アカウントのパスワード エラー


今後、マスター サーバーでの追加、削除、または変更はスレーブ サーバーに同期されます。

4. 提案:

1. スレーブ サーバーは、追加、削除、または変更ではなく読み取りのみを実行するので、1 つのサーバーに障害が発生した場合でも、別のサーバーがデータの同期を維持できることに注意してください。 (実際には、マスターサーバーがダウンすると、最新のデータの一部が確実に失われます)。

2. 同期遅延をできるだけ減らすために、スレーブ サーバーの帯域幅はマスター サーバー以上である必要があります。小規模な水道管の場合は、当然ながら同期はさらに遅くなります。

以上がMySQL の読み取りと書き込みの分離とは何ですか?マスター/スレーブデータベースを設定するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はsegmentfault.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。