태그 보관물: postgresql

postgresql

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 일부터 지원됩니다 .

공지 사항


답변