반응형

관련 URL : https://mariadb.com/kb/en/library/installing-the-connect-storage-engine/

 

Installing the CONNECT Storage Engine

Installing the CONNECT storage engine.

mariadb.com

 

MariaDB 10.2 버전부터 connect engine 이 반영되었습니다.

 

CONNECT 스토리지 엔진은 MariaDB가 외부나 원격 데이터에 접근할 수 있습니다.

 

이 스토리지 엔진은 테이블 파티셔닝, MariaDB 가상 컬럼을 지원하며 ROWID, FILEID 및 SERVID와 같은 특수 컬럼을 정의할 수 있습니다.

 

0. CONNECT 스토리지 엔진 설치 여부

 

# mysql -uroot -p 접속

 

MariaDB [ (none) ] > show engines; 

 

 

위 출력 결과에 Engine 컬럼에 CONNECT가 보이지 않는다면 설치되어 있지 않은 상태입니다.

 

현재 이 글을 쓸때 10.3 버전의 최신은 10.3.19이나 버그가 발생하여 10.3.18로 다운 그레이드하여 사용합니ㅏㄷ.

 

1. 플러그인 패키지 설치

 

MariaDB를 설치할 때 레파지토리를 이미 구성하였다고 가정합니다.

 

패키지 설치를 위해 Centos 7 이하 yum / 이상 dnf 를 사용합니다.

 

아래 명령을 수행하면 설치를 위한 ha_connect.so 파일등이 로컬에 설치됩니다.

 

현재 이 문서는 Centos 7 로 수행합니다.

 

# yum install -y MariaDB-connect-engine

 

or

 

특정 버전 지정 설치 (DB 버전과 일치해야 합니다!)

# yum install -y MariaDB-connect-engine-10.3.18

 

 

2. 플러그인 설치

기본적으로 플러그인은 자동으로 설치되지 않습니다.

 

두가지 방법이 있습니다.

 

방법1. INSTALL SONAME  명령 수행하기

 

다음 명령을 통해 ha_connect 를 설치합니다.

 

# mysql -uroot -p

 

MariaDB [(none)]> install soname 'ha_connect';
Query OK, 0 rows affected (0.000 sec)

 

방법2. 환경 설정 파일(my.cnf / server.cnf) 에 추가

[mariadb]

...

plugin_load_add = ha_connect

 

설치후에는 다음과 같이 조회합니다.

 

MariaDB [(none)]> show engines;

 

Engine 컬럼에 CONNECT가 보이면 정상적으로 설치되어 해당 엔진을 사용할 수 있는 상태입니다.

 

3. 플러그인 제거

 

다음 명령을 통해 제거 할 수 있습니다.

 

MariaDB [(none)]> UNINSTALL SONAME 'ha_connect';

 

MariaDB [(none)]> show engines;

 

 

4. 종속성 설치

 

10.2 버전대에는 10.3 이후 버전대와 다르게 unixODBC 라이브러리를 별도로 설치했는거 같습니다.

현재 10.3 버전은 설치 시점에 종속성이 unixODBC라 같이 설치되었기 때문에 별도로 작업은 하지 않습니다.

 

별도 작업시에는 아래 명령을 통해 설치합니다.

 

# yum install unixODBC

 

 

5. 외부 테이블 연결

 

관련 정보 : https://mariadb.com/kb/en/library/connect-table-types/

 

CONNECT Table Types

 

mariadb.com

위의 내용 중 

 

CONNECT MYSQL Table Type: Accessing MySQL/MariaDB Tables

 

부분을 살펴보겠습니다.

 

A Maria 10.4 DB서버 : 192.168.10.191

B Maria 10.3 DB서버 : 192.168.10.194

 

B 서버에서 A서버 test 데이터베이스에 json_test 테이블을 Connect 하겠습니다.

 

※ 무한 루프를 피하기 위해 MYSQL 본인 자체를 참조하지 않도로 주의하세요!

 

※ Connect는 BLOC or TEXT 컬럼은 지원하지 않습니다. 

ERROR 1163 (42000): Storage engine CONNECT doesn't support BLOB/TEXT columns

 

A 서버 json_test 테이블 CREATE 구문

 

CREATE TABLE `connect_test` (
`id` INT(11) NULL DEFAULT NULL,
`DT` DATE NULL DEFAULT NULL,
`TXT` VARCHAR(1000) NULL DEFAULT NULL COLLATE 'utf8_unicode_ci'
)
COLLATE='utf8_unicode_ci'
ENGINE=InnoDB
;

아래 INSERT 문장을 통해 3줄의 데이터를 입력합니다.

INSERT INTO connect_test VALUES (1, CURDATE(), '첫번재 입력');

INSERT INTO connect_test VALUES (2, CURDATE(), '두번재 입력');

INSERT INTO connect_test VALUES (3, CURDATE(), '세번재 입력');

 

COMMIT;

 

 

B 서버에 test 데이터베이스에 new_connect_test를  아래와 같이 명령어를 입력하여 적용합니다.

CREATE TABLE test.`new_connect_test` ( 
`id` INT(11) NULL DEFAULT NULL, 
`DT` DATE NULL DEFAULT NULL, 
`TXT` VARCHAR(1000) NULL DEFAULT NULL COLLATE 'utf8_unicode_ci' 

COLLATE='utf8_unicode_ci' 
ENGINE=CONNECT

table_type=mysql

dbname=test
tabname=connect_test
connection='mysql://root:비밀번호@192.168.10.191'

table_type : Mariadb / mysql 일 때 명시

dbname : 원본(A DB 서버) 데이터베이스 명

tabname : 원본(A DB 서버) 테이블 명

 

아래 실행 결과와 같이 오류가 발생하지 않으면 정상적으로 데이터가 조회됩니다.

 

조회

 

위와 같이 연결된 상태에서 A원본 서버에 데이터를 한건 지우고 나면 B 서버에서도 동일하게 한건 지워진 상태로 조회됩니다.

 

또한 B서버에서 new_connect_test 에 데이터를 입력/삭제하여도 동일하게 원본서버에 connect_test 테이블도 변경됩니다.

 

좀더 상세한 것은 아래 링크를 참조하면 됩니다.

 

https://mariadb.com/kb/en/library/connect-mysql-table-type-accessing-mysqlmariadb-tables/

 

CONNECT MYSQL Table Type: Accessing MySQL/MariaDB Tables

Accessing a MySQL or MariaDB table or view

mariadb.com

 

반응형

'Database > MYSQL' 카테고리의 다른 글

MariaDB JSON 컬럼 및 함수들  (0) 2019.11.04
MariaDB 테이블 백업 및 복구  (0) 2019.11.01
MariaDB 우편번호 Import 하기  (0) 2019.11.01
MariaDB SHA2 512 방식으로 암호화 예제  (0) 2019.10.25
Mysql & MariaDB 튜닝 쉘  (0) 2019.08.14

+ Recent posts