Peningkatan PostgreSQL 9.2 - 9.6 dengan nol downtime

9

Saya harus memutakhirkan dari PostgreSQL 9.2 ke 9.6. Berikut ini adalah tantangan yang saya hadapi:

  1. 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?

  2. 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.

Prabhat
sumber
3
Masalah yang sama yang menghentikan Anda menggunakan Slony akan menghentikan Anda menggunakan alat lain seperti Bucardo, Londiste, pglogical, dll. Anda harus menyesuaikan aplikasi, jadi itu tidak melakukan penciptaan terus menerus. Dan ya, LOB akan menjadi masalah.
Craig Ringer

Jawaban:

1

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.

Lohit Gupta
sumber
2
Kami baru-baru ini meningkatkan basis data 9 TB dari 9,3 menjadi 9,6, menggunakan pg_upgrade. Butuh beberapa menit (pada kombinasi master dan slave), sementara mengambil dump sendirian membutuhkan lebih dari 3 jam.
dezso
Tetapi mengambil dump tidak perlu downtime.
Lohit Gupta
Tentu saja, apa yang saya maksud (dan lupa tambahkan) adalah bahwa memulihkan cadangan membutuhkan waktu yang kurang lebih sama dengan mengambilnya, yang berarti beberapa waktu henti kami dalam kasus kami.
dezso
Terima kasih atas sarannya, jadi yang saya lakukan adalah memutakhirkan master dan membangun kembali budak, apakah ini prosedur yang tepat
Prabhat
1
Langkah 2 tidak akan berfungsi. Format WAL tidak kompatibel antara versi utama, oleh karena itu perlu pg_upgrade.
dezso