AWS RDS PostgreSQL 인스턴스에서 WAL 파일 가져 오기 파일의 로컬 백업을 선호합니다. 질문

Amazon Web Services에 Postgres RDS 인스턴스가 있습니다. 자동 백업이 활성화되어 있으며 매일 스냅 샷을 생성합니다. 자체 관리 할 수있는 RDS 인스턴스의 로컬 ‘최신’백업을 생성하려고합니다. 특정 시점으로 데이터베이스를 복원 할 수 있기 때문에 인스턴스에 대해 pg_dump를 실행하는 것만으로는 충분하지 않습니다. 백업이 수행 된 이후 RDS 및 모든 WAL 파일의 로컬 백업을 선호합니다. 질문 :

  1. RDS가 ​​백업 루틴에서 자동으로 생성하는 WAL 파일 및 백업에 액세스 할 수 있습니까? 이상적입니다. 로컬 사본을 다운로드하고 싶습니다. 초기 조사 후이 질문에 대한 답은 ‘아니오’라고 생각합니다. RDS가 ​​WAL 파일과 백업을 S3에 저장하는 것처럼 들리지만 액세스 할 수 없습니다. 나는 확인을 좋아합니다.

  2. RDS 인스턴스에서 발생한 트랜잭션 (WAL 파일)에 액세스하는 다른 방법이 있습니까? 기본 ‘실시간’RDS 인스턴스에서이 EC2 인스턴스로 EC2 및 ‘피드’트랜잭션에서 Postgres 데이터베이스를 생성 할 수 있어야한다고 생각합니다. EC2 인스턴스가 업데이트되면 WAL 파일을 가져올 수 있습니다. 그러나 어떤 두통이 있습니까 : /이 설정이 가능합니까? RDS 인스턴스에서 EC2 인스턴스로 ‘피드’하여 항상 최신 상태를 유지하는 마법은 무엇입니까?

감사!



답변

업데이트 : 나는 이것에 대해 AWS 포럼에 게시했습니다 . 차임으로 가서 문의하십시오 .


작성 시점에서 Amazon RDS는 RDS 외부의 물리적 복제를 지원하지 않습니다. 당신은 할 수있는 GRANT사용자에게 REPLICATION사용하여 바로 rds_superuser로그인을하지만, 당신이 구성 할 수 replication있는 외부 IP에 대한 항목 pg_hba.conf.

또한 RDS에서 DB 파라미터 그룹을 생성하면 일부 주요 파라미터가 표시되지만 잠겨 있습니다 (예 : archive_command에 잠겨 있음) /etc/rds/dbbin/pgscripts/rds_wal_archive %p. PostgreSQL 용 AWS RDS는 외부 액세스 (예 : S3를 통해)에 대해 WAL 배송 복제를 외부 PITR에 사용해야하는 경우 이러한 WAL을 노출하지 않는 것으로 보입니다.

따라서이 시점에서 Wal-shipping을 원하면 RDS를 사용하지 마십시오. 사용하기 쉬운 통조림 데이터베이스이지만 사용하기 쉽다는 것은 종종 데이터베이스가 제한되어 있다는 것을 의미합니다. Joe Love가 의견에서 지적한 것처럼 RDS 내에서 WAL 운송 및 PITR을 제공 하지만 RDS 외부 에서 WAL에 액세스 할 수는 없습니다 .

따라서 덤프, 스냅 샷 및 자체 WAL 기반 PITR과 같은 RDS 자체 백업 기능을 사용해야합니다.


RDS에서 복제 연결 ( pg_basebackup또는 스트리밍 복제)을 설정하고 보관 된 WAL에 액세스하도록 허용하더라도 실제로 해당 WAL을 사용하지 못할 수 있습니다. RDS는 패치 된 PostgreSQL을 실행하지만 아무도 패치가 얼마나 많이 적용되는지 또는 디스크 포맷이 크게 변경되는지는 아무도 모릅니다. 또한 x64 Linux이지만 아마도 결정하기 어려운 Amazon이 선택한 아키텍처에서 실행됩니다. PostgreSQL의 디스크 형식 및 복제는 아키텍처에 따라 다르므로 Amazon RDS에서 사용하는 것과 동일한 아키텍처를 가진 호스트에만 PostgreSQL 빌드가 호환되는 경우에만 복제 할 수 있습니다.

무엇보다도 이는 RDS에서 쉽게 마이그레이션 할 수있는 방법이 없다는 것을 의미합니다. 를 가져 와서 pg_dump복원하고 새 DB를 실행 하기에 충분한 시간 동안 데이터베이스에 대한 모든 쓰기를 중지해야합니다 . DB 호스트에 직접 액세스 할 수 없으므로 복제 및 페일 오버, rsync 등의 일반적인 트릭이 작동하지 않습니다.

RDS가 ​​패치되지 않은 PostgreSQL을 실행하더라도 Amazon pg_basebackup은 보안상의 이유로 RDS로 WAL 스트리밍을하거나 RDS로 가져 오기를 원하지 않을 것입니다 . PostgreSQL은 데이터 디렉토리를 신뢰할 수있는 컨텐츠로 취급하며, 내부 기능을 연결하거나 다른 까다로운 작업을 수행하는 영리한 ‘LANGUAGE c’기능을 만든 경우 서버를 이용하여 예상보다 더 많은 액세스 권한을 얻을 수 있습니다 . 따라서 아마존은 곧 인바운드 WAL을 허용하지 않습니다.

아웃 바운드 WAL 전송을 지원할 수 있지만 형식 호환성, 자유롭게 변경할 수있는 위의 문제는 여전히 적용됩니다.


대신 Londiste 또는 Bucardo와 같은 도구를 사용해야합니다.


답변


답변

Londiste 및 Bucardo와 같은 트리거 기반 시스템을 RDS 안팎으로 복제하는 기능은 이제 해당 포럼 스레드에 대한 답변에 따라 2014 년 11 월 10 일부터 지원됩니다 .

공지 사항