2016-11-16 9 views
-1

私たちは複数のマスターをスレーブに同期させています。各マスタのデータベースを作成することにしました(MDB0001; MDB0002; MDB0003など)。 1つのレプリケーションが失敗した場合、またはデータが破損している場合、データベース全体が壊れないようにすることができます。スレーブは、Web上にある人に情報を表示するために使用されます(マスターはローカルネットワークでのみ利用可能です)。1つのウェブサイト - 複数のデータベース

その目的は、誰がログインしているかに応じて各データベースの内容を表示するサーバ(スレーブ)上のWebサイト(php)を作成することです。したがって、ユーザMDB0001が接続されている場合、データベースからデータを読み取る必要がありますMDB0001。

どうすればいいですか?それは良い方法ですか?または、各データベースのWebサイトを複製する必要がありますか?

私の説明ではっきりしていることを願っています。ありがとう

+1

何?ユーザーごとにデータベースがありますか?何人のユーザーがいますか? –

+0

これは私が決定した人ではありません...現在、2つのデータベースがあります。しかし、システムが売却されるたびに、新しいデータベースが作成されます。私の最初の考えは、異なるプライマリ・キー(ユニーク・キー+オートインクリメント)を持つマスターごとに1つのデータベースを作成し、その後同じデータベースにレプリケートすることでした。しかし、技術者は、レプリケーションのためにそれらを別々に持つ方が簡単で安全であると言いました。私たちの心を変える時間はまだあります。システムのこの部分はまだ作成されていません。それが私が質問した理由です。 – sincos

+0

5000人の顧客がいる場合、メンテナンスの悪夢の準備をしてください。 – tadman

答えて

0

ログインから変数を取得すると、db.phpページにkey-> value配列をまとめて入れることができます。

$userDBs = array('login1'=>'db1','login2'=>'db2'); 

$dbName = $userDBs[$loggedinID]; // if login1 logs in, db1 would be result. 

    $db = new PDO('mysql:host=localhost;dbname='.$dbName, 'someUser', 'somePass'); 

や団体のために別々のDBを持っている:

$sel = "Select dbName from databases where userId='".$loggedInID."'"; 
    $stmt = $db->query($sel); 
    while($r = $stmt->fetch()){ 
     $dbName = $r['dbName']; 
    } 

$db = new PDO('mysql:host=localhost;dbname='.$dbName, 'someUser', 'somePass'); 
+0

私はこれが質問への答えである方法を見ないでください –

+0

笑、あなたは今夜私の上にいる。彼は、login1がログインすると、db1を使用します.login2がdb2を使用してログインすると、私は間違っていますか? – bart2puck

+0

申し訳ありませんが、そのように見える場合、私は実際には尋ねられていないレプリケーションの問題にもっと集中していたと思います。 –

関連する問題