- 締切済み
別サーバーの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でした。) 結局できるのかできないのかわからないままの状態です・・・。もしわかる方がいましたら、どうかご教授下さい!よろしくお願い致します!
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- chukenkenkou
- ベストアンサー率43% (833/1926)
思いつきで細かく確認していませんが。。。 MySQL以外のRDBMSは、使用しているでしょうか? なぜこんなことを聞くかというと、RDBMSによっては、外部表やDATALINK等といった概念で、他のRDBMSの操作を可能にしているものもあります。そのRDBMSによってどこまで実装しているかですが、異なるDBサーバ、異なるRDBMSの表をJOINしたりできたりします。 つまりそういった機能を実装しているRDBMS上で、MySQLの表に対し外部表などとして定義し、そのRDBMS経由で操作するといった方法です。 外部表やDATALINKは、SQL99で標準SQLに入ったと記憶していますが、先行して実装しているRDBMSでは、独自仕様が多いかも知れません。 運用や性能などの面で、外部表などでなく、MySQL間でレプリケーションした方がいいかもしれませんが、こんなこともできたりする程度のアドバイスですけどね。
- athanasius
- ベストアンサー率37% (361/964)
例で上がっているのは、ネームスペースレベルでどうにかなるものなので、サーバーが別になるとかなり違います。 SQLでどうにもなりません。 この状況で、まともな選択肢なら、#1 の提案のように、 レプリケーションで、サーバー双方に結合対象のテーブルを複製させて、結合させる方法が分かりやすいでしょう。 あくまで、複製された方のテーブルでは更新を行なわないという前提ですが。 これ以外の方法としては、MySQL Cluster を使って、ストレージエンジンを共有してしまうと言う手があります。 これだと、それぞれのサーバから、ローカルのテーブルのようにアクセスできて、URLの例のような結合も可能になります。 ですが、メモリーをかなり使うのと、チューニングはとっても分かりにくいのと、管理も複雑で簡単とは言えません。
- kataken001
- ベストアンサー率100% (1/1)
それぞれのDBをダンプします(mysqldump)。 テキストエディターで必要なテーブルを残し第3のDBダンプリストを合成作成し、それを元に戻す、というのは如何ですか。 厄介なプログラムを設定するよりは楽だと思いますが。但し、第3のDBはあくまでも第1および第2のDBとは別名にし、確認後、第1または第2のDB名に戻せば良いはずです。もうひとつ、OSがLinux(Unix)の場合はくれぐれも日本語の文字化けにご注意を。
- hrm_mmm
- ベストアンサー率63% (292/459)
「レプリケーション」で複数MySQLサーバー間のデータやりとりが出来るようですが、それぞれのサーバー側で互いに対応していないと無理です。 なので、それぞれのサーバーから個別にデータを取ってきて、phpで、データ合成するしかありません。