가동 중지 시간을 최소화하면서 heroku 데이터베이스를 Amazon RDS로 마이그레이션


15

heroku postgres 데이터베이스가 있고 비용을 절약하기 위해 Amazon RDS로 마이그레이션하려고합니다. 가동 중지 시간을 최소화하면서 그렇게하는 방법은 무엇입니까? 일반적으로 실시간으로 데이터베이스를 복제 한 다음 복제 된 DB를 기본 DB로 승격시킵니다.

팔로워 데이터베이스를 사용하여 heroku 내에서 DB를 마이그레이션 할 수 있으며 읽기 전용 복제본 데이터베이스를 사용하여 Amazon RDS 내에서 DB를 마이그레이션 할 수 있습니다. 내 Amazon RDS에있는 heroku DB의 데이터베이스 복제를 생성하는 비슷한 방법이 있습니까?


2
모든 것이 복제 될 때 RDS에서 슬레이브를 만들 수 있습니다. heroku master promote RDS to Master를 제거하십시오.
Sam

2
@SamD 나는 Amazon이 외부 데이터베이스에서 수신하는 PostgreSQL 슬레이브를 지원하지 않았다고 생각합니다. 그들이 추가 했습니까? docs.aws.amazon.com/AmazonRDS/latest/UserGuide/…에 표시되지 않습니다 . 추가 된 경우 문서 링크가 크게 감사하겠습니다. pg_basebackup처음부터 어떻게 공급 합니까? 그리고 다른 주요 버전을 처리합니까?
Craig Ringer

답변:


3

여기에서 좋은 옛날 덤프 앤 복원을 수행해야합니다. 아마존은 덤프로드 이외의 다른 가져 오기 옵션을 제공하지 않는 것 같습니다.

http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/PostgreSQL.Procedural.Importing.html

그리고 그렇게하더라도, AFAICT는 Heroku가 제공하는 유일한 내보내기 옵션은 pg_dumps입니다 (즉, 기본 백업이 아니거나 외부 핫 스탠바이 노드를 설정하는 기능이 아님).

https://devcenter.heroku.com/articles/heroku-postgres-import-export

운이 좋으면 병렬화 된 pg_dump (9.3+)와 병렬화 된 pg_restore (8.4+)를 모두 지원할 수있는 새로운 Postgres 버전을 사용하고 있기 때문에 작업이 조금 빨라집니다. 그리고 전환이 진행되는 동안 사이트에 대한 쓰기를 잠그는 유지 관리 기간을 가질 수 있기를 바랍니다.


1

당신이 할 수있는 RDS를 데이터베이스에 현재 응용 프로그램을 연결 하고 Heroku가와 RDS 모두 삽입 한 나는, 복제를 설정 그냥 두 서버에 삽입하는 의미하지 않는다.

이것이 설정되면 두 데이터베이스에 새 레코드가 저장됩니다.

RDS 데이터베이스의 첫 번째 행을 읽어 어떤 레코드가 누락되었는지 (예 : table1에서 id가 100 이하인 모든 레코드가 누락 됨) 쉽게 확인할 수 있어야합니다. 그런 다음 테이블이 많지 않으면 간단한 내보내기 스크립트를 작성하는 것이 어렵지 않습니다.

그것이 도움이되기를 바랍니다.


1

AWS DMS (데이터베이스 마이그레이션 서비스)는 외부 SQL 인스턴스에서 데이터 마이그레이션을 지원하는 것처럼 보입니다. 데이터를 복제하고 Heroku에서 RDS로 변경하는 마이그레이션 작업을 설정할 수있었습니다. 그것이 실제로 나를 위해 작동하는지 여부는 아직 보이지 않습니다.)

--- 편집하다 ---

DMS와 같은 서비스는 Heroku에서 작동하지 않습니다. Heroku는 데이터베이스에서 Heroku가 허용하는 것보다 더 많은 권한이 부여 된 역할이 필요하기 때문입니다. https://help.heroku.com/E10ZZ6IJ/why-can-ti-use-third-party-tools 복제 -my-heroku-postgres 데이터베이스에서 non-herohero-database로

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.