Saya harus memutakhirkan dari PostgreSQL 9.2 ke 9.6. Berikut ini adalah tantangan yang saya hadapi:
Karena kami memiliki pengaturan replikasi streaming, dan PostgreSQL tidak mendukung upgrade versi yang lebih rendah ke atas ketika dalam mode replikasi streaming, ketika saya memutakhirkan master saya harus membangun kembali para budak dan itu membutuhkan waktu 3 jam. Saya tidak punya waktu luang. Setiap saat kita membutuhkan satu budak dan satu master tersedia. Apakah ada cara lain untuk memutakhirkan tanpa harus membangun kembali budak, menggunakan replikasi streaming?
Untuk membangun replikasi logis kami berpikir untuk menggunakan slony tetapi slony memiliki beberapa keterbatasan karena itu tidak secara otomatis mereplikasi:
- Perubahan ke objek besar (BLOBS)
- Perubahan dilakukan oleh perintah DDL
- Perubahan pada pengguna dan peran
... dan aplikasi kami memiliki perintah membuat yang berkelanjutan. Jadi kita tidak bisa menggunakan slony.
Tolong sarankan sesuatu untuk menghindari membangun kembali budak dan melakukan upgrade dengan downtime minimal dan satu master dan satu budak siap.
sumber
Jawaban:
Memutakhirkan basis data akan membutuhkan waktu henti di server Anda. Untuk meminimalkan waktu henti, saya sarankan Anda menginstal versi yang lebih baru di server baru, membuat pengaturan replikasi pada itu dan membuang semua data dari contoh lama di sini, dan mengubah server menunjuk sehingga aplikasi menunjuk ke server baru untuk terhubung ke database.
sumber
pg_upgrade
. Butuh beberapa menit (pada kombinasi master dan slave), sementara mengambil dump sendirian membutuhkan lebih dari 3 jam.pg_upgrade
.