반응형

mysql에서는 FEDERATED라는 엔진이 있다.
FEDERATED 테이블은 사용하기 매우 간단하며, 정상적인 경우, 동일한 호스트, 다른 
호스트 상에서 두대의 서버를 구동할 수 있습니다. 즉 FEDERATED 테이블이 동일한 서버가 관리하는 다른 테이블을 사용할 수 있다는 말이죠. 

우선, 여러분이 FEDERATED 테이블을 사용해서 접속하고자 하는 리모트 서버상에 테이블 가지고 있어야 한다. federated 데이터베이스에 리모트 테이블이 있고  그 테이블이 아래와 같이 정의 되었다고 가정하자: 

 CREATE TABLE test_table ( 
    id    INT(20) NOT NULL AUTO_INCREMENT, 
    name  VARCHAR(32) NOT NULL DEFAULT '', 
    other  INT(20) NOT NULL DEFAULT '0', 
    PRIMARY KEY  (id), 
    INDEX name (name), 
    INDEX other_key (other) 
) 
ENGINE=MyISAM 
DEFAULT CHARSET=latin1; 
  
위의 예문은 MyISAM 테이블을 사용하고는 있지만, 테이블은 모든 스토리지 엔진을 사용할 수 있습니다. 
다음에는, 리모트 테이블의 접속하기 위해 로컬 서버에 FEDERATED 테이블을 생성합니다. 

CREATE TABLE federated_table ( 
    id    INT(20) NOT NULL AUTO_INCREMENT, 
    name  VARCHAR(32) NOT NULL DEFAULT '', 
    other  INT(20) NOT NULL DEFAULT '0', 
    PRIMARY KEY  (id), 
    INDEX name (name), 
    INDEX other_key (other) 
) 
ENGINE=FEDERATED 
DEFAULT CHARSET=latin1 

CONNECTION='mysql://root@remote_host:9306/federated/test_table'; 
(MySQL 5.0.13 이전에는, COMMENT 를 CONNECTION 대신에 사용하였습니다.) 
  
이 테이블의 구조는 반드시 리모트 테이블의 구조와 정확히 같아야 하지만, except that the ENGINE 테이블 옵션은 FEDERATED이고 CONNECTION 테이블 옵션은 리모트 서버에 접속하는 방법을 FEDERATED 엔진에 알려주는 연결 스트링입니다. 

FEDERATED 엔진은 federated 데이터베이스에 test_table.frm 파일만을 생성합니다. 

리모트 호스트 정보는 리모트 서버에게 여러분의 로컬 서버가 어디에 접속되어 있는지를 알려 주고, 데이터베이스 및 테이블 정보는 데이터 소스로 사용되는 리모트 테이블이 어떤 것인지를 알려줍니다. 이 예문에서 보면, 리모트 서버는 remote_host 형태로 구동되어야 한다고 가리켜져 있기 때문에, 포트 9306에서, MySQL 서버는 리모트 서버에서 구동되어야 하고 포트 9306에 리스팅 되어야만 합니다. 

CONNECTION 옵션에서의 연결 스트링의 일반적인 형태는 다음과 같습니다. 
scheme://user_name[:password]@host_name[:port_num]/db_name/tbl_name 
이 시점에서 보면, 오직 mysql만이 scheme 값 형태로 지원된다; 패스워드와 포트 번호는 선택 사항입니다. 
아래에 몇 가지 연결 스트링에 대한 예가 있습니다. 

CONNECTION='mysql://username:password@hostname:port/database/tablename' 
CONNECTION='mysql://username@hostname/database/tablename' 
CONNECTION='mysql://username:password@hostname/database/tablename' 

연결 스트링을 지정하기 위한 CONNECTION의 사용은 논-옵티말 (non-optimal)이며 나중에 변경될 예정입니다.FEDERATED 테이블을 사용하는 어플리케이션에 대해서는 이점을 기억해 둡시다. 이러한 어플리케이션은, 연결 정보를 지정하기 위해 포맷이 변경되는 경우에는 수정이 필요할 수도 있습니다. 

연결 스트링에서 주어지는 모든 패스워드는 평이한 텍스트 형태로 저장되기 때문에, EDERATED 테이블에 대해서 SHOW CREATE TABLE 또는 SHOW TABLE STATUS를 사용하는 모든 사용자, 또는 INFORMATION_SCHEMA 데이터베이스에 있는TABLES 테이블을 쿼리하는 모든 사용자가 이것을 볼 수 있게 됩니다.


출처 : http://blog.naver.com/zamzacs/80037978241


반응형

+ Recent posts