Saya sedang menguji peningkatan PostgreSQL 8.2.1 ke 9.2 pada mesin virtual yang menjalankan distro Linux khusus. Prosedur peningkatan adalah sebagai berikut:
- Mulai
pglayanan - Vakum semua DB (tidak yakin apakah ini diperlukan)
- Cadangkan dengan
pg_dumpall - Hentikan
pglayanan - Pindahkan direktori tempat data disimpan (
/var/pg; ini adalah pengaturan server tunggal yang sederhana) - Instal PostgreSQL 9.2
initdb- Mulai server
- Kembalikan data yang dibuang
reindexdbsemua DB- Buat kembali
referential_constraintspemandangan - Kosongkan semua DB (AFAIK diperlukan setelah peningkatan ini)
Prosedur ini berfungsi dengan baik pada satu host, mencadangkan dan memulihkan tanpa hambatan. Di komputer lain dengan titik basis data yang berbeda 1 hingga 7 berfungsi dengan baik, tetapi server tidak akan memulai kecuali saya menambahkan sleep 1setelah initdb, dan bahkan kemudian data yang dibuang tidak dapat dipulihkan karena "sistem basis data mulai". Apa cara standar untuk mengatasi ini, kecuali untuk peretasan yang mengerikan ini:
sleepuntuk sejumlah waktu sebelum operasi,- perulangan sampai berfungsi atau sampai batas waktu yang baik tercapai, atau
- pengulangan sampai menerima kueri sepele atau batas waktu tercapai.
Sunting: " Solusi " tidak berhasil sama sekali. Apa yang diperlukan untuk memastikan database siap menjalankan pemulihan?
initdbdijalankan secara serempak, sehingga ketika server dimulai initdbsudah selesai dengan sukses.
initdbstatus keluar? Saya kira ketika itu mengatur pekerjaan dilakukan.