트랜잭션 로그 설정 및 요구사항
필요한 바이너리 로깅 설정 및 데이터베이스 서버 변수를 포함하여 Oracle GoldenGate용 MySQL 데이터베이스 및 지원되는 변형을 준비하는 방법을 알아봅니다.
로깅 속성 구성
Oracle GoldenGate는 MySQL 바이너리 로그를 사용하여 소스 트랜잭션을 복제하는 데 필요한 데이터를 저장합니다. Oracle GoldenGate 처리를 시작하기 전에 소스 시스템의 바이너리 로그를 제대로 구성해야 합니다.
이 섹션에서는 Oracle GoldenGate for MySQL에 적용되는 다음 바이너리 로그 시작 옵션 및 시스템 변수를 다룹니다.
| 로깅 옵션 | 값 | 수행할 작업 | 요구 사항 |
|---|---|---|---|
binlog_annotate_row_events |
ON, OFF |
이진 로그에 이러한 이벤트를 기록하도록 기본 서버에 알리는 시스템 변수입니다. | MariaDB 및 Oracle GoldenGate 23.8 이전 버전에 필요합니다. OFF |
binlog_expire_logs_seconds |
0 - 4294967295 |
지원되는 경우 이 시스템 변수는 이진 로그 만료 기간을 초 단위로 설정합니다. | 권장 값은 >=86400입니다. |
binlog_format |
ROW, STATEMENT, MIXED |
이진 로깅 형식을 설정하는 시스템 변수입니다. | MySQL가 소스 데이터베이스로 사용되는 경우 필요합니다.
|
binlog retention hours |
1 - 168 |
지원되는 경우 이 시스템 변수는 이진 로그 만료 기간을 시간 단위로 설정합니다. | 권장 값은 >=24입니다. |
binlog_row_image |
FULL, MINIMAL, NOBLOB |
이진 로그에 다른 레벨의 열 로깅을 설정하는 시스템 변수입니다. | MySQL가 소스 데이터베이스로 사용되는 경우 필요합니다.
|
binlog_row_metadata |
FULL, MINIMAL |
행 기반 로깅을 위해 이진 로그에 추가된 메타데이터의 양을 구성하는 시스템 변수입니다. | MySQL 8.0 이상을 DDL 지원을 위한 소스 데이터베이스로 사용하는 경우 필요합니다.
|
event_scheduler |
ON, OFF |
Heartbeat 업데이트 및 비우기 작업 생성을 허용하는 시스템 변수입니다. | Oracle GoldenGate Heartbeat 기능을 구현하는 경우 필요합니다.
|
log_bin |
ON, OFF |
이진 로깅의 상태를 표시하는 시스템 변수입니다. | MySQL가 소스 데이터베이스로 사용되는 경우 필요합니다. 아직 ON가 아닌 경우 log-bin=binlog.와 같은 이름을 지정하여 설정합니다. |
log_replica_updates |
ON, OFF |
기본 서버에서 수신될 때 보조 서버의 고유 바이너리 로그에 업데이트를 기록하는 시스템 변수입니다. | MySQL가 소스 데이터베이스로 사용되고 복제 서버에서 캡처하도록 구성된 경우 필요합니다.
|
server_id |
0 - 4294967295 |
바이너리 로깅이 사용으로 설정된 경우 시스템 변수를 지정해야 합니다. 복제 기본 복제본 및 각 복제 복제본의 경우 값이 0보다 크고 고유한지 확인합니다. | MySQL가 소스 데이터베이스로 사용되는 경우 필요합니다.
|
데이터베이스 레벨 로깅 확인
MySQL 데이터베이스에 대해 Oracle GoldenGate Capture를 지원하는 데 필요한 데이터베이스의 현재 이진 로깅 설정을 확인하려면 다음 질의를 수행합니다. 설정을 변경해야 하는 경우 데이터베이스 레벨 로깅 사용의 지침을 따릅니다.
-
root 또는 지정된 데이터베이스 서비스 관리자 계정으로 MySQL에 로그인합니다.
[root@srcdbserver ~]$ mysql -uroot -p -
다음 명령을 실행하여 데이터베이스가 이진 로깅에 대해 활성화되었는지 확인합니다. 결과가 ON이면 데이터베이스 이진 로그가 활성화됩니다.
show variables like 'log_bin'; -
다음 명령을 실행하여 데이터베이스가 올바른 이진 로그 설정 및
server_id로 사용으로 설정되었는지 확인합니다.binlog_format값이ROW로 설정되고,binlog_row_image및binlog_row_metadata가FULL로 설정되고,server_id변수가>=1로 설정되고, 기본 및 모든 복제본에 대해 고유한지 확인합니다.show variables like 'binlog_%'; show variables like 'server_id'; -
DDL 지원 및 MariaDB 지원과 같은 요구사항에 따라 로깅 속성 구성에 나열된 다른 옵션에 대해 변수를 질의하는 프로세스를 반복합니다.
데이터베이스 레벨 로깅 사용
필요한 경우 다음 단계를 수행하여 MySQL 데이터베이스에 대해 Oracle GoldenGate Capture를 지원하는 데 필요한 데이터베이스 바이너리 로깅 설정을 사용으로 설정합니다. Verify Database-Level Logging의 결과에 따라 사용 또는 변경해야 하는 설정만 수정합니다.
-
MySQL에 대해 Oracle GoldenGate 캡처를 지원하는 데 필요한 시스템 변수를 사용으로 설정하려면 MySQL 구성 파일, Linux의 경우
my.cnf또는 Windows의 경우my.ini를 편집합니다.[root@srcdbserver ~]$ vi /etc/my.cnf -
이진 로그를 사용으로 설정하려면 기본 설정의 log-bin 값을 사용하여 다음과 같이 구성 파일에 항목을 추가합니다.
log-bin=*binlog* -
올바른 이진 로깅 형식 및
server_id변수를 설정하려면 다음을 설정합니다.binlog-format=ROW binlog-row-image=FULL #For MySQL 8.0 and above, for DDL support binlog-row-metadata=FULL #Set to value > 0 and <= 4294967295 server-id=1 -
DDL 지원 및 MariaDB 지원과 같은 요구사항에 따라 로깅 속성 구성에 나열된 다른 옵션에 대한 변수를 추가합니다.
-
파일을 저장하고 닫습니다.
-
설정을 적용하려면 데이터베이스를 재시작합니다.
[root@srcdbserver ~]$ service mysqld restart -
다음 명령을 사용하여 데이터베이스 서비스의 상태를 확인합니다.
[root@srcdbserver ~]$ service mysqld status
Amazon 및 Azure MySQL Database 서비스에 대한 시스템 변수 수정
Oracle GoldenGate Extract 및 하트비트 기능을 위해 Amazon 및 Azure MySQL 데이터베이스를 구성하려면 필요한 값으로 설정되지 않은 경우 매개변수 그룹, 데이터베이스 생성 또는 수정 또는 서버 매개변수 설정을 사용하여 필요한 변경을 수행해야 합니다. 다음 지침에 따라 이러한 시스템 변수를 수정합니다.
-
Amazon에서 바이너리 로깅을 사용으로 설정하려면 데이터베이스 백업을 사용으로 설정해야 합니다. 그렇지 않으면
log_bin변수가OFF로 보고되고 Extract가 비정상 종료되어binlog파일 목록을 검색할 수 없다고 보고됩니다.데이터베이스 생성 시 또는 백업 연대가 포함되도록 기존 데이터베이스를 수정하여 백업을 사용으로 설정합니다.
-
Amazon MySQL 데이터베이스의 경우
binglog_format변수를ROW로,binlog_row_image변수를FULL로, Oracle GoldenGate 하트비트 기능을 구현하는 경우event_scheduler를ON로 설정하고, DDL 캡처 지원을 사용으로 설정하는 경우binlog_row_metadata변수를FULL로 설정합니다.Amazon에서 제공하는 지침에 따라 기존 매개변수 그룹을 생성하거나 편집하여 이를 변경합니다.
https://aws.amazon.com/premiumsupport/knowledge-center/enable-binary-logging-aurora/
-
Azure MySQL 데이터베이스의 경우
binlog_format변수를ROW로,binlog_row_image변수를FULL로 설정합니다. Microsoft에서 제공하는 지침에 따라 데이터베이스 인스턴스에 대한 서버 매개변수 설정을 수정합니다.https://docs.microsoft.com/en-us/azure/mysql/howto-server-parameters
데이터 가용성 보장
Extract를 정지하거나 계획되지 않은 운용중단이 있을 경우 Extract가 해당 체크포인트에서 다시 시작될 수 있도록 충분한 바이너리 로그 데이터를 유지합니다. Extract는 커밋되지 않은 가장 오래된 작업 단위의 시작과 그 이후의 모든 이진 로그를 포함하는 이진 로그에 액세스할 수 있어야 합니다. 권장되는 보존 기간은 활성 및 아카이브된 정보를 포함하여 최소 24시간 동안의 트랜잭션 데이터입니다. 데이터 볼륨 및 비즈니스 요구 사항에 따라 최적의 보존 시간을 결정하기 위해 몇 가지 테스트를 수행해야 할 수 있습니다.
처리 중 Extract에 필요한 데이터가 활성 또는 백업 로그에 보존되지 않은 경우 다음 해결 조치 중 하나가 필요할 수 있습니다.
-
Extract를 변경하여 바이너리 로그 데이터를 사용할 수 있는 이후 시점부터 캡처하고 대상에서 가능한 데이터 손실을 허용합니다.
-
소스 및 대상 테이블을 재동기화한 다음 Oracle GoldenGate 환경을 다시 시작합니다.
바이너리 로그 데이터 보존은 MySQL 데이터베이스 또는 변형에 따라 다른 측정 단위로 늘릴 수 있습니다.
-
MySQL Server, MySQL Heatwave, Azure Database for MySQL 및 MariaDB의 경우 보존 기간을 조정하기 위해 변수
binlog_expire_logs_seconds를 늘릴 수 있습니다. -
MySQL용 Amazon Aurora 및 MySQL용 Amazon RDS의 경우 기본 바이너리 로그 보존 설정은
NULL입니다. 즉, Aurora의 경우 로그가 지연 비워지고 MySQL용 RDS의 경우 로그가 보존되지 않습니다. 다음 절차에 따라 매개변수binlog보존 시간을 설정할 수 있습니다. 예:call mysql.rds_set_configuration('binlog retention hours', 24);
MySQL 복제 복제본에 대해 캡처
MySQL 복제 복제본에서 캡처하도록 Oracle GoldenGate를 구성할 수 있습니다.
일반적으로 복제본에 적용된 트랜잭션은 릴레이 로그에 기록되고 복제본의 binlog에는 기록되지 않습니다. 복제본이 기본 데이터베이스에서 수신한 트랜잭션을 binlog에 쓰려면 my.cnf에서 log_replica_updates 옵션을 1로 사용하여 Oracle GoldenGate에 대한 다른 이진 로깅 매개변수와 함께 복제 복제본을 시작해야 합니다. 기본 트랜잭션이 복제본의 binlog 에 있으면 복제본에서 일반 Oracle GoldenGate Extract를 설정하여 캡처를 시작할 수 있습니다.