- 최신
- 최다 투표
- 가장 많은 댓글
RDS MariaDB를 소스로 하고 외부 로컬 MariaDB를 레플리카로 하는 복제 설정에 대해 말씀드리겠습니다.
RDS에서 --master-data 옵션을 사용할 수 없는 것은 맞습니다. 하지만 다음과 같은 방법으로 초기 데이터 설정과 동기화를 맞출 수 있습니다:
-
먼저 RDS MariaDB 소스 인스턴스를 읽기 전용으로 설정합니다:
FLUSH TABLES WITH READ LOCK; SET GLOBAL read_only = ON;
-
그 다음 'SHOW MASTER STATUS' 명령을 실행하여 현재 바이너리 로그 파일과 위치를 확인합니다.
-
mysqldump를 사용하여 데이터베이스를 복사합니다. 이때 --single-transaction 옵션을 사용하면 덤프 중에도 다른 트랜잭션의 일관성을 유지할 수 있습니다:
mysqldump --databases database_name --single-transaction --compress --order-by-primary -u user -p | mysql --host=replica_host --port=3306 -u user -p
-
덤프가 완료되면 소스 RDS 인스턴스를 다시 쓰기 가능 상태로 만듭니다:
SET GLOBAL read_only = OFF;
-
레플리카 서버에서 복제를 설정할 때, 2단계에서 확인한 바이너리 로그 파일과 위치를 사용합니다.
이 방법을 사용하면 덤프 시작 시점의 정확한 바이너리 로그 위치를 알 수 있으므로, 데이터 중복이나 누락 없이 복제를 시작할 수 있습니다.
소스 DB에 지속적인 쓰기 트래픽이 있는 경우, 읽기 전용 설정 시간을 최소화하고 덤프 작업을 빠르게 수행하는 것이 중요합니다. 대규모 데이터베이스의 경우 다운타임을 줄이기 위해 Amazon RDS에서 제공하는 가이드라인을 참조할 수 있습니다.
이 방법을 사용하면 예시에서 우려하신 10:00:00 ~ 10:01:00 사이의 바이너리 로그 정보 중복 실행 문제를 방지할 수 있습니다. 복제 시작 시점이 정확히 덤프 시작 시점과 일치하게 되어 데이터의 일관성을 유지할 수 있습니다.
Sources
Configuring binary log file position replication with an external source instance - Amazon Relational Database Service
Configuring binary log file position replication with an external source instance - Amazon Relational Database Service
관련 콘텐츠
- 질문됨 3달 전
- 질문됨 일 년 전
소스 DB를 중단하지 않고 수행하는 방법은 없을까요?