PHP で MySQL データベースのマスター/スレーブ レプリケーションを実装する方法

PHPz
リリース: 2023-05-17 08:40:01
オリジナル
1290 人が閲覧しました

インターネットの急速な発展に伴い、Web アプリケーションにはデータベース操作がますます統合されています。 MySQL は、広く使用されている世界的に有名なリレーショナル データベース システムです。同時実行性の高い Web アプリケーションでは、MySQL のマスター/スレーブ レプリケーションはデータベースのパフォーマンスと可用性を向上させる重要な方法です。この記事では、PHP を使用して MySQL データベースのマスター/スレーブ レプリケーションを実装する方法を紹介します。

1. MySQL マスター/スレーブ レプリケーションとは

MySQL マスター/スレーブ レプリケーションとは、2 つの MySQL サーバーのデータの一貫性を維持するために、1 つの MySQL データベース サーバーのデータを別のサーバーにコピーすることを指します。 。サーバーの 1 つはマスター サーバーと呼ばれ、リアルタイムでデータを更新する役割を果たします。もう 1 つのサーバーはスレーブ サーバーと呼ばれ、マスター サーバーからのデータを同期する役割を果たします。マスター/スレーブ レプリケーションにより、システムのスケーラビリティとフォールト トレランスが向上します。たとえば、メイン サーバーがダウンした場合、スレーブ サーバーがメイン サーバーの作業を引き継ぎ、ビジネスの通常の動作を確保できます。

2. マスター/スレーブ レプリケーションの実装原理

マスター/スレーブ レプリケーションの実装原理は次のとおりです:

  1. マスター サーバーは更新操作を記録します。バイナリ ログ (Binary Log) に記録されます。
  2. スレーブ サーバーはマスター サーバーに接続し、同期する必要があるバイナリ ログの取得を要求し、それを自身のログにコピーします。
  3. スレーブ サーバーは、マスター サーバーのバイナリ ログ内の更新操作を独自のデータベースに実行して、2 つのデータベース内のデータの一貫性を確保します。

3. PHP でマスター/スレーブ レプリケーションを実装する方法

  1. メイン サーバーのバイナリ ログを設定する

メイン サーバーに必要なものmy.cnf で設定します ファイル内のバイナリ ログを有効にします。 my.cnf ファイルを開き、[mysqld] セクションに次の設定を追加します。

server-id=1
log-bin=/var/log/mysql/mysql-bin.log
ログイン後にコピー

このうち、server-id はメイン サーバーを識別するために使用され、log-bin はメイン サーバーのパスを指定するために使用されます。ログファイル。

  1. スレーブ サーバーのマスター サーバー情報の構成

スレーブ サーバーは、my.cnf 構成ファイルにマスター サーバーの接続情報を追加する必要があります。 my.cnf ファイルを開き、[inisd_client] セクションに次の設定を追加します。

server-id=2
master-host=10.0.0.1
master-user=repl_user
master-password=repl_password
master-port=3306
ログイン後にコピー

このうち、server-id はスレーブ サーバーを識別するために使用され、master-host はマスター サーバーの IP アドレスを指定します。 、master-user および master -password はマスター サーバーのユーザー名とパスワードを指定し、master-port はマスター サーバーのポート番号を指定します。

  1. レプリケーション ユーザーの作成

データをレプリケートするためのユーザーをメイン サーバー上に作成し、そのユーザーにバイナリ ログの読み取りを許可します。 MySQL クライアントを開き、次のコマンドを実行します。

mysql> CREATE USER 'repl_user'@'%' IDENTIFIED BY 'repl_password';
mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl_user'@'%';
ログイン後にコピー
  1. スレーブ サーバーでレプリケーション プロセスを開始します

スレーブ サーバーの MySQL クライアントで次のコマンドを実行して、レプリケーション プロセスを開始します :

mysql> CHANGE MASTER TO MASTER_HOST='10.0.0.1', 
  MASTER_USER='repl_user', MASTER_PASSWORD='repl_password', 
  MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=107;
mysql> START SLAVE;
ログイン後にコピー

このうち、MASTER_LOG_FILE と MASTER_LOG_POS は、メイン サーバーのバイナリ ログで見つかります。

上記の手順を完了すると、スレーブ サーバーはマスター サーバーからデータをコピーし、2 つのデータベース内のデータの一貫性を保ちます。

4. 概要

MySQL マスター/スレーブ レプリケーションは、システムのパフォーマンスと可用性を向上させる重要なテクノロジです。 PHP を使用して MySQL マスター/スレーブ レプリケーションを実装するのは非常に簡単で、マスター サーバーでバイナリ ログを有効にし、スレーブ サーバーでマスター サーバー情報を構成し、レプリケーション ユーザーを作成して、レプリケーション プロセスを開始するだけです。実際の運用環境では、データベース サービスの安定性とセキュリティを確保するために、データベースの運用と保守を支援する適切な技術的手段を使用することに注意を払う必要があります。

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!