• 締切済み
  • すぐに回答を!

複数のサーバー間の各データベースの同期の方法

こんにちは。 現在、WinXP、PHP5+MySQLにてデータベースWEBアプリケーションを作成していますが、問題に直面してしまいましたので、 こちらを利用させて頂いております。 どうぞ宜しくお願い致します。 以下が質問の内容です。 AのWEBサーバーにはAデータベース、 BのWEBサーバーにはBデータベース、 CのWEBサーバーにはCデータベースがあり、 AもBもCもまったく同じWEBアプリケーションとなっていて、 AからもBからもCからも、新規データ登録が可能となっているのですが、 AとBとCから新規登録された、または、更新されたデーターベースの登録データを自動的に3つのサーバー間ですべて同期したいと考えておりますが、その方法がまったく思い浮かびません。 具体的にどのような方法があるのか、又は、不可能なのか、 解る方がいらっしゃいましたら、ご教授頂けると幸いです。 説明下手ですので、説明が不適切でしたら、 すぐに補足させて頂きますので、 どうぞ宜しくお願い申し上げます。

共感・応援の気持ちを伝えよう!

  • 回答数3
  • 閲覧数2372
  • ありがとう数10

みんなの回答

  • 回答No.3
  • galluda
  • ベストアンサー率35% (440/1242)

がるです。 なるほど「どれがダウンしても良い様に3重のシステム構成としている」のですね。 だとすると、それは通常「かなりハイレベルな技術」が必要になります。 相応のスキルレベルがないのであれば、私なら「無理だと思った方がいいですよ」と回答します。 相応のスキルれべるがあるなら、とりあえず「同期のタイムラグは許容をどれくらいまでで考えてますか?」とか「どんな同期メカニズムを前提に考えてますか?」と質問をします。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

良く考えると方法が解りました。 クラスタリングやNBLとは違い、画期的方法を検討していたのですが、 なんとか実現する事が出来ました。 有難う御座いました。

関連するQ&A

  • Mysql+PHP+Apache/サーバークライアント環境での

    Mysql+PHP+ApacheでWebからデータベースを扱う勉強をはじめました。この3つを1台のPCにインストールして、Webサーバーをローカルに立てて動作確認をしてきました。これをサーバー/クライアント環境で行う場合のことでお尋ねします。 ★行いたいこと Webサーバーにデータ(HTML、PHP、データベース)を保存しておいて、クライアントからそのデータを操作して、Webページの開発を行いたい。 質問(1) Webサーバーにインストールするのは、Mysql+PHP+Apache、クライアントにインストールするのは、Mysqlでよろしいのか。 質問(2)クライアントのMysqlを起動して、サーバーのMysqlのデータを扱うという考え方でよいのか 質問(3)クライアントのMysql内のデータとサーバーのMysqlのデータの関係はどのようになるのか。 とてもお恥ずかしいですが、宜しくお願いします。

  • データベースから取り出した日本語が化けるのですが

    PHP初心者です。 データベースから取り出した日本語が化けるのでなにか直す方法は無いものかと悩んでおります。今のところアルファベット、数字は問題ありません。 構成はこんなかんじです。 Linux : Vine 2.5 PHP : PHP-4.2.1 DB : Postgresql-7.2 apache 1.3.26 現象: クライアントPCからwebでデータベースに日本語入力は出来ます。 データベースにターミナルから直接入り(psql [DB名])、(select * from [テーブル名];)で確認すると問題無く登録した通りに入っています。 クライアントPCからwebでデータベースの検索をして 拾い出したデータをクライアントPCのweb上で表示をすると文字化けし、 登録した文字とはほどとおいものが出て来ます。 "あ"と登録すると $$ などと出て来ます。 なにかいい方法がありましたら、教えて下さい。

    • 締切済み
    • PHP
  • データベースサーバー構築

    質問場所がここで良いか少し不安ですが 主にWebで公開するデータベースのシステムを作ろうとしています 自分のスキルの範囲でやろうとしていますが少し分からないことがあるので 教えてください まず 自分のできること(やっていること)は ・Windows系サーバー(IIS)を使ってVBスクリプト(ASP)で ローカルにあるMDBファイルにアクセスし商品を紹介する動的ページの作成 です。 今後複数ユーザーでデータベースを使うことになるので システムを変えていく必要がでてきて MDBはダメだという事になり色々調べた結果、今後のことも考えWebサーバーとは別に データーベースサーバーを作ってやると言う結論になりました 分からないこと(あやふやな理解になっていること) 1.データベースサーバーとは何か?  これは OSは別として、SQL Server、オラクル、MYSQLといった  RDBMSをインストールしただけのデータベース置き場専用という感じのPCを指すと言うことで良いでしょうか?  例えば Win2000のIISでwebサーバーを作りその中のASPページから  別PCにあるデータベースにアクセスする構成がデータベースサーバーを別に設けると言うことで正しいのかどうかと言うことなのです。 2.データベースは何がよいか?(SQL Serverでよいか?)  本来であれば、webで商品在庫を公開することがメインで更新頻度が少ないデータベース  (300人ぐらいで共有し1万~3万レコードです)です、なおかつ複雑なSQLは発行しません。  ほぼASPからの接続で抽出(ID=** という単純な抽出条件)しか使わない、あとは並び替え位なので  MYSQLが向いているようでしたが、私はLinux系は全く分かりません。  なので メンテナンスの面や勉強する時間の節約からすれば  Windowsで動くSQL Serverが良いと思うのですが(MYSQLもWindowsで  動くけど得意とする高速性はLinux系でないと発揮しないみたいなのでやめようと思っています)  上記のような条件と使い方の場合、そんなに処理時間やマシンの負荷に両者間では大差があるのでしょうか?  MDBの時でもあまり不具合を感じなかったので、それよりは格段にSQL Serverは早いし負荷が少ないと聞いていますので  大丈夫かなと思っています。 3.SQL ServerをインストールするPCは何が最適か?  先も述べたようにデータベース専用として使う予定ですが  Win2000でよいのでしょうか?(XPより2000の方が安定がよいと思うので) それともWin2003Serverに  インストールできるならその方がよいでしょうか?  とにかく安定度が一番なのですが、そもそもWin2003Serverに  インストールできるのでしょうか?(もうすぐ2008?がでるからそれにしようかとも検討中です) 4.最終的に自分の思っていることと実体の構成(理解)は理解は以下のような感じで正しいのでしょうか?    複数でデータベースを共有するため、MDBでなくネットワークに強い (共有データベースで壊れにくい?壊れない?)データベースに変えるため、windowsで動くSQL Serverを使う  そのSQL ServerはwebサーバーがあるPCとは別のPCにインストールして使う  (データベースサーバーを別に用意する)ことでwebサーバーの負荷も減らし、データベースも快適に動くようにする 最終的にはWin2003Server×2台で1方はwebサーバー1方はSQL Server をインストールして使うことで上記を実現させる 5.SQL ServerのデータベースはMDBのような最適化というような作業が必要なのでしょうか?  そもそも 似ているようで違う MDBとSQL Serverでその特徴がきちんと理解できていないので  愚問なのかもしれませんが 気になるので教えてください 6.オラクルと違いSQL Serverはレコードの更新や追加の時  その行(レコード)だけロックすると言うことができない?  ようなので、Aさんが自分の商品を更新中にBさんも更新する  と言うようなことが起こった場合(MDBはこれになると壊れると書いているので MDBをやめました)  Aさんの更新が終わるまでBさんは更新できない(更新終了まで待つ)と言うことになるのでしょうか?  また、このとき商品一覧を要求された場合、更新中の情報はどの様になるのでしょうか?(更新終了まで見れない?) なんか 分かりにくい質問になってしまいましたが、お金をかけて 買ったはいいが、理解不足でやりたいことができなかったと言うことは 避けたいので ご教授下さい。 よろしくお願いします。

  • 回答No.2
  • yambejp
  • ベストアンサー率51% (3827/7415)

同期はできますがデータの整合性を考えればおそらくリアルタイムに近い 同期を希望しているのではないでしょうか? それであれば同期ではなく、更新は特定サーバーのみとして、それを 各サーバーに同期して検索は各サーバーで行うというのが妥当です。 それでもわずかなタイミングのずれで正確なデータが取れないことも あるでしょう。 やりかたについては、掲示板で簡単に説明できるレベルではないので 専門書を大手書店でさがしてみてください

共感・感謝の気持ちを伝えよう!

質問者からのお礼

良く考えると方法が解りました。 アドヴァイス頂きまして、有難う御座いました。 心より感謝申し上げます。

  • 回答No.1
  • galluda
  • ベストアンサー率35% (440/1242)

がると申します。 通常、そういった構成の場合、どこか一箇所(ABCのいずれかでもいいですし、DB用に別にサーバたててもよいでしょうし)にDBサーバをたててそこで処理、というのが割合に一般的かと思います。 同期を取る方法がないわけではないのですが、若干…ではなく面倒です。 という感じで回答になってますでしょうか?

共感・感謝の気持ちを伝えよう!

質問者からの補足

がるさん、お返事有難う御座います。 A、B、C、共にWEBサーバーとDBサーバーがそれぞれ存在しております。 そして、Aの場所とBの場所、Cの場所は、すべて違う地域にそれぞれ各WEBサーバー及びDBサーバーが設置されております。 どれがダウンしても良い様に3重のシステム構成としているものですので、他にひとつサーバーを立てる事は、目的に反するため実現不可能です。

関連するQ&A

  • HTMLに組み込んだFlash(AS3)でデータベースの情報を扱う方法を教えていただけませんか?

    HTMLに埋め込んだ、AS3によって書かれたFlashをデータベースのデータによって動かしたいのですが、方法が分かりません。PHPを使った方法や、asSQL、過去ログの方法も試してみたのですが、うまく動かせませんでした。 環境としては FlashCS3 MySQL1.4 PHP5.0 を扱っています。 最低限、データベースのデータをダイナミックテキストに表示するだけでも分かれば、後は自分で出来そうなのですが・・・ 再度PHPを使った方法、AS3からMySQLを扱う方法など、MySQLの情報をAS3で扱う基本的な機能なら何でも良いので教えていただけませんか? 基本的な質問で申し訳ありませんが、よろしくお願いします。

  • PHPからデータベースへの登録について

    はじめまして。現在、仕事の関係でPHPのプログラムを勉強している者です。 早速ですが、質問させていただきます。 PHPで作成したフォームメールから別で用意したデータベースに 入力データを登録しようとしているのですが、エラーでうまく動作しません。 PHP側のコードミスもあるかもしれませんが、PHPを動作させているサーバーと データベースサーバーの文字コードが違う点も原因しているのでは?と調べている状況です。 フォームからのデータを送るPHP ⇒ Shift_jis PHPをアップしているWebサーバー ⇒ Shift_jis データベースサーバー ⇒ EUC-JP データベースへの接続は問題なく行えているようですので、 登録処理するコードの部分のみを書きます。(↓) ******************************************************************************** // データベースへの登録 $sql = "INSERT INTO FORM_DATA(DataNumber, Time, Name, Email, Area, Sex, Interest, Commnet, OS, IP) VALUES('$tsvcount', '$ymdhis', '$sender_name', '$mail_address', '$mail_area', '$mail_sex', '$mail_interest', '$mail_body', '$os', '$ip')"; $sql = mb_convert_encoding($sql, 'EUC-JP', 'sjis'); mysql_query("SET NAMES 'EUC-JP'"); $db_result = mysql_query($sql); print $sql; print $db_result; if (!$db_result) { exit('Error! データを登録できませんでした。'); } // データベースとの接続解除 $db = mysql_close($db); if (!$db) { exit('データベースとの接続を閉じれませんでした。'); } **************************************************************************** PHP&Webサーバーとデータベースの文字コードを統一すればいい話かもしれませんが、 事情により異なる文字コードの環境で開発しております。 上記の通り、データベースに送信するSQL文はmb_convert_encoding()で「EUC-JP」に変換し、 mysql_query($sql);でデータベースに送信している形です。 この状態で送信すると、エラーとなり送ったSQL文を処理してくれません。 文字コードの変換処理、コードの記述など何が原因なのか分からず困っています。 考えられる原因と、解決策があればご教授いただきたいです。 ちなみに私はPHPはもちろんプログラム自体もまだ経験が浅く、 基礎的なことも理解していないことがかなりあります。 その上でご説明いただけますと大変有難いです。 ではよろしくお願い致します。

    • 締切済み
    • PHP
  • PHPでMySQLのデータベースを新規で作るには?

    こんにちは PHPとMySQLを勉強しているものです。 PHPからMySQLの既存データベースの接続や、テーブル参照はわかったのですが、 新規にデータベースやテーブルを作るときには PHPからどういう記述を行えばできますでしょうか。

    • ベストアンサー
    • PHP
  • WEBデータベースを構築できるソフト

    WEBデータベースを構築しようとすると、よくある方法としてはphpとMySQLを利用する方法を思いつきますが、例えばプログラムの知識がなくても簡単にデータベースを構築できるようなソフトをご存知な方いましたら教えてもらえないでしょうか。 検索してデータポット社のAlamode(http://www.datapot.com/index.html)というソフトを見つけたのですが、これ以外にもあるのか知りたいと考えております。よろしくお願いします。

  • PHPで外部サーバーのデータベースにアクセスは可能でしょうか?

    PHPで外部サーバーのデータベースにアクセスは可能でしょうか? データ量が多すぎて複数のデータベースに分けております。 またサーバーも変える必要があるためサーバーも複数に分けております。 サーバー1にデータベース1 サーバー2にデータベース2 サーバー3にデータベース3 がある状態で、サーバー4からPHPプログラムでデータベースにアクセスして、サーバー4に設置してあるホームページにデータを表示するプログラムを作りたい。 このような事が出来るのでしょうか? PHPプログラムが置いてある同一サーバー上のデータベースへのアクセスは出来たのですが、外部サーバーへのアクセスの仕方が解りません。。。 サーバーはXrea、さくらインターネットを使用しています。 PHPとMySQLを使用。 よろしくお願いします。

    • ベストアンサー
    • MySQL
  • データベースサーバーにあるデータをWebページで表示したい

    ロリポップを使っています。ロリポップは専用のデータベースサーバー(WEBページのサーバーとは別)とMySQLがすぐ使えるので、MySQLでcsvファイルからデータを入力しました。 検索結果を、WEB上に表の形で表示をさせたいのですが、どうすれば良いのでしょうか? PHPを使えばいいらしいと言うことぐらいしかわからない初心者です。昨日丸一日ネットで調べましたがよくわかりません。 おすすめの書籍とか、おすすめのホームページ、サンプルのあるサイトなどを、教えて頂けませんでしょうか?

    • ベストアンサー
    • PHP
  • PHP データベースの複数検索の設定

    PHPでデーターベースを検索するWEBページを作成しています。 データーベースはSQLiteを使っています。 データベースを検索する際に、 下記のWEBページのような複数条件での 検索設定を設定したいのですが、 何かいい方法はありますでしょうか。 いろいろ参考書を見たり、インターネットで検索したりしているのですがいい方法がなくて悩んでいます。 どうぞよろしくおねがい致します。

    • 締切済み
    • PHP
  • データベース名などこれで合っているでしょうか・・。

    すいません。初めてデータベースを扱うのですが、今までローカル環境でしか動かしていないため どのように実際に動かすのか分からない部分があります。(サイトは完成していましてローカル環境ではちゃんと動きました) まずデータベース名やアカウント名なのですが、データベースのためにさくらのサーバーを借りました。 データベースの設定画面を見ると以下のようになっています。 ----------------------------------------------------- データベース バージョン: MySQL 5.5 データベース サーバ mysql9999.db.sakura.ne.jp データベース ユーザ名 (初期アカウント名) abcd777 接続パスワード変更 ************ データベース名 abcd777_data ------------------------------------------------------- 上記の場合以下で合っているのでしょうか? $pdo = new PDO("mysql:dbname= _abcd777_data ; host=mysql9999.db.sakura.ne.jp", "abcd777", "************"); ポート番号なども設定があるような事も書いてあるサイトがあるのですが何をどうしてよいのか 全く分かりません。(とりあえず上記のような設定でデータベースからデータをphpで呼び出しましたが 上手く動きませんでした) もう一つ疑問があるのですが、私はトップページをindex.phpとしましたが、上記のような方法では アカウントやらパスワードが丸見えですよね? そもそも私は全く違う事をしているのでしょうか? できれば実際の運用の流れも簡単に書いてもらえると助かります。

  • データベース容量の算出方法について

    現在仕事上において、MYSQL4.1 & PHP4.3 を利用してアプリケーションを開発しています。 今回、MYSQL上の各データベースごとのディスク使用容量をWEB上で閲覧できる機能を追加することになりました。 現在以下の方法で算出しているのですが、出力されるのに1分以上掛かり、とても実用に耐えうる速度ではありません。 <各データベース容量の算出方法> 1. 独自のテーブルから登録されている各データベース名(40個)を取得 2. (1)で取得したデータベース名から、以下のクエリを実行し、テーブル(75個)の情報を取得。  show table status <取得したデータベース名> 3. (2)で取得したテーブル情報からData_lengthとIndex_lengthを足してテーブルの容量を算出。 4. 3で取得したテーブル容量を各データベースごとに合計する。 上記を繰り返して各データベースの容量を算出しています。しかし上記の方法ですと、全データベースの全テーブルにアクセスしていることになりますので、処理が非常に重くなります。 show table status がボトルネックになっているようなのですが、上記の方法以外にデータベース容量の算出方法がありましたら、どうかご教授頂けないのでしょうか? 本当に困っていますのでどのようなご意見でも結構です。 どうぞ宜しくお願い致します。

  • データベース:サーバ上のデータの保存先?

    参考書を頼りにデータベース(Mysql)を勉強しています。 ほとんどの参考書がローカルでサーバ、データベース、Perl(PHP)の環境を整えて練習・・・という方法を採っていますが、いざ運用!という時の実践的なことが書かれていない本がほとんどなんですよねぇ、まったく・・・・。 そこで、以下の点について質問です。 (1)ローカルで作ったデータをTelnetやFTPソフトを使って リモートのサーバ上(借りたスペース)に保存することってできるんですよね? これができなかったら意味ないですよね? それともTelnetでMysqlを操作し、直接サーバ上にデータを作るのですか? (2)保存するディレクトリは管理者に問合せないと分からないのですか?それともお決まり(既定)の場所があるのでしょうか?はたまた、任意のディレクトリでも可能なのでしょうか? (3)上記のような点に関しては、SQLではなくApacheの本を読んだほうが良いのでしょうか? 以上、よろしくご教授ください。