본문 바로가기
개발 관련

mysql(mariadb) dblink 방법

by 조이플워니 2021. 8. 10.

사내 DB 서버는 보안상 외부에 공개를 안해놓은 상태인데.. 

특정 데이터를 급 외부 서비스인 Google DataStudio 연결 할 필요가 생겨서 테이블을 옮길까.. 하다가 

그냥 dblink 로 걸어버리면 동기화문제도 해결될것같아 진행해봤다 ㅋ

우선  - 데이터 원본 DB서버(DB-1) 와 외부 서비스 용 DB(DB-2) 라고 해두고...  진행 순서는 아래와 같다 

1> DB-1 에 외부로 링크 걸 테이블 을 확인하고
2> 해당 database 에만 접속 가능한 연결용 추가 계정을 만든다(권한은 최대한 제어하는것을 추천)
3> DB-2 에 커넥션 엔진 확인 ( show engines; )

mysql maiadb engine 목록


4> 우리 서버에는 federated 가 설치 되어있지만, 없으신 분들은 아래와 같이 DB-2 에 설치 
(DB-1에는 설치 안해도 됨)
INSTALL PLUGIN FEDERATED SONAME "ha_federated.so";
5> 설치 후 연결 고고(DB-2 에서 실행)

CREATE TABLE '테이블명'
(
  DB-1 에 있는 테이블과 동일한 칼럼 세팅
)
ENGINE=FEDERATED
CONNECTION='mysql://계정:비번@서버(DB-1):3306/데이터베이스명/테이블명';

* 테이블명 : DB-1 에 있는 테이블명과 같아도 되고 달라도 되지만 creat 이기 때문에 DB-2내에 동일 명이 있으면 안됨
* DB-1 에 있는 테이블과 동일한 칼럼 세팅 : 테이블 명은 달라도 되지만, 칼럼 세팅은 동일해야 함
* 계정:비번 : 위 2>에서 생성한 계정 정보
* 데이터베이스명/테이블명 : DB-1 의 DB명 & 테이블명

요럼 아주아주 잘 되고, 데이터도 빠르게 잘나옴

첨언> 나는 첨 연결하고, 위 테이블 dblink 시 잘 생성이 되었으나 조회가 안되어 확인해보니 커넥션 에러가 있었다
>> 110 “Connection timed out” // 확인해보니 방화벽 때문에 커넥션이 안되는 문제였다. ㅋㅋㅋㅋ

 

댓글