0

私は自分の drupal サイトを Amazon でホストしており、増加したトラフィックを処理するために dbserver をスケーリングしたいと考えていました。RDS の dbinstance のリードレプリカを有効にしました。これを機能させるために、drupal からすべての変更を行う必要があるかどうかはわかりません。

誰かが上記の実装を自分のサイトに構成したことがある場合は、いくつかの指針をいただければ幸いです。

4

1 に答える 1

1

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 つに対して実行されます。同じページに対してそのようなクエリが複数ある場合、すべてが同じスレーブ サーバーで実行されます。使用可能なスレーブがない場合、そのオプションは無視され、クエリはマスターに対して実行されます。

于 2014-10-06T09:53:51.603 に答える