私は自分の drupal サイトを Amazon でホストしており、増加したトラフィックを処理するために dbserver をスケーリングしたいと考えていました。RDS の dbinstance のリードレプリカを有効にしました。これを機能させるために、drupal からすべての変更を行う必要があるかどうかはわかりません。
誰かが上記の実装を自分のサイトに構成したことがある場合は、いくつかの指針をいただければ幸いです。
私は自分の drupal サイトを Amazon でホストしており、増加したトラフィックを処理するために dbserver をスケーリングしたいと考えていました。RDS の dbinstance のリードレプリカを有効にしました。これを機能させるために、drupal からすべての変更を行う必要があるかどうかはわかりません。
誰かが上記の実装を自分のサイトに構成したことがある場合は、いくつかの指針をいただければ幸いです。
Drupal 7 から、MySQL マスター (読み取り/書き込み)-スレーブ (読み取り専用) セットアップで非常に使いやすくなりました。マスター/スレーブ モードで構成された 2 つの MySQL サーバーがあるとします。
settings.php で、MySQL マスター構成から始めます。
$databases['default']['default'] = array(
'driver' => 'mysql',
'database' => 'mysql-master-db',
'username' => 'mysql-master-username',
'password' => 'mysql-master-password',
'host' => 'mysql-master(Read + Write)-IP',
);
この下に、次のコードを追加してスレーブを構成します。
$databases['default']['slave'][] = array(
'driver' => 'mysql',
'database' => 'mysql-slave1-db',
'username' => 'mysql-slave1-user',
'password' => 'mysql-slave1-password',
'host' => 'mysql-slave1(Read-only)-IP',
);
この下で、選択クエリのいずれかでスレーブ サーバーを使用する場合は、次の構文を使用します。
$query = db_select('node', 'n', array('target' => 'slave'));
array('target' => 'slave') 引数を指定すると、クエリはスレーブ データベースの 1 つに対して実行されます。同じページに対してそのようなクエリが複数ある場合、すべてが同じスレーブ サーバーで実行されます。使用可能なスレーブがない場合、そのオプションは無視され、クエリはマスターに対して実行されます。