人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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

●質問者: kaji0245
●カテゴリ:ウェブ制作
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● holoholobird
●50ポイント

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

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


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

SPANIELさんのコメント
>質問のような、複数の別サーバ間でリアルタイムの同期をとるのは相当難しいです。 私の回答にも書かせていただきましたが、商用DBだけではなく MySQL のようなオープンソースのDBでもごく当たり前に持っている機能でできます。 魚拓。 http://megalodon.jp/2013-0914-1013-11/q.hatena.ne.jp/1379065386

2 ● SPANIEL
●50ポイント

別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を操作するプログラムが書ける方であれば可能だと思います。


kaji0245さんのコメント
詳細にてありがとうございます。 勉強させていただきます<(_ _)>
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ