Mariadb Connect Engine

Database/Mysql & Mariadb / /
728x90

 

1.  Mariadb 기본 설정

1)   Connect Engine 설치


apt update

apt-get install mariadb-plugin-connect -y

 

A.     Mariadb의 외부 동이기종간 데이터 조회

B.      Mariadb Connect Engine = SQL Server Linked Server = Oracle DBLink

2)      Cnf 파일 수정

[mariadb]

plugin-load-add=ha_connect.so

 

A.     Mariadb 10.5.x의 경우 : /etc/mysql/mariadb.conf.d/connect.cnf

B.      그 이전의 경우 my.cnf

C.      파일로 수정이 불가할 경우 쿼리로 처리

mysql –u root –p

install soname ‘ha_connect’;

 

I.       예외의 경우 : 이전에 설치했다 지웠을 경우 Engine은 삭제 되었으나 Plugin이 남아 있을 수 있어 Plugin을 삭제 후 재설치

uninstall plugin if exists CONNECT;

 

D.     Engine 정보와 Plugin 정보를 조회하는 쿼리

# Engine

show engines;

# Plugin

show plugins;

# soname으로 연관된 plugin 조회

show plugins soname like '검색soname패턴%'

 

2.   ODBC 설정

1)      ODBC 프로그램

A.     ODBC 프로그램 설치

sudo apt-get update

sudo apt-get install unixodbc unixodbc-dev

 

B.      ODBC 드라이버 다운로드

I.       Mariadb 예제

sudo apt-get update

sudo apt-get install odbc-mariadb

 

II.      SQL Server 예제

curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -

 

#OS 버전에 맞는 소스 다운로드

 

#Ubuntu 16.04

curl https://packages.microsoft.com/config/ubuntu/16.04/prod.list > /etc/apt/sources.list.d/mssql-release.list

 

#Ubuntu 18.04

curl https://packages.microsoft.com/config/ubuntu/18.04/prod.list > /etc/apt/sources.list.d/mssql-release.list

 

#Ubuntu 20.04

curl https://packages.microsoft.com/config/ubuntu/20.04/prod.list > /etc/apt/sources.list.d/mssql-release.list

 

sudo apt-get update

sudo ACCEPT_EULA=Y apt-get install msodbcsql17

sudo ACCEPT_EULA=Y apt-get install mssql-tools

 

환경 변수 등록

echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bash_profile

echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc

source ~/.bashrc

 

2)      ODBC 프로그램 사용 방법

A.     driver ini 파일 생성

I.       Mariadb 연결 예제

[MariaDB ODBC 3.0 Driver]

Description = MariaDB Connector/ODBC v.3.0

Driver = /usr/lib/x86_64-linux-gnu/odbc/libmaodbc.so

 

II.      SQL Server 연결 예제

[ODBC Driver 17 for SQL Server]

Description=Microsoft ODBC Driver 17 for SQL Server

Driver=/opt/microsoft/msodbcsql17/lib64/libmsodbcsql-17.6.so.1.1

 

B.      source ini 파일 생성

I.       Mariadb 연결 예제

[MariaDB-server]

Description=MariaDB server

Driver=driver ini 파일에 등록된 server ex) [MariaDB ODBC 3.0 Driver]

SERVER=아이피

Trace = Yes

TraceFile = /tmp/trace.log

USER=계정

PASSWORD=비밀번호

DATABASE=디비명

PORT=포트명

 

II.      SQL Server 예제

[MSSQL]

Driver=ODBC Driver 17 for SQL Server

Server=아이피,포트

 

C.      driver 등록

옵션 정보 –i=등록, -d=드라이버, -f=파일

odbcinst –i –d –f  driver ini 파일 위치

 

해당 파일을 /etc/odbcinst.ini  생성되거나 드라이브가 등록된다.

 

D.     Source 등록

#옵션 정보 –i=등록, -s=server, -l=로컬 전체 –h 해당 유저만, -f=파일

odbcinst –i –s –l –f source init 파일 위치

로컬 전체로 생성했을 경우 해당 파일은 /etc/odbc.ini  생성되거나 서버가 추가

해당 유저만 생성했을 경우 해당 파일은 /etc/.odbc.ini  생성되거나 서버가 추가

 

E.      등록된 서버 드라이버 및 서버 조회

드라이버 조회

odbcinst –q –d

 

서버 조회

odbcinst –q –s

 

F.      서버 연결 테스트

# isql  이용하여 서버 연결 시도 –v 옵션이 오류 내용이 콘솔에 나오도록 

# isql DSN [UID [PWD]] [options]

Isql –v 서버명 계정 패스워드

 

Ex) isql –v MariaDB-server

Ex) isql –v MSSQL sa password

 

quit or ctrl + c  종료

 

3)      Mariadb에서 ODBC 테이블 생성

A.     테이블에 바로 생성하는 방법

I.       ODBC 등록 시 source 에 연결 정보가 담겨있을 시

가)    스키마 선언

DROP TABLE IF EXISTS odbc_test.date_info;

CREATE TABLE odbc_test.date_info (

  `locdate` varchar(10DEFAULT NULL,

  `day_kor` varchar(1DEFAULT NULL,

  `weekend` varchar(2DEFAULT NULL,

  `datename` varchar(30DEFAULT NULL,

  `holiday` int(1DEFAULT NULL

) ENGINE=CONNECT DEFAULT CHARSET=utf8mb4 CONNECTION='DSN=MariaDB-server;' TABLE_TYPE=ODBC tabname='common_data.date_info';

 

나)    원본 스키마 그대로 복사 또는 자동 대응

DROP TABLE IF EXISTS odbc_test.date_info;

CREATE TABLE odbc_test.date_info ENGINE=CONNECT DEFAULT CHARSET=utf8mb4 

CONNECTION='DSN=MariaDB-server;' TABLE_TYPE=ODBC tabname='common_data.date_info';

 

II.      ODBC 등록 시 source 에 연결 정보를 저장하지 않았을 시

가)    스키마 선언

DROP TABLE IF EXISTS odbc_test.AccountIndexTBL2;

CREATE TABLE odbc_test.AccountIndexTBL2(

  numIDX int,

  strName varchar(50),

  strBandDiv varchar(10),

  strBandDivDetail varchar(20),

  strIndustry varchar(20),

  strIndustryDetail varchar(50),

  strTotalDiv varchar(30),

  strVertical varchar(10),

  strUnitprice_1 varchar(50),

  strUnitprice_2 varchar(50)

)ENGINE=CONNECT CONNECTION='DSN=MSSQLTest;UID=team;PWD=epdlxjxla' TABLE_TYPE=ODBC 

tabname='ProgramOffice.dbo.AccountIndexTBL';

 

 

나)    원본 스키마 그대로 복사 또는 자동 대응

DROP TABLE IF EXISTS odbc_test.AccountIndexTBL;

CREATE TABLE odbc_test.AccountIndexTBL

ENGINE=CONNECT CONNECTION='DSN=MSSQLTest;UID=team;PWD=epdlxjxla' TABLE_TYPE=ODBC 

tabname='ProgramOffice.dbo.AccountIndexTBL';

 

3.   JDBC 설정

1)      JDBC 프로그램

A.     JDK 설치

apt update

apt install openjdk-8-jdk –y

 

환경 변수 셋팅

export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-amd64

 

B.      JDBC 드라이버 설치

I.       드라이버 JAR 파일을 해당 위치에 복사

가)    Oracle 예제

/usr/lib/jvm/java-1.8.0-openjdk-amd64/jre/lib/ext/ojdbc6.jar

 

II.      Mariadb Connect Engine 관련 JDBC Plugin Jar 파일 복사

/usr/lib/mysql/plugin/JavaWrappers.jar

/usr/lib/mysql/plugin/JdbcInterface.jar

 

III.    Connect Engine cnf 파일에 JVM Path Plugin, driver path 입력
(/etc/mysql/mariadb.conf.d/connect.cnf)

[mariadb]

plugin-load-add=ha_connect.so

 

connect_jvm_path=”/usr/lib/jvm/java-1.8.0-openjdk-amd64/jre/lib/amd64/server

connect_class_path=”/usr/lib/mysql/plugin:/usr/lib/jvm/java-1.8.0-openjdk-amd64/jre/lib/ext/ojdbc6.jar”

 

C.      Mariadb 재시작

2)      Mariadb에서 JDBC 테이블 생성

DROP TABLE IF EXISTS odbc_test.V_ACC_TEMPATE_RESULT3;

CREATE TABLE odbc_test.V_ACC_TEMPATE_RESULT3

(

  TEMPLATE_MAX  varchar(100)

, EXCEL_NAME    varchar(100)

, TEMPLATE_SERIAL_NUMBER    varchar(100)

, TEMPLATE_SERIAL_NAME  varchar(100)

, TEMPLATE_NO   varchar(100)

, TEMPLATE_GROUP_NUM    varchar(100)

, TEMPLATE_GENERALIZE   varchar(100)

, TEMPLATE_TEAM varchar(100)

, TEMPLATE_ACC  varchar(100)

, TEMPLATE_CONTRACT_TYPE    varchar(100)

, TEMPLATE_WORK_FORM    varchar(100)

, TEMPLATE_PERSON   varchar(100)

, TEMPLATE_TYPE_ONE varchar(100)

, TEMPLATE_TYPE_TWO varchar(100)

, TEMPLATE_DEFINE   varchar(100)

, TEMPLATE_DATE varchar(100)

, TEMPLATE_VALUE    varchar(100)

)ENGINE=CONNECT CONNECTION='jdbc:oracle:thin:계정/패스워드@아이피:포트:SID' TABLE_TYPE=JDBC tabname=데이터베이스명.테이블명';

 

4.   주의점 및 참조

1)      주의점

A.     SQL Server 같은 경우 접속 URL 외에 다른 정보를 저장하지 못하도록 하기 때문에 무조건 연결 정보를 테이블이나 서버 생성 시 입력해줘야 한다.

B.      JDBC 연결 시 스키마 자동 생성이 되지 않기 때문에 스키마는 항상 선언해 줘야 한다.

C.      환경 변수 설정 시 LOCAL 선언 및 USER 선언을 주의해서 선언해야 한다.

로컬 유저
/etc/bash.bashrc ~/.bashrc or ~/.bash_profile
/etc/profile ~/.profile

D.     환경 변수를 설정했는데도 lib를 인식하지 못할 때 다음과 같은 절차로 확인

가)    해당 lib가 있는 폴더로 이동

나)    ldd lib명 으로 확인하여 not found 가 있는지 확인

ex) sudo -u mysql ldd lib

다)    ldconfig not found 갱신

라)    해당 사용 계정으로 이동(ex> sudo su mysql)

마)    ~ 다 를 해당 계정 내에서 확인 및 처리

바)    not found가 갱신되지 않는다면 환경 변수를 제대로 설정하지 못한 것이므로 환경 변수를 다시 확인

2)      참조

A.     Mariadb Connect Engine 공식 사이트
https://mariadb.com/kb/en/about-mariadb-connector-odbc/

B.      Mariadb Connect Engine 테이블 정보 공식 사이트
https://mariadb.com/kb/en/connect-odbc-table-type-accessing-tables-from-another-dbms/

C.      Mariadb 설치 간단 가이드
https://bamdule.tistory.com/59

D.     Mariadb Connect Engine JDBC 가이드1
https://levelup.gitconnected.com/install-mariadb-connect-engine-on-docker-with-dremio-vds-jdbc-connect-table-support-c969f7c97c90

E.      Mariadb Connect Engine JDBC 가이드2
https://osskorea.wordpress.com/2018/03/30/mariadb-connect-engine-jdbc-%EC%97%B0%EA%B2%B0-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0/

F.      JDBC 오라클 Thin 연결 가이드
https://developer-joe.tistory.com/82

G.     SQL Server ODBC 설치 공식 사이트
https://docs.microsoft.com/ko-kr/sql/connect/odbc/linux-mac/installing-the-microsoft-odbc-driver-for-sql-server?view=sql-server-ver15#ubuntu17

H.     오라클 ODBC 예제1 – odbc는 한글 깨짐이 발생됨
https://hobogi.tistory.com/entry/MariaDB-Storage-Engine-Connect

I.       오라클 ODBC 예제2 – odbc는 한글 깨짐이 발생됨
https://serge.frezefond.com/2013/12/mariadb-connect-storage-engine-access-to-oracle-11gr2/

 

728x90

'Database > Mysql & Mariadb' 카테고리의 다른 글

MySQL 8 계정 이슈  (0) 2021.10.06
Mysql JDBC Connector TimeZone 에러  (0) 2021.10.05
Visual code on Mysql (Mariadb)  (0) 2021.07.02
재귀 쿼리를 이용한 전년도 같은 주차 조회  (0) 2021.06.02
MariaDB mha 이중화  (0) 2021.04.13
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기