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(10) DEFAULT NULL,
`day_kor` varchar(1) DEFAULT NULL,
`weekend` varchar(2) DEFAULT NULL,
`datename` varchar(30) DEFAULT NULL,
`holiday` int(1) DEFAULT 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/
'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 |
최근댓글