Pada dasarnya ada tiga cara untuk meningkatkan PostgreSQL dari berbagai versi utama (mis. 9.1 hingga 9.3).
Memutakhirkan dengan pg_dump
Yang pertama, dan direkomendasikan jika mungkin, adalah melakukan dump dari versi lama (9.1) menggunakan biner dari versi yang lebih baru (9.3) dan mengembalikannya pada klaster baru yang dibuat dari versi yang lebih baru.
Pendekatan ini, umumnya, yang lebih lambat, tetapi juga yang paling layak. Salah satu tip untuk membuatnya lebih cepat, adalah menggunakan konkurensi. Untuk melakukan pekerjaan paralel, Anda dapat melakukan:
$ pg_dump --format=directory --jobs=4 --no-synchronized-snapshots --file=/path/to/mydump mydatabase
Anda harus melakukannya untuk setiap basis data yang Anda miliki, sesuaikan --jobs=4
nilainya dengan nilai apa pun (uji beberapa nilai dari 2 hingga jumlah inti, dan lihat mana yang memberikan kecepatan lebih baik). Juga, selama fase ini, tidak ada yang harus terhubung ke database, modifikasi apa pun akan menghasilkan dump yang rusak (karena opsi yang tidak aman --no-synchronized-snapshots
).
Setelah itu, Anda dapat mengembalikan dump ke instance baru menggunakan pg_restore
:
$ createdb <options> -T template0 mydatabase
$ pg_restore --exit-on-error --jobs=4 --dbname=mydatabase /path/to/mydump
Setelah itu, disarankan untuk berjalan ANALYZE
di database Anda:
$ vacuumdb --analyze-only mydatabase
(jika Anda dapat membayar waktu, jalankan hanya --analyze
untuk juga VACUUM
database dan perbarui peta visibilitas)
Memutakhirkan dengan pg_upgrade
Pilihan lain, adalah menggunakan contribpg_upgrade
. Menggunakan --link
metode ini menyediakan cara yang sangat cepat untuk memutakhirkan PostgreSQL.
Sebelum menggunakan, Anda harus membuat cadangan seluruh direktori data, karena dalam --link
mode, jika terjadi kesalahan, Anda dapat kehilangan kedua data (baru dan lama). Baca juga seluruh dokumen dan khususnya catatan di bagian bawah (ada beberapa batasan untuk pg_upgrade).
UPDATE: Silakan gunakan --check
opsi sebelum menjalankan perintah definitif. Juga, untuk basis data besar disarankan untuk menjalankan perintah ini dalam sesi layar.
Tingkatkan versi menggunakan alat replikasi berbasis pemicu
Pilihan lain untuk meningkatkan versi, menggunakan alat replikasi berdasarkan pemicu. Seperti Slony, Bucardo, dan Londiste.
Ini adalah opsi yang membutuhkan waktu henti sesedikit mungkin, tetapi ini adalah yang paling sulit untuk dikerjakan.
Untuk melakukan itu Anda perlu membangun master-slave di mana master adalah versi Anda saat ini (9.1) dan slave adalah versi baru (9.3). Anda kemudian, tunggu sinkronisasi pertama (dengan sistem masih dalam produksi), setelah itu Anda menutup semua orang yang terhubung ke database (waktu henti dimulai di sini), menunggu budak untuk mengejar ketinggalan, mempromosikannya (budak) untuk dikuasai dan redirect semua klien / aplikasi ke versi baru ini. Dan kamu sudah selesai.
Dokumentasi Slony menyediakan langkah demi langkah untuk memutakhirkan PostgreSQL menggunakan Slony .
Yang mana yang harus dipilih
Yah, seperti biasa tergantung, melanjutkan:
- The dump + restore adalah yang paling dapat diandalkan, tetapi umumnya yang paling lambat (paralelisme dapat memberikan hasil yang cukup bagus)
- Pg_upgrade adalah salah satu opsi terbaik untuk sedikit waktu henti (jika Anda dapat menggunakan, lihat batasannya), seringkali hanya membutuhkan beberapa menit, bahkan untuk database besar
- Replikasi pemicunya, tidak diragukan lagi adalah salah satu yang memberikan waktu henti sesedikit mungkin (mendekati nol), tetapi sangat sulit untuk dicapai dan saya sarankan hanya untuk orang yang berpengalaman (pada PostgreSQL dan alat replikasi).
Saya harap saya bisa membantu. Semoga berhasil.