MySQL
이 항목에서는 MySQL 대상 커넥터를 사용하여 MySQL 대상에 대한 연결을 구성하는 방법을 설명합니다. MySQL은 복제 작업에서만 대상 데이터베이스로 사용할 수 있습니다. MySQL 대상에 연결하려면 먼저 데이터베이스에서 필요한 권한을 구성해야 합니다. 데이터 이동 게이트웨이를 통해 MySQL에 연결하는 경우 드라이버 설정에 설명된 대로 드라이버도 설치해야 합니다.
MySQL 커넥터 사용 시 제한 사항 및 고려 사항에 대한 자세한 내용은 제한 사항 및 고려 사항을 참조하십시오.
연결 속성 설정
커넥터를 구성하려면 다음을 수행합니다.
-
연결에서 연결 만들기를 클릭합니다.
-
MySQL 대상 커넥터를 선택한 후 다음 설정을 제공합니다.
데이터 대상
-
데이터 게이트웨이: 데이터 이동 게이트웨이 작업 시 MySQL 대상에 대한 연결을 테스트하는 데 사용할 데이터 게이트웨이를 선택합니다. 이는 데이터 소스에 액세스하는 데 사용된 것과 동일한 게이트웨이여야 합니다.
정보 메모- 이 구독 계층에서는 데이터 이동 게이트웨이가 지원되지 않으므로 이 필드는 Qlik Talend Cloud 시작 구독에서 사용할 수 없습니다.
-
또한 데이터 이동 게이트웨이 컴퓨터에 적절한 드라이버를 설치해야 합니다. 자세한 내용은 아래 드라이버 설정을 참조하십시오.
-
클라우드 공급자: 다음 중 적절하게 하나를 선택합니다.
-
없음
- 온프레미스 MySQL, MariaDB, Amazon Aurora 또는 Microsoft Azure Database for MySQL - 유연한 서버.
- 데이터 이동 게이트웨이 없이 작업하는 경우
-
Amazon RDS
Amazon RDS for MariaDB 또는 Amazon RDS for MySQL의 경우.
-
Google Cloud
MySQL용 Google Cloud SQL의 경우.
-
Microsoft Azure
MySQL용 Microsoft Azure 데이터베이스의 경우.
-
-
서버: MySQL 데이터베이스가 설치된 컴퓨터의 호스트 이름 또는 IP 주소입니다.
-
포트: 데이터베이스에 연결할 때 사용할 포트입니다. 기본값은 3306입니다.
계정 속성
사용자 이름 및 비밀번호: MySQL Server 데이터베이스에 액세스하도록 권한 부여된 사용자의 사용자 이름과 비밀번호입니다.
데이터베이스 속성
- 대상 데이터베이스 유형: 다음 중 하나를 선택합니다.
- 특정 데이터베이스: 이 옵션을 선택하면 모든 소스 스키마가 지정된 데이터베이스에 로드됩니다.
- 여러 데이터베이스: 이 옵션을 선택하면 각 소스 스키마가 해당 데이터베이스에 로드됩니다. 또한 기본적으로 모든 제어 테이블은 attrep_control이라는 새 스키마에 복제됩니다. 제어 테이블에 대한 자세한 내용은 제어 테이블을 참조하십시오.
- 최대 파일 크기(KB): MySQL 대상 데이터베이스에 로드되기 전 CSV 파일의 최대 크기(KB)를 선택하거나 입력합니다. 기본값은 32000KB입니다.
- 병렬 로드 스레드: 스레드 수를 늘리면 MySQL 대상 데이터베이스에 데이터를 로드할 때 성능이 향상될 수 있습니다. 많은 수의 스레드를 설정하면 각 스레드마다 별도의 연결이 필요하므로 데이터베이스 성능에 부정적인 영향을 미칠 수 있습니다.
내부 속성
내부 속성은 특별한 사용 사례를 위한 것이므로 대화 상자에 표시되지 않습니다. Qlik 지원 팀에서 지시한 경우에만 사용해야 합니다.
필드 오른쪽에 있는 및 버튼을 사용하여 필요에 따라 속성을 추가하거나 제거합니다.
이름
연결의 표시 이름입니다.
전제 조건
필요한 권한
커넥터 설정에 지정된 사용자에게 다음 권한을 부여해야 합니다.
- MySQL 계정 액세스
- MySQL Database의 읽기/쓰기 권한
- 복제와 관련된 각 대상 스키마에 대한 다음 권한은 다음과 같습니다.
- ALTER
- CREATE
- CREATE TEMPORARY TABLES
- DELETE
- DROP
- INSERT
- SELECT
- UPDATE
드라이버 설정
이 섹션에서는 필수 driver를 설치하는 방법에 대해 설명합니다. 이 프로세스에는 필수 driver를 자동으로 다운로드, 설치 및 구성하는 스크립트 실행이 포함됩니다. 필요에 따라 스크립트를 실행하여 driver를 업데이트하고 제거할 수도 있습니다.
설치 준비
-
Python 3.6 이상이 데이터 이동 게이트웨이 서버에 설치되어 있는지 확인합니다.
Python은 대부분의 Linux 배포에 사전 설치되어 있습니다. 다음 명령을 실행하여 시스템에 설치된 Python 버전을 확인할 수 있습니다.
python3 --version
driver 설치
driver를 다운로드하고 설치하려면:
-
데이터 이동 게이트웨이 컴퓨터에서 작업 디렉터리를 다음으로 변경합니다.
opt/qlik/gateway/movement/drivers/bin
-
다음 명령을 실행합니다.
구문:
./install mysql
driver를 다운로드할 수 없는 경우(액세스 제한 또는 기술 문제로 인해) driver를 다운로드할 위치와 데이터 이동 게이트웨이 컴퓨터에서 복사할 위치를 알려 주는 메시지가 표시됩니다. 완료했으면 install mysql 명령을 다시 실행합니다.
그렇지 않으면 driver에 대한 EULA가 표시됩니다.
-
다음 중 하나를 수행합니다.
- [Enter] 키를 반복해서 눌러 EULA를 천천히 스크롤합니다.
- 스페이스바를 반복해서 눌러 EULA를 빠르게 스크롤합니다.
- q를 눌러 라이센스 텍스트를 종료하고 EULA 동의 옵션이 표시됩니다.
-
다음 중 하나를 수행합니다.
- "y"를 입력하고 [Enter]를 눌러 EULA에 동의하고 설치를 시작합니다.
- "n"을 입력하고 [Enter] 키를 눌러 EULA를 거부하고 설치를 종료합니다.
-
"v"를 입력하고 [Enter] 키를 눌러 EULA를 다시 봅니다.
driver가 설치됩니다.
driver 업데이트
제공된 driver를 설치하기 전에 driver의 이전 버전을 제거하려면 업데이트 명령을 실행합니다.
driver를 다운로드하고 업데이트하려면:
-
데이터 이동 게이트웨이 컴퓨터에서 작업 디렉터리를 다음으로 변경합니다.
opt/qlik/gateway/movement/drivers/bin
-
다음 명령을 실행합니다.
구문:
./update mysql
driver를 다운로드할 수 없는 경우(액세스 제한 또는 기술 문제로 인해) driver를 다운로드할 위치와 데이터 이동 게이트웨이 컴퓨터에서 복사할 위치를 알려 주는 메시지가 표시됩니다. 완료했으면 update mysql 명령을 다시 실행합니다.
그렇지 않으면 driver에 대한 EULA가 표시됩니다.
-
다음 중 하나를 수행합니다.
- [Enter] 키를 반복해서 눌러 EULA를 천천히 스크롤합니다.
- 스페이스바를 반복해서 눌러 EULA를 빠르게 스크롤합니다.
- q를 눌러 라이센스 텍스트를 종료하고 EULA 동의 옵션이 표시됩니다.
-
다음 중 하나를 수행합니다.
- "y"를 입력하고 [Enter]를 눌러 EULA에 동의하고 설치를 시작합니다.
- "n"을 입력하고 [Enter] 키를 눌러 EULA를 거부하고 설치를 종료합니다.
- "v"를 입력하고 [Enter] 키를 눌러 EULA를 처음부터 검토합니다.
이전 driver가 제거되고 새 driver가 설치됩니다.
driver 제거
driver를 제거하려면 제거 명령을 실행합니다.
driver를 제거하려면:
-
이 커넥터를 사용하도록 구성된 모든 작업을 중지합니다.
-
데이터 이동 게이트웨이 컴퓨터에서 작업 디렉터리를 다음으로 변경합니다.
opt/qlik/gateway/movement/drivers/bin
-
다음 명령을 실행합니다.
구문:
./uninstall mysql
driver이 제거됩니다.
수동으로 드라이버 설치
자동 드라이버 설치가 성공적으로 완료되지 않은 경우에만 수동으로 driver 설치를 시도해야 합니다.
데이터 이동 게이트웨이이 설치된 후 mysql-connector-odbc-<version>.x86_64.rpm 드라이버를 다운로드합니다. /opt/qlik/gateway/movement/drivers/manifests/mysql.yaml의 binary-artifacts에서 지원되는 버전에 대한 직접 다운로드 링크를 찾을 수 있습니다. 다운로드가 완료되면 RPM을 데이터 이동 게이트웨이 컴퓨터에 복사합니다.
데이터 이동 게이트웨이 서버에서 셸 프롬프트를 열고 다음을 수행합니다.
-
데이터 이동 게이트웨이 서비스 중지:
sudo systemctl stop repagent
-
선택적으로 서비스가 중지되었는지 확인합니다.
sudo systemctl status repagent
상태는 다음과 같아야 합니다.
Active: inactive (dead) since <timestamp> ago
- 데이터 이동 게이트웨이 컴퓨터에 드라이버를 설치합니다.
-
작업 디렉터리를 <데이터 이동 게이트웨이 설치 디렉터리>/bin으로 변경합니다.
-
드라이버 위치를 site_arep_login.sh 파일에 복사:
echo "export LD_LIBRARY_PATH=\$LD_LIBRARY_PATH:/usr/lib64" >> site_arep_login.sh
그러면 "LD_LIBRARY_PATH"에 드라이버가 추가되고 site_arep_login.sh 파일에서 드라이버 위치가 업데이트됩니다.
-
선택적으로 드라이버 위치가 복사되었는지 확인합니다.
cat site_arep_login.sh
-
/etc/odbcinst.ini 파일에 다음 예와 같이 MySQL에 대한 항목이 포함되어 있는지 확인합니다.
[MySQL ODBC 8.0 Unicode Driver]
Driver = /usr/lib64/libmyodbc8w.so
UsageCount = 1
-
데이터 이동 게이트웨이 서비스 시작:
sudo systemctl start repagent
-
선택적으로 서비스가 시작되었는지 확인합니다.
sudo systemctl status repagent
상태는 다음과 같아야 합니다.
Active: active (running) since <timestamp> ago
제한 사항 및 고려 사항
MySQL을 복제 대상으로 사용하는 경우 다음 제한 사항이 적용됩니다.
-
MariaDB 대상 데이터베이스에 복제할 때 DATETIME 값이 0으로 설정된 경우 DATETIME을 유효한 값으로 바꾸는 변환을 정의해야 합니다. 예:
replace($datetime_column,'9999-12-31 23:59:59','2000-01-01 22:00:00')
정보 메모이 제한은 Microsoft Azure Database for MySQL에는 적용되지 않습니다. - MySQL 작동 방식으로 인해 전체 로드 작업 중 MySQL 대상에 데이터를 로드할 때 중복 키 오류가 로그에 보고되지 않습니다.
-
열 값을 기존 값으로 업데이트하면 영향을 받은 0개 행이 MySQL에서 반환됩니다(1개 행 업데이트를 수행하는 Oracle 및 Microsoft SQL Server와는 다름).
그러면 attrep_apply_exceptions Control Table에 항목이 생성되고 다음 경고가 표시됩니다.
Some changes from the source database had no impact when applied to the target database. See attrep_apply_exceptions table for details.
-
MySQL 5.7의 문제(버전 8.0에서 해결됨)로 인해 전체 로드에서 CSV 파일을 사용할 때 멀티바이트 문자를 TEXT 열에 삽입할 수 없습니다. 결과적으로 대상 종료 지점이 MySQL 5.7이고 복제된 테이블에 UTF-8 멀티바이트 문자가 포함된 TEXT 열이 포함된 경우 대상 테이블이 비어 있을 수 있습니다.
해결책:
커넥터 설정에서 loadUsingCSV 내부 매개 변수를 FALSE로 설정합니다. 이는 성능에 영향을 미칠 수 있습니다.
-
4바이트 이모티콘 문자를 복제해야 하는 경우 대상 스키마 문자 집합을 utf8mb4로 설정해야 합니다.
데이터 유형
기본 데이터 유형 정보는 보존되며 데이터 집합 보기의 기본 데이터 유형 열에 표시됩니다. 열이 표시되지 않으면 데이터 집합 보기의 열 선택기를 열고 기본 데이터 유형 열을 선택해야 합니다.
Qlik Cloud 데이터 유형 | MySQL 데이터 유형 |
---|---|
BOOL |
BOOL |
BYTES |
길이 => 1이고 길이 =< 8095인 경우: VARBINARY(길이) 길이 => 8096이고 길이 =< 65535인 경우: BLOB 길이 => 65536이고 길이 =< 16777215인 경우: MEDIUMBLOB 길이 => 16777216이고 길이 =< 2147483647인 경우: LONGBLOB |
DATE |
DATE |
TIME |
TIME |
DATETIME |
배율 => 0이고 배율 =< 6인 경우: DECIMAL(p,s) 배율 => 7이고 배율 =< 12인 경우: VARCHAR (37) |
INT1 |
TINYINT |
INT2 |
SMALLINT |
INT4 |
INTEGER |
INT8 |
BIGINT |
NUMERIC |
배율 => 0이고 배율 =< 30인 경우: DECIMAL(p,s) 배율 => 31이고 배율 =< 100인 경우: VARCHAR (45) |
REAL4 |
FLOAT |
REAL8 |
DOUBLE |
STRING |
길이 => 1이고 길이 =< 8095인 경우: VARCHAR(길이) 길이 => 8096이고 길이 =< 65535인 경우: TEXT 길이 => 65536이고 길이 =< 16777215인 경우: MEDIUMTEXT 길이 => 16777216이고 길이 =< 2147483647인 경우: LONGTEXT |
UINT1 |
UNSIGNED TINYINT |
UINT2 |
UNSIGNED SMALLINT |
UINT4 |
UNSIGNED INTEGER |
UINT8 |
UNSIGNED BIGINT |
WSTRING |
길이 => 1이고 길이 =< 8095인 경우: VARCHAR(길이) 길이 => 8096이고 길이 =< 65535인 경우: TEXT 길이 => 65536이고 길이 =< 16777215인 경우: MEDIUMTEXT 길이 => 16777216이고 길이 =< 2147483647인 경우: LONGTEXT |
BLOB |
무제한 LOB 크기 허용 옵션이 활성화된 경우:
LOB 크기 제한 옵션이 활성화된 경우:
LOB 크기 제한에 대한 자세한 내용은 Metadata를 참조하십시오. |
NCLOB |
무제한 LOB 크기 허용 옵션이 활성화된 경우:
LOB 크기 제한 옵션이 활성화된 경우:
LOB 크기 제한에 대한 자세한 내용은 Metadata를 참조하십시오. |
CLOB |
무제한 LOB 크기 허용 옵션이 활성화된 경우:
LOB 크기 제한 옵션이 활성화된 경우:
LOB 크기 제한에 대한 자세한 내용은 Metadata를 참조하십시오. |