AWS RDS mariadb replication 설정 문의 (binary log 포지션)

0

안녕하세요. RDS MariaDB를 Source로 하는 replication을 외부에 구성하려고 합니다. Source - rds mariadb (10.11.6) Replica - local mariadb (10.11.6)

초기 데이터를 mysqldump를 사용해서 옮기려고 하는데, rds에서는 --마스터-data 옵션이 사용 안되는 것으로 알고 있습니다. 그러면 binary log file과 position을 특정 시점으로 특정할 수가 없을 것 같은데요, 초기 데이터 설정과 싱크를 어떻게 맞출 수 있을지 궁금합니다. source DB에는 data write 트래픽이 계속 발생하는 상황입니다.

  • 예제
  1. 오전 10시00분00초에 show 마스터 status 실행 (file: 마스터1-bin.000123, position 456)
  2. 오전 10시01분00초에 source 서버에서 mysqldump 실행시작
  3. 오전 10시02분 00초에 source 서버에서 mysqldump 완료
  4. 오전 10시05분00초에 replica 서버에 load 완료
  5. 오전 10시06분00초에 오전 10시00분00초에 확인한 status 정보로 복제 구성 및 복제 시작

이 상황에서는 10시00분00초~10시01분00초의 binary log 정보는 중복 실행될까 우려가 되어 문의드립니다.

(re:post에서 본문에 마스터 영단어가 포함이 안돼서 한글로 표기했습니다.)

2개 답변
0
수락된 답변
답변함 한 달 전
0

RDS MariaDB를 소스로 하고 외부 로컬 MariaDB를 레플리카로 하는 복제 설정에 대해 말씀드리겠습니다.

RDS에서 --master-data 옵션을 사용할 수 없는 것은 맞습니다. 하지만 다음과 같은 방법으로 초기 데이터 설정과 동기화를 맞출 수 있습니다:

  1. 먼저 RDS MariaDB 소스 인스턴스를 읽기 전용으로 설정합니다:

    FLUSH TABLES WITH READ LOCK; SET GLOBAL read_only = ON;

  2. 그 다음 'SHOW MASTER STATUS' 명령을 실행하여 현재 바이너리 로그 파일과 위치를 확인합니다.

  3. 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

  4. 덤프가 완료되면 소스 RDS 인스턴스를 다시 쓰기 가능 상태로 만듭니다:

    SET GLOBAL read_only = OFF;

  5. 레플리카 서버에서 복제를 설정할 때, 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

profile picture
답변함 한 달 전
  • 소스 DB를 중단하지 않고 수행하는 방법은 없을까요?

로그인하지 않았습니다. 로그인해야 답변을 게시할 수 있습니다.

좋은 답변은 질문에 명확하게 답하고 건설적인 피드백을 제공하며 질문자의 전문적인 성장을 장려합니다.

질문 답변하기에 대한 가이드라인