ホームページ > 記事 > PHPフレームワーク > ThinkPHP6 での MySQL マスター/スレーブ レプリケーションの使用
ビジネスの継続的な拡大に伴い、データベースの読み取りと書き込みのプレッシャーが増大しています。単一のデータベース ノードではビジネス ニーズを満たすことができなくなりました。そのため、データを複数に分割することでデータ効率を向上させるために、マスター/スレーブ レプリケーション メカニズムが導入されました。ノード データベースの読み取りと書き込みの効率。
ThinkPHP6 は、シンプルで使いやすい Mysql マスター/スレーブ レプリケーション メカニズムを提供する軽量の PHP フレームワークで、開発者がデータベースの読み取りおよび書き込みのプレッシャーをより適切に処理できるようにします。
この記事では、ThinkPHP6 で Mysql のマスター/スレーブ レプリケーション メカニズムを使用する方法を紹介します。
1. 依存関係のインストール
Mysql マスター/スレーブ レプリケーション メカニズムを使用する前に、
1、php7.1 以降を含む関連する依存関係パッケージをインストールする必要があります。
2. php pdo_mysql 拡張機能
3. redis 拡張機能 (Redis コンポーネントを使用する必要がある場合)
上記の依存関係パッケージを既にインストールしている場合は、これをスキップできます。ステップ。
2. データベースの構成
マスター/スレーブ レプリケーションを実行する前に、最初にデータベースを構成する必要があります。データベース情報は、アプリケーションのルート ディレクトリにある config/database.php ファイルで構成できます。例:
return [ // 默认使用的数据库连接配置 'default' => env('database.driver', 'mysql'), // 数据库连接配置 'connections' => [ // mysql主从配置 'mysql' => [ 'type' => 'mysql', 'hostname' => '127.0.0.1', 'database' => 'test', 'username' => 'root', 'password' => '123456', 'hostport' => '3306', 'charset' => 'utf8mb4', 'prefix' => '', 'debug' => true, 'deploy' => [ 'type' => 'multiple', 'ro' => [ ['hostname' => '127.0.0.1', 'database' => 'test', 'username' => 'root', 'password' => '123456', 'hostport' => '3307', 'charset' => 'utf8mb4',], //['hostname' => '127.0.0.2', 'database' => 'test', 'username' => 'root', 'password' => '123456', 'hostport' => '3307', 'charset' => 'utf8mb4',], ], 'rw_separate' => true, ], ], // 更多的数据库连接配置 ], ];
上記の構成では、mysql という名前のデータベース接続を定義しました。このうち、type はデータベースの種類を表し、hostname はデータベース サーバーのアドレスを表し、database はデータベース名を表し、username はデータベースのユーザー名を表し、password はデータベースのパスワードを表し、hostport はデータベースのポートを表し、charset は文字セットを表し、prefix はデータを表します。テーブル接頭辞、debug はデバッグを有効にするかどうかを表し、mode、deploy はマスター/スレーブ レプリケーション メカニズムのデプロイメント構成を表します。
deploy では、マスター/スレーブ レプリケーションのデプロイ方法を定義します。type 属性は、マルチノード デプロイメントの使用を示すために multiple です。 ro は読み取り専用ノードを表し、rw_ Separate は読み取りと書き込みの分離を表します。
マスター/スレーブ レプリケーション メカニズムを使用する必要がある場合は、mysql でマスター/スレーブ レプリケーションを構成する必要があることに注意してください。特定の構成については、mysql ドキュメントを参照してください。
3. Mysql マスター/スレーブ レプリケーションの使用
クエリ データを例として、次のメソッドを使用してマスター/スレーブ レプリケーション メカニズムを実装できます。上記のコードでは、まず Db クラスの connect メソッドを使用して mysql データベースに接続し、次に query メソッドを使用してデータをクエリします。マスタ/スレーブレプリケーションは、connect メソッドで接続名を指定することによって実現されます。マスター/スレーブが指定されていない場合、デフォルトでスレーブ データベースがクエリに使用されます。マスター メソッドを使用してメイン ライブラリを指定すると、メイン ライブラリがクエリされます。
データベースを操作する前に、読み取りおよび書き込み操作のタイプを指定することもできます。例:
use thinkacadeDb; // 从库查询 $res = Db::connect('mysql')->query("SELECT * FROM user", true); // 主库查询 $res = Db::connect('mysql')->master()->query("SELECT * FROM user", true);
上記の方法を通じて、Mysql マスター/スレーブ レプリケーション メカニズムを簡単に使用して、レプリケーションを改善できます。データベースの読み取り書き込み効率。
4. Redis コンポーネントを使用してクエリ結果をキャッシュする
Mysql マスター/スレーブ レプリケーション メカニズムの使用に加えて、Redis コンポーネントを使用してクエリ結果をキャッシュすることもできます。関連する設定は config/cache.php で行うことができます:
use thinkacadeDb; // 读操作,自动选择从库 Db::connect('mysql')->read(); // 写操作,选择主库 Db::connect('mysql')->write();
上記の設定では、redis という名前のキャッシュを定義しました。このうち、type はキャッシュの種類を表し、host はキャッシュ サーバーのアドレスを表し、port はキャッシュ サーバーのポートを表し、password はキャッシュ サーバーのパスワードを表します。 Redis キャッシュを使用する場合、データのクエリ時にキャッシュ メソッドを使用してキャッシュできます。例:
return [ 'default' => env('cache.driver', 'file'), 'prefix' => '', 'stores' => [ 'redis' => [ 'type' => 'redis', 'host' => '127.0.0.1', 'port' => 6379, 'password' => '', 'select' => 0, 'timeout' => 0, 'expire' => 0, 'persistent' => false, 'prefix' => '', 'serialize' => true, ], ], ];
上記のコードでは、キャッシュ メソッドを使用してクエリ結果をキャッシュします。ここで、user_cache はキャッシュ キーであり、 60 はキャッシュ時間 (秒) です。
上記の方法により、データベースの読み取りおよび書き込みの負荷をより適切に処理し、Web サイトのパフォーマンスを向上させることができます。
以上がThinkPHP6 での MySQL マスター/スレーブ レプリケーションの使用の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。