MySQL 셸 유틸리티 및 Oracle GoldenGate를 사용하여 MySQL ~ MySQL에 대한 정확한 인스턴스화
정확한 인스턴스화 방법을 사용하면 원본 데이터베이스에서 대상 데이터베이스로 데이터를 처음 로드할 수 있으며 원본 데이터베이스는 응용 프로그램 갱신을 위해 온라인 상태로 유지됩니다. 이 방법을 사용하면 타겟 데이터베이스에서 중복 데이터를 사용하지 않고 Replicat에서 HANDLECOLLISIONS를 사용할 필요 없이 변경 데이터 캡처 및 전달 프로세스를 정확하게 배치할 수 있습니다.
MySQL용 Oracle GoldenGate에 대한 정확한 인스턴스화는 MySQL 셸 덤프 및 덤프 로드 유틸리티를 사용하며 MySQL 소스와 MySQL 대상 데이터베이스 사이에서만 지원됩니다.
이 방법을 사용하려면 MySQL 셸을 설치해야 합니다. 설치 단계는 다음 링크에서 확인할 수 있습니다.
<https://dev.mysql.com/doc/mysql-shell/ 8.0/en/mysql-shell-install.html>
MySQL 셸 덤프 및 덤프 로드 유틸리티에 대한 자세한 내용과 제한 사항은 다음 링크를 참조하십시오.
https://dev.mysql.com/doc/mysql-shell/8.0/en/mysql-shell-utilities-dump-instance-schema.html
https://dev.mysql.com/doc/mysql-shell/8.0/en/mysql-shell-utilities-load-dump.html
요구사항에 따라 MySQL 셸 덤프 유틸리티를 사용하여 MySQL 인스턴스, 스키마 또는 테이블을 익스포트합니다. 그런 다음 MySQL 덤프 로드 유틸리티를 사용하여 객체를 대상 데이터베이스로 로드한 다음 GoldenGate Extract 및 Replicat를 구성하여 소스에서 대상 데이터베이스로 지속적인 변경 데이터를 복제합니다.
MySQL 셸 덤프 유틸리티는 여러 내보내기 파일을 만듭니다. 이 중 하나는 @.json 파일입니다. 이 파일은 소스 데이터베이스에 Extract를 추가할 때 Extract의 위치를 결정하는 데 필요합니다.
다음은 소스 인스턴스에서 스키마 덤프를 사용한 후 대상 인스턴스로 로드한 다음 변경 데이터 복제를 위한 Oracle GoldenGate 구성을 사용하는 샘플 정확한 인스턴스화 방법입니다. 1. MySQL 셸에 연결합니다. MySQL 셸에서 지원되는 연결 옵션에 대한 자세한 내용은 다음 링크를 참조하십시오. https://dev.mysql.com/doc/mysql-shell/8.0/en/mysql-shell-connections.html
<pre class="copy"><code>mysqlsh -mysqlx -u *username* -h *hostname* -P *port*</code></pre>
-
MySQL 셸에 연결한 후 JavaScript 모드인지 확인합니다.
JS >프롬프트가 표시되어야 합니다. SQL 모드인 경우\js스위치를 사용하여 JavaScript 모드로 전환합니다.MySQL sourcehost:33060+ ssl SQL > \js -
전역 변수
local_infile이ON로 설정되었는지 확인합니다.MySQL sourcehost:33060+ ssl JS > \sql SHOW GLOBAL VARIABLES LIKE 'local_infile';local_infile변수가OFF로 설정된 경우 다음 명령을 사용하여 설정합니다.MySQL sourcehost:33060+ ssl JS > \sql SET GLOBAL local_infile = ON; -
그런 다음 다음 다음 함수 중 하나를 사용하여 엑스포트할 Instance, 스키마 또는 테이블을 엑스포트합니다.
util.dumpInstance(outputUrl[, options]) util.dumpSchemas(schemas, outputUrl[, options]) util.dumpTables(schema, tables, outputUrl[, options])이 예제에서는 hr 스키마를
~/dumps/hr-schema-src폴더에 덤프합니다.MySQL sourcehost:33060+ ssl JS >util.dumpSchemas(["hr"], "~/dumps/hr-schema-src") -
익스포트가 완료되면
util.loadDump유틸리티를 사용하여 스키마를 대상 인스턴스로 임포트합니다. 주: 대상 인스턴스가 소스가 아닌 다른 시스템에 있는 경우 익스포트된 파일을 대상 시스템으로 복사해야 합니다.
<pre class="copy"><code>MySQL targethost:33060+ ssl JS >util.loadDump("~/dumps/hr-schema-tgt", {schema: "tgt-hr"})</code></pre>
-
데이터 로드 유틸리티가 완료되면 소스 덤프 폴더에서
@.json파일을 엽니다. 이 파일은 덤프에 포함된 마지막 커밋된 트랜잭션을 포함하며 해당 트랜잭션 값을 사용하여 Extract를 구성해야 하는 변경 데이터입니다. 다음은 @.json 파일의 트랜잭션 정보의 예입니다."binlogFile": "binlog.000005", "binlogPosition": 1289, "gtidExecuted": "1174b383-3441-11e8-b90a-c80aa9429920:1-9,\n1174b383-3441-11e8-b90a-c80aa9429921:1-9" -
데이터베이스 구성에 따라
gtidExecuted값 또는binlogFile및binlogPosition값을 사용하여 소스 데이터베이스에 Extract를 추가합니다.-
소스 데이터베이스가
gtid_mode를ON로 설정하여 구성된 경우@.json파일의gtidExecuted값을 사용하여 Extract를 추가합니다.gtidExecuted값을 기반으로GTIDSET위치 지정을 사용하는 예제:ADD EXTRACT extsrc, TRANLOG GTIDSET "1174b383-3441-11e8-b90a-c80aa9429920:1-9,\n1174b383-3441-11e8-b90a-c80aa9429921:1-9" -
소스 데이터베이스의
gtid_mode가OFF로 설정된 경우 Extract를 추가할 때@.json파일의binlogFile및binlogPosition값을 사용합니다.binlogFile및binlogPosition값을 기반으로LOGNUM및LOGPOS위치 지정을 사용하는 예제입니다.ADD EXTRACT extsrc, TRANLOG, LOGNUM 5 LOGPOS 1289
-
-
마지막으로 다음 프로세스를 추가하여 Oracle GoldenGate 구성을 완료합니다.
-
Extract에 대한 해당 추적
-
필요한 경우 배포 경로
-
대상 데이터베이스로 전달할 Replicat
-
-
Oracle GoldenGate 프로세스를 시작하고 Extract 및 Replicat를 모니터링하여 올바르게 실행되고 있는지, 지연이 거의 실시간으로 감소하는지 확인합니다.