前書き
MySQL のマスターとスレーブの同期は、現在広く使用されているデータベース アーキテクチャであり、特に負荷の高い Web サイトの場合、マスターとスレーブの同期はデータベースの読み取りと負荷を効果的に軽減します。書き込み。以前に yii1 を使用していたときは、マスター/スレーブ データベースのサポートがあまり便利ではなく、複数の DB のコンポーネントを記述してから、AR の getDB で対応する DB を返すことしかできませんでした。これはマスター/スレーブデータベースを扱うためにも使用できます
実装方法
Yii2 はこの問題を解決し、コード内で直接処理できます:
PHP コード
'db' =>[ 'class' => 'yii\db\Connection', // 配置主服务器 'dsn' => 'dsn for master server', 'username' => 'master', 'password' => '', 'charset' => 'utf8', 'tablePrefix' => 'php_',//默认为空 // 配置从服务器 'slaveConfig' => [ 'username' => 'slave', 'password' => '', 'charset' => 'utf8', 'tablePrefix' => 'php_', 'attributes' => [ // use a smaller connection timeout PDO::ATTR_TIMEOUT => 10, ], ], ];
それはスーパーではありませんかそれだけでなく、スレーブ サーバー グループも設定できます。
PHP コード
'db'=>[ //...上面是一些标准配置 'slaves' => [ ['dsn' => 'dsn for slave server 1'], ['dsn' => 'dsn for slave server 2'], ['dsn' => 'dsn for slave server 3'], ['dsn' => 'dsn for slave server 4'], ], ]
さらに優れているのは、マスター サーバーも次のような複数のマスター サーバーの構成であることです。文字エンコーディングセット、テーブルプレフィックス 上記の設定を参照してください。
PHPコード
'db'=>[ // 配置主服务器 'masterConfig' => [ 'username' => 'master', 'password' => '', 'attributes' => [ // use a smaller connection timeout PDO::ATTR_TIMEOUT => 10, ], ], // 配置主服务器组 'masters' => [ ['dsn' => 'dsn for master server 1'], ['dsn' => 'dsn for master server 2'], ], //other ...slaves ];
とても簡単です。
もちろん、もっと簡単に使いたい場合は、実際にはYII2のARを使う必要があります。コードを変更する必要はありません。 。