Di chuyển cơ sở dữ liệu heroku sang Amazon RDS với thời gian chết tối thiểu


15

Tôi có một cơ sở dữ liệu heroku postgres và muốn di chuyển nó sang Amazon RDS để tiết kiệm chi phí. Cách nào để làm như vậy với thời gian chết tối thiểu? Thông thường, điều này liên quan đến việc sao chép cơ sở dữ liệu trong thời gian thực và sau đó quảng bá DB được sao chép làm DB chính.

Tôi biết tôi có thể sử dụng cơ sở dữ liệu người theo dõi để di chuyển DB trong heroku và tôi có thể sử dụng cơ sở dữ liệu bản sao đọc để di chuyển DB trong Amazon RDS. Có một phương pháp tương tự để tạo bản sao cơ sở dữ liệu của heroku DB sống trong Amazon RDS của riêng tôi không?


2
bạn có thể tạo nô lệ trong RDS khi mọi thứ được sao chép, xóa chủ nhân heroku quảng bá RDS thành Master.
Sam

2
@SamD Tôi chưa nghĩ Amazon hỗ trợ nô lệ PostgreSQL nhận được từ cơ sở dữ liệu bên ngoài. Họ đã thêm điều đó? Tôi không thấy nó trong docs.aws.amazon.com/AmazonRDS/latest/UserGuide/ mẹo . Nếu nó được thêm vào, một liên kết tài liệu sẽ được đánh giá rất cao. Làm thế nào để bạn nuôi nó pg_basebackupđể bắt đầu? Và đối phó với các phiên bản chính khác nhau?
Craig Ringer

Câu trả lời:


3

Khá chắc chắn rằng bạn sẽ phải thực hiện một kết xuất và khôi phục lỗi thời kiểu cũ ở đây. Amazon dường như không cung cấp bất kỳ tùy chọn nhập khẩu nào ngoài việc tải trong một bãi chứa:

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

và ngay cả khi họ đã làm, AFAICT các tùy chọn xuất duy nhất được Heroku cung cấp là pg_dumps (nghĩa là không phải là sự trở lại hoặc khả năng thiết lập nút chờ nóng bên ngoài):

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

Nếu bạn may mắn, bạn đang sử dụng phiên bản Postgres đủ mới để hỗ trợ cả pg_dump song song (9.3+) và pg_restore song song (8.4+), giúp công việc của bạn nhanh hơn một chút. Và hy vọng bạn có thể đủ khả năng để có một cửa sổ bảo trì trong đó bạn khóa ghi vào trang web của bạn trong khi quá trình chuyển đổi đang diễn ra ...


1

Bạn có thể kết nối ứng dụng hiện tại của mình với cơ sở dữ liệu RDS và chèn nó vào cả Heroku và RDS, tôi không có ý thiết lập sao chép, chỉ để chèn vào cả hai máy chủ.

Khi điều này được thiết lập, bạn sẽ có các bản ghi mới được lưu trữ trong cả hai cơ sở dữ liệu.

Cần đủ dễ dàng để xem bản ghi nào bị thiếu (ví dụ: trong bảng1, tất cả các bản ghi có id 100 hoặc thấp hơn đều bị thiếu) bằng cách đọc hàng đầu tiên trong cơ sở dữ liệu RDS. Sau đó, viết một kịch bản xuất đơn giản không quá khó trừ khi bạn có nhiều bảng.

Hy vọng nó giúp


1

Dường như AWS DMS (Dịch vụ di chuyển cơ sở dữ liệu) hỗ trợ di chuyển dữ liệu từ các phiên bản SQL bên ngoài. Tôi đã có thể thiết lập một tác vụ di chuyển sao chép dữ liệu và thay đổi từ Heroku sang RDS. Cho dù nó thực sự làm việc cho tôi vẫn chưa được nhìn thấy;)

--- BIÊN TẬP ---

Có vẻ như các dịch vụ như DMS không hoạt động với Heroku, vì chúng yêu cầu nhiều vai trò đặc quyền hơn Heroku cho phép trên cơ sở dữ liệu của họ: https://help.heroku.com/E10ZZ6IJ/why-can-ti-use-third-party-tools -to-Replicate-my-heroku-postgres-database-to-a-non-heroku-database

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.