추가로 확인된 부분이 있어서 정리해 보았다.
Federated 테이블 생성 시 마지막에 remote DB의 접속 정보를 작성하게 된다.
간단하게 앞에서 만들어 본 federated_table 에 대해서 script 를 확인해 보자
(보기 편하게 \G 를 붙여 세로로 보자)
mysql > show create table fedrated_table\G
아무리 회사 테스트DB정보이지만 모자이크...-_-
다른 부분은 전부 필요없고, 맨 하단에 이렇게 IP 정보와 포트 정보, 계정 정보 등이 모두 표기가 된다......(모자이크지만....)
그래서 분명 보안상에 문제가 될 수 있다.
그렇기에 다음과 같이 Server를 Syntax(synonym??) 으로 만들어 진행하면 보안적인 부분을 해결할 수 있다.
Syntax 만드는 구문이다.
CREATE SERVER server_name
FOREIGN DATA WRAPPER wrapper_name
OPTIONS (option [, option] ...)
option:
{ HOST character-literal
| DATABASE character-literal
| USER character-literal
| PASSWORD character-literal
| SOCKET character-literal
| OWNER character-literal
| PORT numeric-literal }
출처 : http://m.blog.naver.com/kwoncharlie/10151416351
이제 Syntax를 이용하여 만들어 보자.
CREATE SERVER tlogin
FOREIGN DATA WRAPPER mysql
OPTIONS (
USER '접속ID',
PASSWORD '비밀번호',
HOST '접속DB IP',
PORT 3306,
#SOCKET '/usr/local/mysql3/mysql.sock',
DATABASE 'DB명');
여기서 port는 반드시 integer 로 작성
이후 Federated 테이블 생성
CREATE TABLE `federated_server` (
`nID` int(11) NOT NULL auto_increment,
`PlayerID` varchar(36) NOT NULL default '',
`Password` varchar(32) NOT NULL default '',
...
) ENGINE=FEDERATED DEFAULT CHARSET=utf8 CONNECTION='tlogin/Player'
;
확인해 보쟈.
mysql > show create table fedrated_server\G
위와 같이 Connection 에서 tlogin/Player 으로 확인 가능하며, 정상적으로 select 도 될 수 있는 것을 확인할 수 있다.
보안적인 측면에서 효과를 볼 수 있다.
결론
이리 저리 DB에서 다른 원격지 DB의 정보를 가져 왔어 데이터를 쉽고, 프로그램 개발이 아닌 DB에서 해결하고자 하는 목적으로 진행을 해 보았다.
하지만 이 생각은 어디까지나 나의 욕심이고(DBA로써??아님 개발을 싫어하는 나로써??) 무식하면 용감하다고...
용감도 아닌 그냥 무식하고 무지해서 진행한 것이다.
여러 전문 DBA 고수분들은 비록 이런 기능이 있으나 사용하지 말라고 권고를 한다.
밑에 내용들만 조금만 깊게 생각해 보면 좋은 것 만은 아니라는 것을 알 수 있다.
1. 네트워크 성능에 따라 쿼리의 성능이 좌지우지.
2. 원격지의 Table에 DDL 작업이 발생 시 이것을 참조하는 Federated 테이블 에 대해서 재 생성
- 혹시라도 federated 테이블을 모르는 경우 낭패..
3. 데이터 참조 시 해당 원격 DB 테이블을 모두 가져와야 하기에 처리량 증가 및 이에 따른 비용 증가
이 부분들은 여러 블로그를 조사하던 중에 참고한 내용을 기억나는 순으로 정리한 것이다.
가급적 사용하지 말자고 하는 것에서는 전부 이유가 있으니 가급적 사용안하는 방안으로 하고, 필요시 사용은 하되 엄격한 제한을 두고 사용하도록 해야겠다.
참조 : http://gywn.net/2014/12/let-me-introduce-federatedx/
'MySQL' 카테고리의 다른 글
[MySQL]5.6.31 source 설치 (2) (0) | 2016.06.14 |
---|---|
[MySQL]5.6.31 source 설치 (0) | 2016.06.13 |
[MySQL] Federated Engine (Table) (1) | 2016.06.09 |
[펌] [MySQL] Oracle의 그룹별 번호 매기기와 같은 기능 구현하기 (0) | 2016.06.07 |
[MySQL] show engine innodb status \G; (0) | 2016.06.02 |