ここの情報は古いです。ご理解頂いた上でお取り扱いください。

Opened 11 years ago

Closed 11 years ago

#4036 closed enhancement (fixed)

DB分散設定がおこなえるようにする

Reported by: ebihara Owned by: ebihara
Priority: major Milestone: OpenPNE3.1.1
Component: core Version: 3.1.x
Keywords: Cc:

Description

DB分散設定がおこなえるようにする。

Change History (6)

comment:1 Changed 11 years ago by ebihara

Owner: changed from nobody to ebihara
Status: newassigned

comment:2 Changed 11 years ago by ebihara

Component: 指定しないcore

comment:3 Changed 11 years ago by ebihara

r12043 で DB 分散設定がおこなえるようにしました。

ただし、各データベースへのプライリティの割り振りや、簡便な設定などの実装はまだおこなっていません。

comment:4 Changed 11 years ago by ebihara

Resolution: fixed
Status: assignedclosed

r12224 で、データベースへプライオリティの割り振りがおこなえるようにしました。

この機能を利用するためには、 config/database.yml を以下のように設定します。

all:
  slave_1: # スレーブは slave_* という名称で、マスタよりも先に定義しなければならない
    class: sfDoctrineDatabase
    param:
      dsn: 'mysql:dbname=slave;host=localhost'
      username: root
      encoding: utf8
      attributes: { 164: true }
      priority: 2 # プライオリティ。この例だと、8分の2の確率でスレーブが利用される
  doctrine:  # デフォルト値を master に変更予定だが、 doctrine でも今後動作する
    class: sfDoctrineDatabase
    param:
      dsn: 'mysql:dbname=master;host=localhost'
      username: root
      encoding: utf8
      attributes: { 164: true }
      priority: 6  # この例だと、 8 分の 6 の確率でマスタが使用される。

comment:5 Changed 11 years ago by ebihara

Resolution: fixed
Status: closedreopened

r12224 の変更で、 opDoctrineQuery で sfContext のインスタンス経由で sfDatabaseManager を取りに行くようになっていますが、 opDoctrineQuery はアプリケーションに限らずタスクも使用するので、

The "default" context does not exist.

というエラーを吐いてしまう場面があります。

sfContext が取りに行けない状況では sfDatabaseManager を経由せずに DB を読みに行く形で修正を加えます。

comment:6 Changed 11 years ago by ebihara

Resolution: fixed
Status: reopenedclosed

r12229, r12230 で sfContext の問題を解消しました。

Note: See TracTickets for help on using tickets.