다중 소스 복제 관리
다음 저장 프로시저는 RDS for MySQL의 다중 소스 복제본에서 복제 채널을 설정하고 관리합니다. 자세한 내용은 Amazon RDS for MySQL용 다중 소스 복제 구성 단원을 참조하십시오.
이러한 저장 프로시저는 다음 엔진 버전을 실행하는 RDS for MySQL DB 인스턴스에서만 사용할 수 있습니다.
8.0.35 이상 마이너 버전
5.7.44 이상 마이너 버전
참고
이 설명서에서는 소스 DB 인스턴스를 RDS for MySQL DB 인스턴스라고 하지만, 이러한 프로시저는 Amazon RDS 외부에서 실행되는 MySQL 인스턴스에도 적용됩니다.
주제
- mysql.rds_next_source_log_for_channel
- mysql.rds_reset_external_source_for_channel
- mysql.rds_set_external_source_for_channel
- mysql.rds_set_external_source_with_auto_position_for_channel
- mysql.rds_set_external_source_with_delay_for_channel
- mysql.rds_set_source_auto_position_for_channel
- mysql.rds_set_source_delay_for_channel
- mysql.rds_skip_repl_error_for_channel
- mysql.rds_start_replication_for_channel
- mysql.rds_start_replication_until_for_channel
- mysql.rds_start_replication_until_gtid_for_channel
- mysql.rds_stop_replication_for_channel
mysql.rds_next_source_log_for_channel
소스 DB 인스턴스 로그 위치를 채널에 대한 소스 DB 인스턴스에서 다음 이진 로그의 시작으로 변경합니다. 다중 소스 복제본에 대한 복제 I/O 오류 1236을 수신 중일 경우에만 이 프로시저를 사용하세요.
구문
CALL mysql.rds_next_source_log_for_channel(
curr_master_log
,channel_name
);
파라미터
-
curr_master_log
-
현재 소스 로그 파일의 인덱스입니다. 예를 들어, 현재 파일의 이름이
mysql-bin-changelog.012345
이면 인덱스는 12345입니다. 현재 소스 로그 파일 이름을 확인하려면SHOW REPLICA STATUS FOR CHANNEL '
명령을 실행하고channel_name
'Source_Log_File
필드를 봅니다.참고
이전 버전의 MySQL에는
SHOW SLAVE STATUS
대신SHOW REPLICA STATUS
가 사용되었습니다. 8.0.23 이전 MySQL 버전을 사용하는 경우SHOW SLAVE STATUS
를 사용합니다. -
channel_name
-
다중 소스 복제본의 복제 채널 이름입니다. 각 복제 채널은 특정 호스트 및 포트에서 실행되는 단일 소스 RDS for MySQL DB 인스턴스로부터 바이너리 로그 이벤트를 수신합니다.
사용 노트
마스터 사용자는 mysql.rds_next_source_log_for_channel
프로시저를 실행해야 합니다. 예를 들어 IO_Thread 오류가 있는 경우 이 프로시저를 사용하여 현재 바이너리 로그 파일의 모든 이벤트를 건너뛰고 channel_name
에서 지정된 채널의 다음 바이너리 로그 파일에서 복제를 재개할 수 있습니다.
예
다중 소스 복제본의 채널에서 복제가 실패했다고 가정해 보겠습니다. 다중 소스 복제본에서 SHOW REPLICA STATUS FOR CHANNEL 'channel_1'\G
를 실행하면 다음 결과가 반환됩니다.
mysql> SHOW REPLICA STATUS FOR CHANNEL 'channel_1'\G *************************** 1. row *************************** Replica_IO_State: Waiting for source to send event Source_Host: myhost.XXXXXXXXXXXXXXX.rr-rrrr-1.rds.amazonaws.com Source_User: ReplicationUser Source_Port: 3306 Connect_Retry: 60 Source_Log_File: mysql-bin-changelog.012345 Read_Source_Log_Pos: 1219393 Relay_Log_File: replica-relay-bin.000003 Relay_Log_Pos: 30223388 Relay_Source_Log_File: mysql-bin-changelog.012345 Replica_IO_Running: No Replica_SQL_Running: Yes Replicate_Do_DB:. . . Last_IO_Errno: 1236 Last_IO_Error: Got fatal error 1236 from master when reading data from binary log: 'Client requested master to start replication from impossible position; the first event 'mysql-bin-changelog.013406' at 1219393, the last event read from '/rdsdbdata/log/binlog/mysql-bin-changelog.012345' at 4, the last byte read from '/rdsdbdata/log/binlog/mysql-bin-changelog.012345' at 4.' Last_SQL_Errno: 0 Last_SQL_Error: . . Channel_name: channel_1 . . -- Some fields are omitted in this example output
Last_IO_Errno
필드가 인스턴스에서 I/O 오류 1236을 수신하고 있음을 보여 줍니다. Source_Log_File
필드는 파일 이름이 mysql-bin-changelog.012345
임을 보여 줍니다. 이는 로그 파일 인덱스가 12345
임을 의미합니다. 오류를 해결하려면 다음 파라미터와 함께 mysql.rds_next_source_log_for_channel
을 직접 호출합니다.
CALL mysql.rds_next_source_log_for_channel(12345,'channel_1');
참고
이전 버전의 MySQL에는 SHOW SLAVE STATUS
대신 SHOW REPLICA STATUS
가 사용되었습니다. 8.0.23 이전 MySQL 버전을 사용하는 경우 SHOW SLAVE STATUS
를 사용합니다.
mysql.rds_reset_external_source_for_channel
지정된 채널에서 복제 프로세스를 중지하고 다중 소스 복제본에서 채널 및 관련 구성을 제거합니다.
중요
이 프로시저를 실행하려면 autocommit
를 활성화해야 합니다. 활성화하려면 autocommit
파라미터를 1
로 설정합니다. 파라미터 수정에 대한 자세한 정보는 Amazon RDS에서 DB 파라미터 그룹의 파라미터 수정 단원을 참조하십시오.
구문
CALL mysql.rds_reset_external_source_for_channel (
channel_name
);
파라미터
-
channel_name
-
다중 소스 복제본의 복제 채널 이름입니다. 각 복제 채널은 특정 호스트 및 포트에서 실행되는 단일 소스 RDS for MySQL DB 인스턴스로부터 바이너리 로그 이벤트를 수신합니다.
사용 노트
마스터 사용자는 mysql.rds_reset_external_source_for_channel
프로시저를 실행해야 합니다. 이 프로시저를 수행하면 제거되는 채널에 속하는 모든 릴레이 로그가 삭제됩니다.
mysql.rds_set_external_source_for_channel
RDS for MySQL DB 인스턴스의 복제 채널을 구성하여 다른 RDS for MySQL DB 인스턴스의 데이터를 복제합니다.
중요
이 프로시저를 실행하려면 autocommit
를 활성화해야 합니다. 활성화하려면 autocommit
파라미터를 1
로 설정합니다. 파라미터 수정에 대한 자세한 정보는 Amazon RDS에서 DB 파라미터 그룹의 파라미터 수정 단원을 참조하십시오.
참고
대신 mysql.rds_set_external_source_with_delay_for_channel 저장 프로시저를 사용하여 이 채널에 지연 복제를 구성할 수 있습니다.
구문
CALL mysql.rds_set_external_source_for_channel (
host_name
,host_port
,replication_user_name
,replication_user_password
,mysql_binary_log_file_name
,mysql_binary_log_file_location
,ssl_encryption
,channel_name
);
파라미터
-
host_name
-
RDS for MySQL 소스 DB 인스턴스의 호스트 이름 또는 IP 주소입니다.
-
host_port
-
RDS for MySQL 소스 DB 인스턴스에서 사용한 포트입니다. 네트워크 구성에 포트 번호를 변환하는 SSH 포트 복제가 포함되는 경우 SSH(Secure Shell)에 의해 공개되는 포트 이름을 지정하세요.
-
replication_user_name
-
RDS for MySQL 소스 DB 인스턴스에서
REPLICATION CLIENT
및REPLICATION SLAVE
권한을 보유한 사용자의 ID입니다. 소스 인스턴스를 사용한 복제에만 사용되는 계정을 제공하는 것이 좋습니다. -
replication_user_password
-
replication_user_name
에 지정된 사용자 ID의 암호입니다. -
mysql_binary_log_file_name
-
복제 정보를 포함하는 소스 DB 인스턴스의 이진 로그 이름입니다.
-
mysql_binary_log_file_location
-
복제 시 복제 정보를 읽기 시작하는
mysql_binary_log_file_name
이진수 로그 내 위치입니다.소스 DB 인스턴스의
SHOW MASTER STATUS
를 실행하여 binlog 파일 이름 및 위치를 확인할 수 있습니다. -
ssl_encryption
-
복제 연결에 보안 소켓 계층(SSL) 암호화를 사용할지 여부를 지정하는 값입니다. 1은 SSL 암호화 사용, 0은 암호화 사용 안 함입니다. 기본값은 0입니다.
참고
MASTER_SSL_VERIFY_SERVER_CERT
옵션은 지원되지 않습니다. 이 옵션은 0으로 설정되어 있는데, 이는 연결이 암호화되었지만 인증서는 확인되지 않았음을 의미합니다. -
channel_name
-
복제 채널의 이름입니다. 각 복제 채널은 특정 호스트 및 포트에서 실행되는 단일 소스 RDS for MySQL DB 인스턴스로부터 바이너리 로그 이벤트를 수신합니다.
사용 노트
마스터 사용자는 mysql.rds_set_external_source_for_channel
프로시저를 실행해야 합니다. 이 프로시저는 복제 채널을 생성할 대상 RDS for MySQL DB 인스턴스에서 실행해야 합니다.
mysql.rds_set_external_source_for_channel
을 실행하기 전에 다중 소스 복제본에 필요한 권한을 가진 소스 DB 인스턴스의 복제 사용자를 구성하세요. 다중 소스 복제본을 소스 DB 인스턴스에 연결하려면 소스 DB 인스턴스에 대해 REPLICATION CLIENT
및 REPLICATION SLAVE
권한을 가진 복제 사용자의 replication_user_name
값과 replication_user_password
값을 지정해야 합니다.
소스 DB 인스턴스에서 복제 사용자를 구성하려면
선택한 MySQL 클라이언트를 사용하여 소스 DB 인스턴스에 연결하고 복제에 사용될 사용자 계정을 생성합니다. 다음은 예입니다.
중요
보안 모범 사례로 다음 예제에 표시된 자리 표시자 값 이외의 암호를 지정하는 것이 좋습니다.
MySQL 8.0
CREATE USER 'repl_user'@'example.com' IDENTIFIED WITH mysql_native_password BY '
password
';MySQL 5.7
CREATE USER 'repl_user'@'example.com' IDENTIFIED BY '
password
';소스 DB 인스턴스의 경우 복제 사용자에게
REPLICATION CLIENT
및REPLICATION SLAVE
권한을 부여합니다. 다음 예제에서는 도메인의 'repl_user' 사용자에게 모든 데이터베이스에 대한REPLICATION CLIENT
및REPLICATION SLAVE
권한을 부여합니다.GRANT REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO 'repl_user'@'example.com';
암호화된 복제를 사용하려면 SSL 연결을 사용하도록 소스 DB 인스턴스를 구성합니다.
mysql.rds_set_external_source_for_channel
을 직접 호출하여 이 복제 채널을 구성한 후 mysql.rds_start_replication_for_channel을 직접 호출하여 복제 프로세스를 시작할 수 있습니다. mysql.rds_reset_external_source_for_channel을 직접 호출하여 채널에서 복제를 중지하고 복제본에서 채널 구성을 제거할 수 있습니다.
mysql.rds_set_external_source_for_channel
을 직접 호출하면 Amazon RDS는 채널별 세부 정보 없이 mysql.rds_history
테이블에 시간, 사용자 및 set channel source
의 작업을 기록하고 mysql.rds_replication_status
테이블에는 채널 이름과 함께 이들 정보를 기록합니다. 이 정보는 내부 사용 및 모니터링 목적으로만 기록됩니다. 감사 목적으로 전체 프로시저 직접 호출을 기록하려면 애플리케이션의 특정 요구 사항에 따라 감사 로그 또는 일반 로그를 활성화하는 것이 좋습니다.
예시
RDS for MySQL DB 인스턴스에서 실행할 때 다음 예제는 이 DB 인스턴스에 channel_1
이름이 지정된 복제 채널을 구성하여 sourcedb.example.com
호스트와 3306
포트로 지정된 소스의 데이터를 복제합니다.
call mysql.rds_set_external_source_for_channel( 'sourcedb.example.com', 3306, 'repl_user', '
password
', 'mysql-bin-changelog.0777', 120, 0, 'channel_1');
mysql.rds_set_external_source_with_auto_position_for_channel
RDS for MySQL DB 인스턴스에서 복제 채널을 구성하고 복제 지연 옵션을 설정합니다. 전역 트랜잭션 식별자(GTID)를 기반으로 한 복제입니다.
중요
이 프로시저를 실행하려면 autocommit
를 활성화해야 합니다. 활성화하려면 autocommit
파라미터를 1
로 설정합니다. 파라미터 수정에 대한 자세한 정보는 Amazon RDS에서 DB 파라미터 그룹의 파라미터 수정 단원을 참조하십시오.
구문
CALL mysql.rds_set_external_source_with_auto_position_for_channel (
host_name
,host_port
,replication_user_name
,replication_user_password
,ssl_encryption
,delay
,channel_name
);
파라미터
-
host_name
-
RDS for MySQL 소스 DB 인스턴스의 호스트 이름 또는 IP 주소입니다.
-
host_port
-
RDS for MySQL 소스 DB 인스턴스에서 사용한 포트입니다. 네트워크 구성에 포트 번호를 변환하는 SSH 포트 복제가 포함되는 경우 SSH(Secure Shell)에 의해 공개되는 포트 이름을 지정하세요.
-
replication_user_name
-
RDS for MySQL 소스 DB 인스턴스에서
REPLICATION CLIENT
및REPLICATION SLAVE
권한을 보유한 사용자의 ID입니다. 소스 인스턴스를 사용한 복제에만 사용되는 계정을 제공하는 것이 좋습니다. -
replication_user_password
-
replication_user_name
에 지정된 사용자 ID의 암호입니다. -
ssl_encryption
-
복제 연결에 보안 소켓 계층(SSL) 암호화를 사용할지 여부를 지정하는 값입니다. 1은 SSL 암호화 사용, 0은 암호화 사용 안 함입니다. 기본값은 0입니다.
참고
MASTER_SSL_VERIFY_SERVER_CERT
옵션은 지원되지 않습니다. 이 옵션은 0으로 설정되어 있는데, 이는 연결이 암호화되었지만 인증서는 확인되지 않았음을 의미합니다. -
delay
-
소스 DB 인스턴스에서 복제를 지연할 최소 시간(초)입니다.
이 파라미터에 대한 제한은 1일(86,400초)입니다.
-
channel_name
-
복제 채널의 이름입니다. 각 복제 채널은 특정 호스트 및 포트에서 실행되는 단일 소스 RDS for MySQL DB 인스턴스로부터 바이너리 로그 이벤트를 수신합니다.
사용 노트
마스터 사용자는 mysql.rds_set_external_source_with_auto_position_for_channel
프로시저를 실행해야 합니다. 이 프로시저는 복제 채널을 생성할 대상 RDS for MySQL DB 인스턴스에서 실행해야 합니다.
rds_set_external_source_with_auto_position_for_channel
을 실행하기 전에 다중 소스 복제본에 필요한 권한을 가진 소스 DB 인스턴스의 복제 사용자를 구성하세요. 다중 소스 복제본을 소스 DB 인스턴스에 연결하려면 소스 DB 인스턴스에 대해 REPLICATION CLIENT
및 REPLICATION SLAVE
권한을 가진 복제 사용자의 replication_user_name
값과 replication_user_password
값을 지정해야 합니다.
소스 DB 인스턴스에서 복제 사용자를 구성하려면
선택한 MySQL 클라이언트를 사용하여 소스 DB 인스턴스에 연결하고 복제에 사용될 사용자 계정을 생성합니다. 다음은 예입니다.
중요
보안 모범 사례로 다음 예제에 표시된 자리 표시자 값 이외의 암호를 지정하는 것이 좋습니다.
MySQL 8.0
CREATE USER 'repl_user'@'example.com' IDENTIFIED WITH mysql_native_password BY '
password
';MySQL 5.7
CREATE USER 'repl_user'@'example.com' IDENTIFIED BY '
password
';소스 DB 인스턴스의 경우 복제 사용자에게
REPLICATION CLIENT
및REPLICATION SLAVE
권한을 부여합니다. 다음 예제에서는 도메인의 'repl_user' 사용자에게 모든 데이터베이스에 대한REPLICATION CLIENT
및REPLICATION SLAVE
권한을 부여합니다.GRANT REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO 'repl_user'@'example.com';
암호화된 복제를 사용하려면 SSL 연결을 사용하도록 소스 DB 인스턴스를 구성합니다.
mysql.rds_set_external_source_with_auto_position_for_channel
직접 호출 전에 mysql.rds_set_external_source_gtid_purged를 직접 호출하여 외부 소스의 지정된 GTID 범위로 시스템 변수를 설정합니다.
mysql.rds_set_external_source_with_auto_position_for_channel
을 직접 호출하여 Amazon RDS DB 인스턴스를 지정된 채널의 읽기 복제본으로 구성한 후, 읽기 복제본에서 mysql.rds_start_replication_for_channel을 직접 호출하여 해당 채널에서 복제 프로세스를 시작할 수 있습니다.
mysql.rds_set_external_source_with_auto_position_for_channel
을 직접 호출하여 이 복제 채널을 구성한 후 mysql.rds_start_replication_for_channel을 직접 호출하여 복제 프로세스를 시작할 수 있습니다. mysql.rds_reset_external_source_for_channel을 직접 호출하여 채널에서 복제를 중지하고 복제본에서 채널 구성을 제거할 수 있습니다.
예시
MySQL용 RDS DB 인스턴스에서 실행할 때 다음 예제는 이 DB 인스턴스에 channel_1
이름이 지정된 복제 채널을 구성하여 sourcedb.example.com
호스트 및 3306
포트로 지정된 소스에서 데이터를 복제하도록 구성하고 최소 복제 지연 시간을 1시간(3,600초)으로 설정합니다. 즉 소스 RDS for MySQL DB 인스턴스의 변경 사항은 최소 1시간 동안 다중 소스 복제본에 적용되지 않습니다.
call mysql.rds_set_external_source_with_auto_position_for_channel( 'sourcedb.example.com', 3306, 'repl_user', 'password', 0, 3600, 'channel_1');
mysql.rds_set_external_source_with_delay_for_channel
RDS for MySQL DB 인스턴스의 복제 채널을 지정된 복제 지연으로 구성합니다.
중요
이 프로시저를 실행하려면 autocommit
를 활성화해야 합니다. 활성화하려면 autocommit
파라미터를 1
로 설정합니다. 파라미터 수정에 대한 자세한 정보는 Amazon RDS에서 DB 파라미터 그룹의 파라미터 수정 단원을 참조하십시오.
구문
CALL mysql.rds_set_external_source_with_delay_for_channel (
host_name
,host_port
,replication_user_name
,replication_user_password
,mysql_binary_log_file_name
,mysql_binary_log_file_location
,ssl_encryption
,delay
,channel_name
);
파라미터
-
host_name
-
RDS for MySQL 소스 DB 인스턴스의 호스트 이름 또는 IP 주소입니다.
-
host_port
-
RDS for MySQL 소스 DB 인스턴스에서 사용한 포트입니다. 네트워크 구성에 포트 번호를 변환하는 SSH 포트 복제가 포함되는 경우 SSH(Secure Shell)에 의해 공개되는 포트 이름을 지정하세요.
-
replication_user_name
-
RDS for MySQL 소스 DB 인스턴스에서
REPLICATION CLIENT
및REPLICATION SLAVE
권한을 보유한 사용자의 ID입니다. 소스 인스턴스를 사용한 복제에만 사용되는 계정을 제공하는 것이 좋습니다. -
replication_user_password
-
replication_user_name
에 지정된 사용자 ID의 암호입니다. -
mysql_binary_log_file_name
-
복제 정보를 포함하는 소스 DB 인스턴스의 이진 로그 이름입니다.
-
mysql_binary_log_file_location
-
복제 시 복제 정보를 읽기 시작할
mysql_binary_log_file_name
이진 로그 내 위치입니다.소스 데이터베이스 인스턴스의
SHOW MASTER STATUS
를 실행하여 binlog 파일 이름 및 위치를 확인할 수 있습니다. -
ssl_encryption
-
복제 연결에 보안 소켓 계층(SSL) 암호화를 사용할지 여부를 지정하는 값입니다. 1은 SSL 암호화 사용, 0은 암호화 사용 안 함입니다. 기본값은 0입니다.
참고
MASTER_SSL_VERIFY_SERVER_CERT
옵션은 지원되지 않습니다. 이 옵션은 0으로 설정되어 있는데, 이는 연결이 암호화되었지만 인증서는 확인되지 않았음을 의미합니다. -
delay
-
소스 DB 인스턴스에서 복제를 지연할 최소 시간(초)입니다.
이 파라미터에 대한 제한은 1일(86,400초)입니다.
-
channel_name
-
복제 채널의 이름입니다. 각 복제 채널은 특정 호스트 및 포트에서 실행되는 단일 소스 RDS for MySQL DB 인스턴스로부터 바이너리 로그 이벤트를 수신합니다.
사용 노트
마스터 사용자는 mysql.rds_set_external_source_with_delay_for_channel
프로시저를 실행해야 합니다. 이 프로시저는 복제 채널을 생성할 대상 RDS for MySQL DB 인스턴스에서 실행해야 합니다.
mysql.rds_set_external_source_with_delay_for_channel
을 실행하기 전에 다중 소스 복제본에 필요한 권한을 가진 소스 DB 인스턴스의 복제 사용자를 구성하세요. 다중 소스 복제본을 소스 DB 인스턴스에 연결하려면 소스 DB 인스턴스에 대해 REPLICATION CLIENT
및 REPLICATION SLAVE
권한을 가진 복제 사용자의 replication_user_name
값과 replication_user_password
값을 지정해야 합니다.
소스 DB 인스턴스에서 복제 사용자를 구성하려면
선택한 MySQL 클라이언트를 사용하여 소스 DB 인스턴스에 연결하고 복제에 사용될 사용자 계정을 생성합니다. 다음은 예입니다.
중요
보안 모범 사례로 다음 예제에 표시된 자리 표시자 값 이외의 암호를 지정하는 것이 좋습니다.
MySQL 8.0
CREATE USER 'repl_user'@'example.com' IDENTIFIED WITH mysql_native_password BY '
password
';MySQL 5.7
CREATE USER 'repl_user'@'example.com' IDENTIFIED BY '
password
';소스 DB 인스턴스의 경우 복제 사용자에게
REPLICATION CLIENT
및REPLICATION SLAVE
권한을 부여합니다. 다음 예제에서는 도메인의 'repl_user' 사용자에게 모든 데이터베이스에 대한REPLICATION CLIENT
및REPLICATION SLAVE
권한을 부여합니다.GRANT REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO 'repl_user'@'example.com';
암호화된 복제를 사용하려면 SSL 연결을 사용하도록 소스 DB 인스턴스를 구성합니다.
mysql.rds_set_external_source_with_delay_for_channel
을 직접 호출하여 이 복제 채널을 구성한 후 mysql.rds_start_replication_for_channel을 직접 호출하여 복제 프로세스를 시작할 수 있습니다. mysql.rds_reset_external_source_for_channel을 직접 호출하여 채널에서 복제를 중지하고 복제본에서 채널 구성을 제거할 수 있습니다.
mysql.rds_set_external_source_with_delay_for_channel
을 직접 호출하면 Amazon RDS는 채널별 세부 정보 없이 mysql.rds_history
테이블에 시간, 사용자 및 set channel source
의 작업을 기록하고 mysql.rds_replication_status
테이블에는 채널 이름과 함께 이들 정보를 기록합니다. 이 정보는 내부 사용 및 모니터링 목적으로만 기록됩니다. 감사 목적으로 전체 프로시저 직접 호출을 기록하려면 애플리케이션의 특정 요구 사항에 따라 감사 로그 또는 일반 로그를 활성화하는 것이 좋습니다.
예시
MySQL용 RDS DB 인스턴스에서 실행할 때 다음 예제는 이 DB 인스턴스에 channel_1
이름이 지정된 복제 채널을 구성하여 sourcedb.example.com
호스트 및 3306
포트로 지정된 소스에서 데이터를 복제하도록 구성하고 최소 복제 지연 시간을 1시간(3,600초)으로 설정합니다. 즉 소스 RDS for MySQL DB 인스턴스의 변경 사항은 최소 1시간 동안 다중 소스 복제본에 적용되지 않습니다.
call mysql.rds_set_external_source_with_delay_for_channel( 'sourcedb.example.com', 3306, 'repl_user', 'password', 'mysql-bin-changelog.000777', 120, 0, 3600, 'channel_1');
mysql.rds_set_source_auto_position_for_channel
지정된 채널의 복제 모드를 바이너리 로그 파일 위치 또는 글로벌 트랜잭션 식별자(GTID)를 기반으로 설정합니다.
구문
CALL mysql.rds_set_source_auto_position_for_channel (
auto_position_mode
,channel_name
);
파라미터
-
auto_position_mode
-
로그 파일 위치 복제 또는 GTID를 기반으로 하는 복제를 사용할지 여부를 나타내는 값:
-
0
– 바이너리 로그 파일 위치를 기반으로 한 복제 방법을 사용합니다. 기본값은0
입니다. -
1
– GTID 기반 복제 방법을 사용합니다.
-
-
channel_name
-
다중 소스 복제본의 복제 채널 이름입니다. 각 복제 채널은 특정 호스트 및 포트에서 실행되는 단일 소스 RDS for MySQL DB 인스턴스로부터 바이너리 로그 이벤트를 수신합니다.
사용 노트
마스터 사용자는 mysql.rds_set_source_auto_position_for_channel
프로시저를 실행해야 합니다. 이 프로시저는 지정된 채널에서 복제를 다시 시작하여 지정된 자동 위치 모드를 적용합니다.
예시
다음 예제에서는 GTID 기반 복제 방법을 사용하도록 channel_1의 자동 위치 모드를 설정합니다.
call mysql.rds_set_source_auto_position_for_channel(1,'channel_1');
mysql.rds_set_source_delay_for_channel
소스 데이터베이스 인스턴스에서 지정된 채널의 다중 소스 복제본으로 복제를 지연할 최소 시간(초)을 설정합니다.
구문
CALL mysql.rds_set_source_delay_for_channel(
delay
,channel_name
);
파라미터
-
delay
-
소스 DB 인스턴스에서 복제를 지연할 최소 시간(초)입니다.
이 파라미터에 대한 제한은 1일(86,400초)입니다.
-
channel_name
-
다중 소스 복제본의 복제 채널 이름입니다. 각 복제 채널은 특정 호스트 및 포트에서 실행되는 단일 소스 RDS for MySQL DB 인스턴스로부터 바이너리 로그 이벤트를 수신합니다.
사용 노트
마스터 사용자는 mysql.rds_set_source_delay_for_channel
프로시저를 실행해야 합니다. 프로시저를 사용하려면 우선 mysql.rds_stop_replication_for_channel
을 직접 호출하여 복제를 중지합니다. 그런 다음 이 프로시저를 직접 호출하여 복제 지연 값을 설정합니다. 지연이 설정되면 mysql.rds_start_replication_for_channel
을 직접 호출하여 복제를 다시 시작합니다.
예시
다음 예제에서는 다중 소스 복제본의 channel_1
에 있는 소스 데이터베이스 인스턴스에서 최소 1시간(3,600초) 동안 지연을 설정합니다.
CALL mysql.rds_set_source_delay_for_channel(3600,'channel_1');
mysql.rds_skip_repl_error_for_channel
지정된 채널의 MySQL DB 다중 소스 복제본의 바이너리 로그 이벤트를 건너뛰고 지정된 채널의 복제 오류를 삭제합니다.
구문
CALL mysql.rds_skip_repl_error_for_channel(
channel_name
);
파라미터
-
channel_name
-
다중 소스 복제본의 복제 채널 이름입니다. 각 복제 채널은 특정 호스트 및 포트에서 실행되는 단일 소스 RDS for MySQL DB 인스턴스로부터 바이너리 로그 이벤트를 수신합니다.
사용 노트
마스터 사용자는 읽기 전용 복제본에서 mysql.rds_skip_repl_error_for_channel
프로시저를 실행해야 합니다. mysql.rds_skip_repl_error
가 읽기 복제본의 오류를 건너뛰는 것과 비슷한 방식으로 이 프로시저를 사용할 수 있습니다. 자세한 내용은 mysql.rds_skip_repl_error 프로시저 호출 단원을 참조하십시오.
참고
GTID 기반 복제의 오류를 건너뛰려면 이 mysql.rds_skip_transaction_with_gtid 프로시저를 대신 사용할 것을 권장합니다.
오류가 있는지 여부를 판별하려면 MySQL SHOW REPLICA STATUS FOR CHANNEL '
명령을 실행합니다. 중대한 복제 오류가 아닌 경우 channel_name
'\Gmysql.rds_skip_repl_error_for_channel
를 사용하여 오류를 건너뛸 수 있습니다. 오류가 여러 개인 경우 mysql.rds_skip_repl_error_for_channel
은 지정된 복제 채널의 첫 번째 오류를 삭제한 후 다른 오류가 있음을 경고합니다. SHOW REPLICA STATUS FOR CHANNEL '
를 사용하여 다음 오류에 대한 적합한 조치를 결정할 수 있습니다. 반환된 값에 대한 자세한 내용은 MySQL 설명서의 SHOW SLAVE STATUS 문channel_name
'\G
mysql.rds_start_replication_for_channel
RDS for MySQL DB 인스턴스에서 지정된 채널의 다중 소스 복제본으로의 복제를 시작합니다.
참고
mysql.rds_start_replication_until_for_channel 또는 mysql.rds_start_replication_until_gtid_for_channel 저장 프로시저를 사용하여 RDS for MySQL DB 인스턴스에서 복제를 시작하고 지정된 바이너리 로그 파일 위치에서 복제를 중지할 수 있습니다.
구문
CALL mysql.rds_start_replication_for_channel(
channel_name
);
파라미터
-
channel_name
-
다중 소스 복제본의 복제 채널 이름입니다. 각 복제 채널은 특정 호스트 및 포트에서 실행되는 단일 소스 RDS for MySQL DB 인스턴스로부터 바이너리 로그 이벤트를 수신합니다.
사용 노트
마스터 사용자는 mysql.rds_start_replication_for_channel
프로시저를 실행해야 합니다. 소스 RDS for MySQL DB 인스턴스에서 데이터를 가져온 후 다중 소스 복제본에서 이 명령을 실행하여 지정된 채널에서 복제를 시작합니다.
예시
다음 예제에서는 다중 소스 복제본의 channel_1
에서 복제를 시작합니다.
CALL mysql.rds_start_replication_for_channel('channel_1');
mysql.rds_start_replication_until_for_channel
지정된 채널의 RDS for MySQL DB 인스턴스에서 복제를 시작하고 지정된 바이너리 로그 파일 위치에서 복제를 중지합니다.
구문
CALL mysql.rds_start_replication_until_for_channel (
replication_log_file
,replication_stop_point
,channel_name
);
파라미터
-
replication_log_file
-
복제 정보를 포함하는 소스 DB 인스턴스의 이진 로그 이름입니다.
-
replication_stop_point
-
복제를 중지할
replication_log_file
바이너리 로그 내 위치입니다. -
channel_name
-
다중 소스 복제본의 복제 채널 이름입니다. 각 복제 채널은 특정 호스트 및 포트에서 실행되는 단일 소스 RDS for MySQL DB 인스턴스로부터 바이너리 로그 이벤트를 수신합니다.
사용 노트
마스터 사용자는 mysql.rds_start_replication_until_for_channel
프로시저를 실행해야 합니다. 이 프로시저를 사용하면 복제가 시작되었다가 지정된 binlog 파일 위치에 도달하면 복제가 중지됩니다. 버전 8.0의 경우 프로시저는 SQL_Thread
에서만 중지됩니다. 버전 5.7의 경우 프로시저는 SQL_Thread
와 IO_Thread
를 모두 중지합니다.
replication_log_file
파라미터에 지정된 파일 이름은 소스 DB 인스턴스 binlog 파일 이름과 일치해야 합니다.
replication_stop_point
파라미터가 과거에 해당하는 중지 위치를 지정하는 경우 복제가 즉시 중지됩니다.
예시
다음 예에서는 channel_1
에서 복제를 시작하고 mysql-bin-changelog.000777
바이너리 로그 파일의 120
위치에 도달할 때까지 변경 사항을 복제합니다.
call mysql.rds_start_replication_until_for_channel( 'mysql-bin-changelog.000777', 120, 'channel_1' );
mysql.rds_start_replication_until_gtid_for_channel
RDS for MySQL DB 인스턴스에서 지정된 채널에 복제를 시작하고 지정된 전역 트랜잭션 식별자(GTID)에서 복제를 중지합니다.
구문
CALL mysql.rds_start_replication_until_gtid_for_channel(
gtid
,channel_name
);
파라미터
-
gtid
-
GTID 이후 복제를 중지합니다.
-
channel_name
-
다중 소스 복제본의 복제 채널 이름입니다. 각 복제 채널은 특정 호스트 및 포트에서 실행되는 단일 소스 RDS for MySQL DB 인스턴스로부터 바이너리 로그 이벤트를 수신합니다.
사용 노트
마스터 사용자는 mysql.rds_start_replication_until_gtid_for_channel
프로시저를 실행해야 합니다. 이 프로시저는 지정된 채널에서 복제를 시작하고 지정된 GTID 값까지 모든 변경 내용을 적용합니다. 그런 다음 채널에서의 복제가 중지됩니다.
gtid
파라미터가 복제본으로 이미 실행한 트랜잭션을 지정하는 경우 복제가 즉시 중지됩니다.
이 프로시저를 실행하기 전에 replica_parallel_workers
또는 slave_parallel_workers
값을 0
으로 설정하여 멀티스레드 복제를 비활성화해야 합니다.
예시
다음 예제에서는 channel_1
에서 복제를 시작하고 GTID 3E11FA47-71CA-11E1-9E33-C80AA9429562:23
에 도달할 때까지 변경 사항을 복제합니다.
call mysql.rds_start_replication_until_gtid_for_channel('3E11FA47-71CA-11E1-9E33-C80AA9429562:23','channel_1');
mysql.rds_stop_replication_for_channel
지정된 채널의 MySQL DB 인스턴스에서 복제를 중지합니다.
구문
CALL mysql.rds_stop_replication_for_channel(
channel_name
);
파라미터
-
channel_name
-
다중 소스 복제본의 복제 채널 이름입니다. 각 복제 채널은 특정 호스트 및 포트에서 실행되는 단일 소스 RDS for MySQL DB 인스턴스로부터 바이너리 로그 이벤트를 수신합니다.
사용 노트
마스터 사용자는 mysql.rds_stop_replication_for_channel
프로시저를 실행해야 합니다.
예시
다음 예시에서는 다중 소스 복제본의 channel_1
에서 복제를 중지합니다.
CALL mysql.rds_stop_replication_for_channel('channel_1');