wordpress3.6の別サイト(別サーバー)においてDB共有の方法を模索中です。5000名ほどの既存会員がAサイトで1年ほどたちますが、今回立ち上げるBサイトでもAの5000名が同一アカウントでログイン出来るようにしたいです。さらに理想を言うとどちらかで会員情報の更新があった際にA,Bでの双方のDBを同時更新させたいのですが良い方法はないでしょうか?

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:2013/09/13 18:43:06
  • 終了:2013/09/20 18:45:05

回答(2件)

id:holoholobird No.1

holoholobird回答回数574ベストアンサー獲得回数1042013/09/13 20:14:30

ポイント50pt

質問のような、複数の別サーバ間でリアルタイムの同期をとるのは相当難しいです。

サイトを運営するサーバA、サイトを運営するサーバB、アカウント情報を取り扱うサーバCの3種構成にして、Cを基準にA,Bを操作する方がいいと思います。

id:kaji0245

ご回答ありがとうございます。
C=DBサーバー
AB=ウェブサーバー
に分ける方法でしょうか?もう少し具体的な方法でもわかると助かります。
参考にさせていただきます。

2013/09/13 20:27:01
id:fowling-piece

>質問のような、複数の別サーバ間でリアルタイムの同期をとるのは相当難しいです。
私の回答にも書かせていただきましたが、商用DBだけではなく MySQL のようなオープンソースのDBでもごく当たり前に持っている機能でできます。

魚拓。
http://megalodon.jp/2013-0914-1013-11/q.hatena.ne.jp/1379065386

2013/09/14 10:32:25
id:fowling-piece No.2

SPANIEL回答回数37ベストアンサー獲得回数82013/09/14 10:31:31

ポイント50pt

別DBシステムで内容を一致させる技術を「レプリケーション」と言います。
通常は可用性向上のため正のDB(マスター)への書き込みを副のDB(スレーブ)に自動で書き込み内容を一致させる、という使い方をされます。
普通に使われている技術で MySQL でも、この機能はあります。

質問で問われているようなケースは「双方向レプリケーション」と呼ばれます。
「mysql レプリケーション 双方向」というキーワードで検索すると、関連する情報が得られます。
会員情報を持つテーブルに対して双方向のレプリケーションをする設定をすることになると思います。
検索結果から拾っただけですが実際の定義例を書いてあるページなどを参考にやってみたらいかがでしょうか。

ただし内容の一致化はRBDシステムがやってくれますが、全くアプリケーションとして考慮しなくて良いかというと別の話です。
会員情報の更新は、
1. 画面に表示
2. 利用者が入力
3. DB へ書き込み
という手順になると思います。
本人だけが更新するということであれば運用としては考えにくいですが、以下のような操作をすると書き込みが後勝ちになってしまいます。

A-1. 画面に表示 
A-2. 利用者が入力 
 B-1. 画面に表示
 B-2. 利用者が入力
 B-3. DB へ書き込み
A-3. DB へ書き込み 

B-3 の手順で行った書き込みがバッサリと上書きされる可能性があるわけです。

もうひとつの方法は三つ目のDBサーバを用意して会員情報はそちらに持つことです。
イメージにするとこのような感じでしょうか。

サーバA
 プログラム──→会員情報以外のテーブル
       ──→サーバCの会員情報テーブル

サーバB
 プログラム──→会員情報以外のテーブル
       ──→サーバCの会員情報テーブル
    
サーバC
 会員情報テーブル

コネクションの確立などの基本的な処理を隠ぺいしているSNSのフレームワークでは、このような改造をするのはちょっと骨が折れるかもしれませんがPHPでDBを操作するプログラムが書ける方であれば可能だと思います。

id:kaji0245

詳細にてありがとうございます。
勉強させていただきます<(_ _)>

2013/09/14 11:12:43

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません