ビジネスの継続的な発展とビジネス量の増加に伴い、単一データベースのパフォーマンスでは需要を満たすことが困難になることが多く、データベースのクラスタリングが非常に重要な方向性となっています。データベース クラスターでは、マスター/スレーブ レプリケーションは非常に一般的で重要なテクノロジです。マスター/スレーブ レプリケーションにより、マスター データベースのデータをリアルタイムでスレーブ データベースに同期でき、データのセキュリティと信頼性が確保されます。また、データベースのパフォーマンス、負荷容量とパフォーマンスも向上します。
この記事では、PHP を使用してデータベースのマスター/スレーブ レプリケーションを実装する方法を紹介します。データベースのマスター/スレーブ レプリケーションを実装することで、データの整合性と、高い同時実行性を処理する一貫性をより確実に確保できます。
1. データベースのマスター/スレーブ レプリケーションとは何ですか?
データベース マスター/スレーブ レプリケーションは、マスター データベースのデータをスレーブ データベースに同期することで高可用性と負荷分散を実現するデータベース クラスター テクノロジです。マスター/スレーブ レプリケーションでは、マスター データベースはデータ書き込み要求の受信とクエリ要求の処理を担当するデータベースであり、スレーブ データベースはマスター データベースに基づいて同期して、マスター データベースのリアルタイム バックアップを実現します。
マスター データベースとスレーブ データベース間のデータ同期には、通常、非同期または半同期の方法が使用されます。マスター データベースは独自のデータ変更イベントをローカル バイナリ ログに記録し、スレーブ データベースはバイナリをバイナリ ログから取得します。マスター データベース。同期のためにログを記録、解析し、ローカル データベースに適用します。これにより、データの一貫性と可用性を同時に確保でき、メイン データベースのパフォーマンスに大きな影響を与えることはありません。
2. PHP を使用してデータベースのマスター/スレーブ レプリケーションを実装する手順
まず、バイナリ ログを有効にする必要があります。マスター データベース マスター データベースを記録する データベース データ変更イベント。次の設定を MySQL 設定ファイルに追加して、バイナリ ログ機能を有効にすることができます:
log-bin=mysql-bin
server-id=1
ここで、log-bin はパラメータが指定されている バイナリ ログ ファイルの名前はカスタマイズできます。server-id パラメータは、クラスタ内のマスター データベースの一意の識別子を指定します。異なるマスター ノードとスレーブ ノードには異なる ID が必要です。
スレーブ データベースでは、マスター/スレーブ レプリケーションの関連パラメーターを構成し、スレーブ ノードの一意の識別子とマスターノードの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-* シリーズのパラメータは、マスターに接続するスレーブ ノードに関する情報を構成します。ノード。
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 サイトの他の関連記事を参照してください。