MySQLマスター/スレーブレプリケーションが機能しないという質問とその回答を読みました。
スレーブデータベースの使用は、Drupalコアではほとんど実装されていません。独自のモジュールを開発している場合、db_queryの呼び出しでは、$ options配列を使用してスレーブデータベースを使用することを指定する必要があります。この配列の設定方法については、DatabaseConnection :: defaultOptionsを参照してください。
子猫を殺さずにコアをハッキングして、スレーブSELECTクエリを取得db_query()
およびdb_select()
作成する方法はありますか?
デフォルトでは、これらの関数は、スレーブにクエリするように特に指示されない限り、マスターにクエリを実行します(APIを参照)。db_query($query, $args, array('target' => 'slave'))
これを達成するためにスレーブとコア(およびすべてのモジュール)をクエリするために記述する必要があります。
検索(スレーブ部分を参照)とアグリゲーターのみがこれを活用しているようです。
編集: 10月25日
プレスフロー7が出ているのを見ましたが、今それが大いに役立つかどうかわかりません。
何か関連するものが見つからなかったので、答えを得るのを助けるためにちょっとした賞金を試しましょう。
編集: 10月31日
主に、このトピックに関するCrellのコメントを心配しています:スレーブをどうするか?。
主SELECT
に、スレーブにクエリを送信する場合、レプリケーションの遅延で何が起こるかnode_load()
、新しいノードを保存した直後にやりたいことがあるという事実に問題があります。
SELECT
クエリを?レプリケーションの遅延と、保存した直後にノードをロードすると問題が発生する可能性があるという事実にどのように対処しますか?