こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

別サーバーのDB同士を結合することは可能でしょうか?

お世話になっております。
MYSQL5を利用しております。

この度、別サーバーのDB同士を結合することは可能かどうか、もし可能であればサンプルを頂けないかと思い、投稿させて頂きました。

[現在使用しているDBサーバ]
kagoyaサーバーのDB(MYSQL)
sakuraサーバーのDB(MYSQL)

[上記DBを結合させるコードを記述したファイルを置くサーバー]
kagoyaサーバー

現在kagoyaサーバーにてそれぞれのDBからそれぞれのDBにアクセスして値を取得するところまでは出来ております。二回SQLを書いているのですが、これを一度でどうしても済ませたいと思い、JOINを使用して結合できないか調べてみました。
http://q.hatena.ne.jp/1178781253
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1113186486?fr=rcmd_chie_detail
上記URLのように、同サーバー内なら可能のようですが、実際にやってみたのですが、「mysql_query($sql, $db);」の第二引数でどちらのDBに接続すればいいかわからず、両方試してみましたがダメでした。(自分が書いたソースを破棄してしまったためうろ覚えなのですが、返ってきたresource はresource #13でした。)

結局できるのかできないのかわからないままの状態です・・・。もしわかる方がいましたら、どうかご教授下さい!よろしくお願い致します!

投稿日時 - 2009-11-28 13:30:59

QNo.5482257

困ってます

このQ&Aは役に立ちましたか?

4人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.4

思いつきで細かく確認していませんが。。。

MySQL以外のRDBMSは、使用しているでしょうか?

なぜこんなことを聞くかというと、RDBMSによっては、外部表やDATALINK等といった概念で、他のRDBMSの操作を可能にしているものもあります。そのRDBMSによってどこまで実装しているかですが、異なるDBサーバ、異なるRDBMSの表をJOINしたりできたりします。

つまりそういった機能を実装しているRDBMS上で、MySQLの表に対し外部表などとして定義し、そのRDBMS経由で操作するといった方法です。

外部表やDATALINKは、SQL99で標準SQLに入ったと記憶していますが、先行して実装しているRDBMSでは、独自仕様が多いかも知れません。

運用や性能などの面で、外部表などでなく、MySQL間でレプリケーションした方がいいかもしれませんが、こんなこともできたりする程度のアドバイスですけどね。

投稿日時 - 2009-12-01 21:02:30

ANo.3

例で上がっているのは、ネームスペースレベルでどうにかなるものなので、サーバーが別になるとかなり違います。
SQLでどうにもなりません。

この状況で、まともな選択肢なら、#1 の提案のように、
レプリケーションで、サーバー双方に結合対象のテーブルを複製させて、結合させる方法が分かりやすいでしょう。
あくまで、複製された方のテーブルでは更新を行なわないという前提ですが。

これ以外の方法としては、MySQL Cluster を使って、ストレージエンジンを共有してしまうと言う手があります。

これだと、それぞれのサーバから、ローカルのテーブルのようにアクセスできて、URLの例のような結合も可能になります。

ですが、メモリーをかなり使うのと、チューニングはとっても分かりにくいのと、管理も複雑で簡単とは言えません。

投稿日時 - 2009-12-01 15:19:41

ANo.2

それぞれのDBをダンプします(mysqldump)。
テキストエディターで必要なテーブルを残し第3のDBダンプリストを合成作成し、それを元に戻す、というのは如何ですか。

厄介なプログラムを設定するよりは楽だと思いますが。但し、第3のDBはあくまでも第1および第2のDBとは別名にし、確認後、第1または第2のDB名に戻せば良いはずです。もうひとつ、OSがLinux(Unix)の場合はくれぐれも日本語の文字化けにご注意を。

投稿日時 - 2009-12-01 11:31:31

ANo.1

「レプリケーション」で複数MySQLサーバー間のデータやりとりが出来るようですが、それぞれのサーバー側で互いに対応していないと無理です。
なので、それぞれのサーバーから個別にデータを取ってきて、phpで、データ合成するしかありません。

投稿日時 - 2009-11-29 02:46:58

あなたにオススメの質問