Saya menggunakan Fedora 15
dengan PostgreSQL 9.1.4
. Fedora jatuh baru-baru ini setelah itu:
Upaya untuk memulai server PostgreSQL:
service postgresql-9.1 start
memberi
Starting postgresql-9.1 (via systemctl): Job failed. See system logs and 'systemctl status' for details.
[FAILED]
Meskipun, server mulai normal ketika saya memulai server untuk pertama kalinya setelah sistem reboot .
Namun, upaya untuk menggunakan psql
memberikan kesalahan ini:
psql: could not connect to server: No such file or directory
Is the server running locally and accepting
connections on Unix domain socket "/tmp/.s.PGSQL.5432"?
.s.PGSQL.5432
file tidak ada dimanapun di sistem. A locate .s.PGSQL.5432
tidak menghasilkan apa-apa.
Log sistem memiliki ini:
Aug 14 17:31:58 localhost systemd[1]: postgresql-9.1.service: control process exited, code=exited status=1
Aug 14 17:31:58 localhost systemd[1]: Unit postgresql-9.1.service entered failed state.
SEBUAH
systemctl status postgresql-9.1.service
memberi
postgresql-9.1.service - SYSV: PostgreSQL database server.
Loaded: loaded (/etc/rc.d/init.d/postgresql-9.1)
Active: failed since Tue, 14 Aug 2012 17:31:58 +0530; 58s ago
Process: 2811 ExecStop=/etc/rc.d/init.d/postgresql-9.1 stop (code=exited, status=1/FAILURE)
Process: 12423 ExecStart=/etc/rc.d/init.d/postgresql-9.1 start (code=exited, status=1/FAILURE)
Main PID: 2551 (code=exited, status=1/FAILURE)
CGroup: name=systemd:/system/postgresql-9.1.service
Saya belum mengubah pengaturan default fsync jadi saya kira, sudah diatur untuk on
. Saya menggunakan HDD. HDD jatuh.
HDD rusak
Kecelakaan HDD mengakibatkan menjalankan manual fsck
pada prompt dan tidak berbasis gui. Dengan itu memperbaiki gazillion inode dll. Setelah itu saya me-restart sistem dengan Ctrl+ Alt+ Delete.
Log PostgreSQL memiliki ini:
LOG: database system was interrupted; last known up at 2012-08-14 17:31:57 IST
LOG: database system was not properly shut down; automatic recovery in progress
LOG: record with zero length at 0/41A4E58
LOG: redo is not required
FATAL: could not access status of transaction 1
DETAIL: Could not open file "pg_multixact/offsets/0000": No such file or directory.
LOG: startup process (PID 13016) exited with exit code 1
LOG: aborting startup due to startup process failure
Memperbarui
Mencoba memulai server setelah mengambil salinan level sistem file dari /var/lib/pgsql
direktori, dan berjalan ./pg_resetxlog -f /var/lib/pgsql/9.1/data/
dengan hasilnya xlog -f /var/lib/pgsql/9.1/data/
masih menghasilkan:
LOG: database system was interrupted; last known up at 2012-08-14 18:46:36 IST
LOG: database system was not properly shut down; automatic recovery in progress
LOG: record with zero length at 0/6000078
LOG: redo is not required
FATAL: could not access status of transaction 1
DETAIL: Could not open file "pg_multixact/offsets/0000": No such file or directory.
LOG: startup process (PID 13766) exited with exit code 1
LOG: aborting startup due to startup process failure
sumber
pg_resetxlog
tidak ada gunanya, jadi Anda ke wilayah yang menyenangkan. Apakah Anda memiliki cadangan dari database ini sebelum crash?pg_multixact/offsets/0000
yang akan diterima Pg ...Jawaban:
Jawaban sebenarnya ada di log PostgreSQL, di
/var/lib/pgsql/data/pg_log
.Namun, sebelum Anda mengambil tindakan apa pun: Sangat penting bahwa Anda mengambil salinan tingkat sistem file dari database Anda sebelum mencoba memperbaiki jika ada data Anda yang berharga bagi Anda . Lihat http://wiki.postgresql.org/wiki/Corruption . Anda harus menyalin seluruh direktori data. Pada Fedora itu
/var/lib/pgsql/data
secara default, tetapi verifikasi itu benar untuk instalasi Anda.Berdasarkan log yang Anda posting Anda pasti memiliki beberapa tingkat korupsi basis data. Penyimpanan yang menjadi basis data (hard drive atau sistem file) kemungkinan besar rusak. Ambil salinan SEKARANG, dan letakkan di hard drive atau sistem yang berbeda .
Hanya sekali Anda telah membuat salinan level sistem file lengkap dari direktori data Anda, coba gunakan pg_resetxlog untuk menghapus log transaksi yang rusak dan mulai database Anda. Sekalipun dimulai, sangat mungkin korup; Anda harus
pg_dump
kemudian ulanginitdb
itu dan mengembalikan dump ke instance segar.Jika Anda masih tidak dapat memulainya setelah
pg_resetxlog
memposting log yang diperbarui dari upaya startup setelah resetxlog. Mungkin saja Anda harus memulai Pg dalam mode mandiri dengan:Jika itu berhasil, memberi Anda
backend>
prompt, coba lagi setelah mengganti "postgres" terakhir dengan nama DB yang ingin Anda sambungkan. Anda harus bisaSELECT
,COPY
data dari tabel, dll.Jika itu tidak berhasil, yaitu Anda tidak dapat memulai backend mandiri, maka mungkin saatnya untuk memulihkan dari cadangan - karena Anda cukup masuk akal untuk memilikinya. Jika ada orang lain yang membaca ini di posisi yang sama, hubungi konsultan PostgreSQL yang berpengalaman untuk melihat apakah mereka dapat memulihkan data dari database Anda. Bersiaplah untuk membayar waktu dan keahlian mereka.
Sistem file Anda mungkin rusak
Tingkat keparahan kerusakan pada instalasi PostgreSQL menunjukkan bahwa seluruh sistem file Anda mungkin rusak. Anda mungkin ingin mempertimbangkan memulihkan seluruh sistem dari cadangan atau menginstalnya kembali.
Saya tidak akan mempercayai sistem file ini,
fsck
atau tidakfsck
.SMART-test drive Anda
Saya juga merekomendasikan Anda menjalankan
SMART
pemeriksaan pada hard drive Anda dengansmartctl
dari smartmontools; dengan asumsi itu/dev/hda
akan terjadismartctl -d ata -a /dev/sda | less
. Cari tes kesehatan yang gagaluncorrectable_sectors
,, tingkat kesalahan baca yang tinggi, reallocated_sector_count lebih dari 2 atau 3, atau current_pending_sector yang tidak nol. Jalankansmartctl -d ata -t long /dev/sda
untuk menjalankan tes mandiri yang tidak merusak pada HDD Anda; itu tidak akan mengganggu fungsi normal sistem. Ketika perkiraan waktu telah berlalu, jalankansmartctl -d ata /dev/sda
lagi dan lihat log uji diri untuk melihat apakah sudah lulus.Jika ada yang terlihat kurang sempurna, ganti drive.
Di masa mendatang, pertimbangkan untuk mengotomatisasi pengujian ini melalui
smartd
peringatan dini kegagalan drive.(Konten dalam posting ini sudah usang oleh pembaruan pertanyaan. Jika Anda memecahkan masalah yang sama, lihat riwayat edit jawaban ini).
sumber
fsync
jadi saya kira, itu diatur keon
. Saya menggunakan HDD. Ya, HDD macet. Saya belum kehabisan ruang disk. Tidak ada kesalahan memori / terlalu panas / tersandung kabel / kerpanic.fsck
dan melakukan perbaikan sistem file? Tolong detailnya. Tulis kisah kecelakaan Anda.fsck
untuk. Dengan itu memperbaiki trilyun inodes dll. Setelah itu sistem restart. Telah memperbarui hal di atas dalam pertanyaan juga.pg_resetxlog