써먹는 웹개발

[Mariadb(Mysql)] federated (oracle dblink 같은 기능) - 다른 서버간 DB 연결 본문

웹개발/Database

[Mariadb(Mysql)] federated (oracle dblink 같은 기능) - 다른 서버간 DB 연결

kmhan 2023. 1. 6. 14:16


728x90
반응형

1. federated를 사용하는 이유 : 다른 서버간의 데이터 조합이 필요한 경우

 ex) 다른 서버간의 join

 

2. 방법

 0) 2가지 DB

  ORIGIN_DB : 원본 데이터가 있는 DB

  NEW_DB : 원본 데이터가 필요한 DB

1) NEW_DB에 root 접속 후에 SHOW ENGINES; 명령어로 FEDERATED가 있는지 확인한다.

 - 있으면 3번으로

 - 없으면 설치 (명령어 : install plugin federated soname 'ha_federated.so')

2) 설치했다면 mariadb 재시작 후, 다시 show engines로 확인

 - Support 컬럼이 'YES'로 바뀌었는지 확인

3. 사용법

CREATE TABLE `db_test1` (
  `a1` varchar(10) DEFAULT NULL,
  `a2` varchar(10) DEFAULT NULL,
  `a3` varchar(11) DEFAULT NULL
) ENGINE=FEDERATED DEFAULT CHARSET=utf8

CONNECTION='mysql://접속ID:패스워드@도메인(또는 IP):포트/datebase명(ex:DB1)/테이블명(ex:db_test1)';

※ 주의사항

 1. 컬럼명을 똑같이 맞춰줘야 한다.

 2. 원본 데이터 db에 스키마가 바뀌면, federated 테이블을 drop하고 다시 생성해야 한다.

  -> federated 테이블은 스키마 변경 불가. 드랍하고 다시 create해야함

 3. 패스워드에 '@'(골뱅이)가 들어가면 에러나므로 패스워드를 변경해야함

 

  장점)

1. 원본 데이터 DB- 원격 데이터 DB 간에 delay가 없다.

2. 원격 데이터DB 에 select,insert,delete,update 모두 가능하다. 바로바로 원본 db에 적용됨

3. 원격 데이터 DB를 drop 해도, 원본DB는 drop이 안된다. 한마디로 DB에 DDL은 불가능 하고, DML은 가능하다(장점이자 단점이다)

 

출처 : https://jang8584.tistory.com/245

728x90
반응형


Comments