Migrasikan database heroku ke Amazon RDS dengan downtime minimum

15

Saya memiliki database postgres heroku dan ingin memigrasikannya ke Amazon RDS untuk menghemat biaya. Apa cara untuk melakukannya dengan downtime minimum? Biasanya ini melibatkan replikasi database secara real time dan kemudian mempromosikan DB yang direplikasi sebagai DB utama.

Saya tahu saya bisa menggunakan database pengikut untuk memigrasi DB di dalam heroku, dan saya bisa menggunakan database replika baca untuk memigrasi DB di dalam Amazon RDS. Apakah ada metode serupa untuk membuat replikasi database heroku DB yang hidup di Amazon RDS saya sendiri?


sumber
2
Anda dapat membuat budak di RDS ketika semuanya direplikasi menghapus master heroku mempromosikan RDS ke Master.
Sam
2
@SamD Saya tidak berpikir Amazon mendukung budak PostgreSQL yang menerima dari database luar. Sudahkah mereka menambahkan itu? Saya tidak melihatnya di docs.aws.amazon.com/AmazonRDS/latest/UserGuide/… . Jika sudah ditambahkan, tautan dokumentasi akan sangat dihargai. Bagaimana Anda memberi makan pg_basebackupuntuk memulai? Dan berurusan dengan berbagai versi utama?
Craig Ringer

Jawaban:

3

Cukup yakin Anda harus melakukan dump-and-restore kuno yang bagus di sini. Amazon tampaknya tidak menawarkan opsi impor apa pun selain memuat di tempat sampah:

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

dan bahkan jika mereka melakukannya, AFAICT satu-satunya opsi ekspor yang ditawarkan oleh Heroku adalah pg_dumps (yaitu bukan basebackups atau kemampuan untuk mengatur node hot siaga eksternal):

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

Jika Anda beruntung, Anda menggunakan versi Postgres yang cukup baru untuk mendukung pg_dump paralel (9.3+) dan pg_restore paralel (8.4+), yang akan membuat pekerjaan Anda sedikit lebih cepat. Dan mudah-mudahan Anda dapat mengambil jendela pemeliharaan di mana Anda mengunci menulis ke situs Anda saat peralihan sedang berlangsung ...

Josh Kupershmidt
sumber
1

Anda dapat menghubungkan aplikasi Anda saat ini ke database RDS dan memasukkannya ke dalam Heroku dan RDS, saya tidak bermaksud mengatur replikasi, hanya dengan memasukkan di kedua server.

Setelah ini diatur, Anda akan memiliki catatan baru disimpan di kedua database.

Seharusnya cukup mudah untuk melihat catatan mana yang hilang (misalnya: dalam tabel1 semua catatan dengan id 100 atau lebih rendah hilang) dengan membaca baris pertama dalam database RDS. Maka menulis skrip ekspor sederhana seharusnya tidak terlalu sulit kecuali Anda memiliki banyak tabel.

Semoga ini bisa membantu

Purefan
sumber
1

Sepertinya AWS DMS (Database Migration Service) mendukung migrasi data dari instance SQL eksternal. Saya dapat mengatur tugas migrasi yang mereplikasi data dan perubahan dari Heroku ke RDS. Apakah itu benar-benar bekerja untuk saya belum dilihat;)

--- EDIT ---

Sepertinya layanan seperti DMS tidak berfungsi dengan Heroku, karena mereka membutuhkan peran yang lebih istimewa daripada yang Heroku perbolehkan di database mereka: https://help.heroku.com/E10ZZ6IJ/why-can-ti-use-third-party-tools -untuk mereplikasi-my-heroku-postgres-database-ke-non-heroku-database

Murphy Randle
sumber