Drupalマスター/スレーブレプリケーション


10

drupalデータベース用にマスター/スレーブレプリケーションを備えた2つのMySQLサーバーをセットアップし、データベースが同期して複製されていることを確認しました。

私は今、基本的にフェイルオーバー/冗長性の目的で両方のデータベースをdrupalに向けようとしています。つまり、プライマリデータベースサーバーを再起動する必要がある場合、サイトを停止させたくありません。(読み取り専用にすることは、障害シナリオの間は許容されます)

次の記事に基づく。私はsettings.php次のように変更しました:

$databases['default']['default'] = array(
  'driver' => 'mysql',
  'database' => 'sdrupal',
  'username' => 'drupal',
  'password' => 'topsecret',
  'host' => 'masterdb.ptp.local',
);
$databases['default']['slave'][] = array(
  'driver' => 'mysql',
  'database' => 'sdrupal',
  'username' => 'drupal',
  'password' => 'topsecret',
  'host' => 'slavedb.ptp.local',
);

マスターをシャットダウンする(mysqldサービスを停止する)まで設定は問題ありません。そうすると、サイトが起動します。

PDOException:SQLSTATE [HY000] [2013]「初期通信パケットの読み取り」でMySQLサーバーへの接続が失われました。システムエラー:drupal_is_denied()で111(/www/includes/bootstrap.incの1895行目)。追加

PDOException:SQLSTATE [HY000] [2013]「初期通信パケットの読み取り」でMySQLサーバーへの接続が失われました。システムエラー:dblog_watchdog()で111(/www/modules/dblog/dblog.moduleの行141)。

これを機能させるコツは何ですか?

回答:


6

マスター/マスター(高可用性)に関しては、マスターが停止していないときに負荷分散を実行できます。

次の例では、すべての書き込みをmaster1に行い、すべての読み取りをmaster2に行います。master1が失敗した場合、すべてのクエリはmaster2に送信されます。master2が失敗した場合、すべてのクエリはmaster1に送られます。

'master' => array('master1', 'master2')
'slave' => array('master2', 'master1')

以下は、すべてのクエリをmaster1に送信します。master1が失敗すると、すべてのクエリがmaster2に送られます。

'master' => array('master1', 'master2')
'slave' => array('master1', 'master2')

この回答をありがとうございます。これはかなり古く、古くなっている可能性があることを理解しています。Drupalの最新バージョンで同じことを実装するためのヒントはありますか?
Gaurav Ojha

4

他の人の利益のために-私が見つけたのと同じくらい最高です-箱から出してすぐにDrupal 7にはデータベースの高可用性機能が組み込まれていないようです。

マスター/スレーブ構成で2つのmysqlサーバーを設定できますが、最善の方法は、すべての書き込みをマスターに送信し、すべての読み取りをスレーブに送信することです。これは、粗雑な負荷分散を提供しますがフェイルオーバーは提供しません

つまり、マスターmysqlサーバーがダウンした場合、すべての賭けはオフになります。サイトがダウンし、PHPがマスターデータベースにアクセスできないことを伝える醜いエラーメッセージが表示されます。

伝統的に、私が理解しているように、他のソフトウェアでこれに取り組む方法は、mysql ndbクラスターまたはmysqlプロキシーを使用することですが、少し読んだ後、これらのテクノロジーは明らかにDrupalでうまく機能しません。

しかし、私はauto-slave(http://drupal.org/project/autoslave)と呼ばれるDrupalモジュールを偶然見つけました。広く使われているわけではありません(統計によると12のサイトがアクティブに使用しています)が、私たちが望むことを実行できるようです。さまざまな方法で構成できます。

マスター/スレーブ

Writes go to Master
Reads go to Slave

Drawbacks:
If master is down, the durpal site displays a prominent message that the site is in "read only" mode.

マスター/マスター(高可用性)

Read and Writes go to master1 (primary) unless its unavailable.
If master1 is unavailable, reads and writes go to master2 (secondary)

Drawbacks:
There is no load distribution. All load (reads and writes) go to either master1 or to master2

マスター/マスター/スレーブ(高可用性/高性能)

Writes go to Master1 (primary) unless its down then they go to Master2
Reads go to the slave unless its down
Drawbacks:
Requires a minimum of three database servers (master/master/slave)

これまでのところ、最初の(マスター/スレーブ)を正常にセットアップしました。次にマスター/マスター/スレーブをセットアップしようとしています。

うまくいけば、これは他の誰かを助けます。


これは多くのことを助けました。:)
esafwan 2014年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.