내가 하고자 한 것은….
A서버의 AA DB에서 table A1 이 있고
B서버의 BB DB에서 table B1 이 있을때,
A서버의 client 에서 A1테이블과 B1테이블을 조인하고자 한다..
물론 JDBC로 두 DB를 연결해서 join 프로그램을 짜도 되는데…
그냥 할수 있는 방법이 없을까 고민하다가 이런 방법을 찾게 되었다.
1 2 3 4 5 6 7 8 9 |
CREATE TABLE TestB1 ( `SEQ` bigint(20) NOT NULL, `NODEID` varchar(10) default NULL, `NAME` varchar(128) default NULL, ... `DEL_YN` char(1) default 'Y' PRIMARY KEY (`SEQ`) ) ENGINE=FEDERATED DEFAULT CHARSET=utf8 CONNECTION='mysql://mysqluserid:mysqluserpw@B서버Domain:3306/BB/B1'; |
위의 쿼리를 서버 A의 AA DB에 생성을 하게되면, AA DB에서 TestB1 를 통해서 B서버의 BB DB의 B1테이블에 대한 insert, update, delete, select 을 할 수 있다. (물론 Join도…)
PS. Federated Tables기능을 사용하기 위해서는 Mysql 컴파일시 Configure에서 “-with-federated-storage-engine ” 옵션을 주어야 한다. (MySQL 5.0.3 or newer. )
트랜젝션 처리도 안된다고 하며, B서버의 BB DB에 대한 접속정보가 노출되므로 주의..
참고 :
http://dolba.net/tt/k2club/entry/Mysql-FEDERATED-Tables-DB-Link
http://blackbull.tistory.com/31