プロが教えるわが家の防犯対策術!

お世話になっております。
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 …
上記URLのように、同サーバー内なら可能のようですが、実際にやってみたのですが、「mysql_query($sql, $db);」の第二引数でどちらのDBに接続すればいいかわからず、両方試してみましたがダメでした。(自分が書いたソースを破棄してしまったためうろ覚えなのですが、返ってきたresource はresource #13でした。)

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

A 回答 (4件)

「レプリケーション」で複数MySQLサーバー間のデータやりとりが出来るようですが、それぞれのサーバー側で互いに対応していないと無理です。


なので、それぞれのサーバーから個別にデータを取ってきて、phpで、データ合成するしかありません。
    • good
    • 0

それぞれのDBをダンプします(mysqldump)。


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

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

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


SQLでどうにもなりません。

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

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

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

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

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

。。

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

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

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

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

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

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

関連するカテゴリからQ&Aを探す