ホームページ  >  記事  >  バックエンド開発  >  データベースのマスター/スレーブ レプリケーションを実装するための PHP メソッド

データベースのマスター/スレーブ レプリケーションを実装するための PHP メソッド

PHPz
PHPzオリジナル
2023-05-17 20:00:061196ブラウズ

ビジネスの継続的な発展とビジネス量の増加に伴い、単一データベースのパフォーマンスでは需要を満たすことが困難になることが多く、データベースのクラスタリングが非常に重要な方向性となっています。データベース クラスターでは、マスター/スレーブ レプリケーションは非常に一般的で重要なテクノロジです。マスター/スレーブ レプリケーションにより、マスター データベースのデータをリアルタイムでスレーブ データベースに同期でき、データのセキュリティと信頼性が確保されます。また、データベースのパフォーマンス、負荷容量とパフォーマンスも向上します。

この記事では、PHP を使用してデータベースのマスター/スレーブ レプリケーションを実装する方法を紹介します。データベースのマスター/スレーブ レプリケーションを実装することで、データの整合性と、高い同時実行性を処理する一貫性をより確実に確保できます。

1. データベースのマスター/スレーブ レプリケーションとは何ですか?

データベース マスター/スレーブ レプリケーションは、マスター データベースのデータをスレーブ データベースに同期することで高可用性と負荷分散を実現するデータベース クラスター テクノロジです。マスター/スレーブ レプリケーションでは、マスター データベースはデータ書き込み要求の受信とクエリ要求の処理を担当するデータベースであり、スレーブ データベースはマスター データベースに基づいて同期して、マスター データベースのリアルタイム バックアップを実現します。

マスター データベースとスレーブ データベース間のデータ同期には、通常、非同期または半同期の方法が使用されます。マスター データベースは独自のデータ変更イベントをローカル バイナリ ログに記録し、スレーブ データベースはバイナリをバイナリ ログから取得します。マスター データベース。同期のためにログを記録、解析し、ローカル データベースに適用します。これにより、データの一貫性と可用性を同時に確保でき、メイン データベースのパフォーマンスに大きな影響を与えることはありません。

2. PHP を使用してデータベースのマスター/スレーブ レプリケーションを実装する手順

  1. マスター データベースの構成

まず、バイナリ ログを有効にする必要があります。マスター データベース マスター データベースを記録する データベース データ変更イベント。次の設定を MySQL 設定ファイルに追加して、バイナリ ログ機能を有効にすることができます:

log-bin=mysql-bin
server-id=1

ここで、log-bin はパラメータが指定されている バイナリ ログ ファイルの名前はカスタマイズできます。server-id パラメータは、クラスタ内のマスター データベースの一意の識別子を指定します。異なるマスター ノードとスレーブ ノードには異なる ID が必要です。

  1. スレーブ データベースの構成

スレーブ データベースでは、マスター/スレーブ レプリケーションの関連パラメーターを構成し、スレーブ ノードの一意の識別子とマスターノードのIPアドレスとポート番号。次の設定を MySQL 設定ファイルに追加できます:

server-id=2
relay-log=mysql-relay-bin
relay-log-index=mysql-relay-bin。インデックス
replicate-do-db=mydb #同期する必要があるデータベースの名前
master-host=192.168.1.1 #マスター ノードの IP アドレス
master-user=repl #スレーブノードをマスターノードに接続するユーザー
master-password=repl123 #スレーブノードがマスターノードに接続するためのパスワード
master-port=3306 #マスターノードのポート番号

ここで、server-id は、クラスター内の指定されたスレーブ ノードの一意の識別子です。relay -log およびリレー ログインデックスは、スレーブ ノードのリレー ログ ファイル名およびリレー ログ インデックス ファイル名を指定します。 -db パラメータは、スレーブ ノードに同期する必要があるデータベース名を指定します。複数のデータベースを同期する必要がある場合、このパラメータは繰り返し設定できます。master-* シリーズのパラメータは、マスターに接続するスレーブ ノードに関する情報を構成します。ノード。

  1. PHP コードの実装

PHP コードを実装してデータベースのマスター/スレーブ レプリケーションのプロセスを実装するには、まず操作する必要があるデータベースに接続する必要があります。 mysql_connect 関数を使用して、クエリの SQL ステートメントと、スレーブ ノードからデータを読み取る必要があるかどうかを指定します。 MYSQL_CLIENT_MASTER および MYSQL_CLIENT_SLAVE パラメータを設定することにより、現在接続されているデータベースがマスター ノードであるかスレーブ ノードであるかを指定できます。コード例は次のとおりです。

//マスター ノードに接続します
$conn = mysql_connect("192.168.1.1", "root", "password", null, MYSQL_CLIENT_MASTER);

// 書き込み操作を実行します
mysql_query("insert into table1 names ('test', '123')");

// スレーブノードを接続します
$conn = mysql_connect("192.168.1.2" , "root", "password", null, MYSQL_CLIENT_SLAVE);

//読み取り操作を実行します
$res = mysql_query("select * from table1");

以上により、コードを実装することで、マスターノードとスレーブノードの接続切り替えやバインド操作を別々に実行することができ、データベースのマスター・スレーブレプリケーション機能を効果的に実現することができます。

3. 概要

データベースのマスター/スレーブ レプリケーションは、高可用性と負荷分散を実現するための重要なデータベース クラスター テクノロジです。 PHP を介してマスター/スレーブ レプリケーションを実装すると、高い同時実行性を処理する際のデータの一貫性と可用性をより確実に確保できます。上記の手順とコード例を通じて、大多数の PHP 開発者がデータベースのマスター/スレーブ レプリケーションを実装する際に役立つことを願っています。

以上がデータベースのマスター/スレーブ レプリケーションを実装するための PHP メソッドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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