ホームページ  >  記事  >  PHPフレームワーク  >  ThinkPHP6 での MySQL マスター/スレーブ レプリケーションの使用

ThinkPHP6 での MySQL マスター/スレーブ レプリケーションの使用

王林
王林オリジナル
2023-06-20 23:57:081415ブラウズ

ビジネスの継続的な拡大に伴い、データベースの読み取りと書き込みのプレッシャーが増大しています。単一のデータベース ノードではビジネス ニーズを満たすことができなくなりました。そのため、データを複数に分割することでデータ効率を向上させるために、マスター/スレーブ レプリケーション メカニズムが導入されました。ノード データベースの読み取りと書き込みの効率。

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 thinkacadeDb;

// 从库查询
$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 thinkacadeDb;

// 读操作,自动选择从库
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 サイトの他の関連記事を参照してください。

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