Ini adalah perintah pg_resetxlog yang dapat dijalankan di penyedia hosting gratis OnWorks menggunakan salah satu dari beberapa workstation online gratis kami seperti Ubuntu Online, Fedora Online, emulator online Windows atau emulator online MAC OS
PROGRAM:
NAMA
pg_resetxlog - mengatur ulang log tulis dan informasi kontrol lainnya dari PostgreSQL
klaster basis data
RINGKASAN
pg_resetxlog [-c xi,xi] [-f] [-n] [-o Hai] [-x xi] [-e zaman_xid] [-m mxid,mxid]
[-O mxoff] [-l file xlog] {[-D] datadir}
DESKRIPSI
pg_resetxlog membersihkan log write-ahead (WAL) dan secara opsional mengatur ulang beberapa kontrol lainnya
informasi yang disimpan dalam file pg_control. Fungsi ini terkadang diperlukan jika:
file menjadi rusak. Itu harus digunakan hanya sebagai upaya terakhir, ketika server mau
tidak mulai karena korupsi tersebut.
Setelah menjalankan perintah ini, server seharusnya dapat dijalankan, tetapi perlu diingat
bahwa database mungkin berisi data yang tidak konsisten karena transaksi yang dilakukan sebagian.
Anda harus segera membuang data Anda, jalankan initdb, dan memuat ulang. Setelah memuat ulang, periksa
ketidakkonsistenan dan perbaikan sesuai kebutuhan.
Utilitas ini hanya dapat dijalankan oleh pengguna yang menginstal server, karena memerlukan
akses baca/tulis ke direktori data. Untuk alasan keamanan, Anda harus menentukan data
direktori pada baris perintah. pg_resetxlog tidak menggunakan variabel lingkungan PGDATA.
If pg_resetxlog mengeluh bahwa itu tidak dapat menentukan data yang valid untuk pg_control, Anda dapat
memaksanya untuk tetap melanjutkan dengan menentukan -f (kekuatan) pilihan. Dalam hal ini masuk akal
nilai akan menggantikan data yang hilang. Sebagian besar bidang dapat diharapkan
cocok, tetapi bantuan manual mungkin diperlukan untuk OID berikutnya, ID transaksi berikutnya, dan
epoch, ID dan offset multitransaksi berikutnya, dan bidang alamat awal WAL. Bidang-bidang ini
dapat diatur menggunakan opsi yang dibahas di bawah ini. Jika Anda tidak dapat menentukan yang benar
nilai untuk semua bidang ini, -f masih dapat digunakan, tetapi database yang dipulihkan harus
diperlakukan dengan kecurigaan lebih dari biasanya: dump dan reload segera sangat penting.
Do tidak jalankan operasi modifikasi data apa pun di database sebelum Anda membuangnya, seperti apa pun
tindakan tersebut kemungkinan akan memperburuk korupsi.
The -o, -x, -e, -m, -O, -c dan -l opsi memungkinkan OID berikutnya, ID transaksi berikutnya, selanjutnya
epoch ID transaksi, ID multitransaksi berikutnya dan terlama, offset multitransaksi berikutnya,
ID transaksi terlama dan terbaru yang waktu komitnya dapat diambil, dan WAL
nilai alamat awal diatur secara manual. Ini hanya diperlukan ketika pg_resetxlog is
tidak dapat menentukan nilai yang sesuai dengan membaca pg_control. Nilai aman bisa
ditentukan sebagai berikut:
· Nilai aman untuk ID transaksi berikutnya (-x) dapat ditentukan dengan mencari
nama file terbesar secara numerik di direktori pg_clog di bawah direktori data,
menambahkan satu, lalu mengalikannya dengan 1048576. Perhatikan bahwa nama file ada di
heksadesimal. Biasanya paling mudah untuk menentukan nilai opsi dalam heksadesimal juga. Untuk
contoh, jika 0011 adalah entri terbesar di pg_clog, -x 0x1200000 akan berfungsi (lima
trailing zeros memberikan pengganda yang tepat).
· Nilai aman untuk ID multitransaksi berikutnya (bagian pertama dari -m) dapat ditentukan dengan
mencari nama file terbesar secara numerik di direktori pg_multixact/offsets
di bawah direktori data, tambahkan satu, lalu kalikan dengan 65536. Sebaliknya, a
nilai aman untuk ID multitransaksi tertua (bagian kedua dari -m) dapat ditentukan dengan
mencari nama file terkecil secara numerik di direktori yang sama dan mengalikan
oleh 65536. Seperti di atas, nama file dalam heksadesimal, jadi cara termudah untuk melakukannya:
adalah untuk menentukan nilai opsi dalam heksadesimal dan menambahkan empat nol.
· Nilai aman untuk offset multitransaksi berikutnya (-O) dapat ditentukan dengan melihat
untuk nama file terbesar secara numerik di direktori pg_multixact/members di bawah
direktori data, tambahkan satu, lalu kalikan dengan 52352. Seperti di atas, nama filenya
berada dalam heksadesimal. Tidak ada resep sederhana seperti yang di atas dari menambahkan
nol.
· Nilai aman untuk ID transaksi tertua yang waktu komitnya dapat diambil
(bagian pertama dari -c) dapat ditentukan dengan mencari nama file terkecil secara numerik
di direktori pg_commit_ts di bawah direktori data. Sebaliknya, nilai aman untuk
ID transaksi terbaru yang waktu komitnya dapat diambil (bagian kedua dari
-c) dapat ditentukan dengan mencari nama file terbesar secara numerik dalam hal yang sama
direktori. Seperti di atas, nama file dalam heksadesimal.
· Alamat awal WAL (-l) harus lebih besar dari nama file segmen WAL mana pun
saat ini ada di direktori pg_xlog di bawah direktori data. Nama-nama ini adalah
juga dalam heksadesimal dan memiliki tiga bagian. Bagian pertama adalah "ID timeline" dan
biasanya harus tetap sama. Misalnya, jika 00000001000000320000004A adalah
entri terbesar di pg_xlog, gunakan -l 00000001000000320000004B atau lebih tinggi.
Note
pg_resetxlog sendiri melihat file di pg_xlog dan memilih default -l pengaturan
di luar nama file terakhir yang ada. Oleh karena itu, penyesuaian manual dari -l seharusnya saja
diperlukan jika Anda mengetahui file segmen WAL yang saat ini tidak ada di
pg_xlog, seperti entri dalam arsip offline; atau jika isi pg_xlog memiliki
telah hilang seluruhnya.
· Tidak ada cara yang sebanding dengan mudah untuk menentukan OID berikutnya yang melampaui yang terbesar
dalam database, tetapi untungnya tidak penting untuk mendapatkan pengaturan OID berikutnya dengan benar.
· Epoch ID transaksi sebenarnya tidak disimpan di mana pun di database kecuali di
bidang yang ditentukan oleh pg_resetxlog, jadi nilai apa pun akan berfungsi sejauh database
sendiri prihatin. Anda mungkin perlu menyesuaikan nilai ini untuk memastikan bahwa replikasi
sistem seperti Slony-I dan Skytools bekerja dengan benar — jika demikian, nilai yang sesuai
harus dapat diperoleh dari keadaan basis data yang direplikasi di hilir.
The -n (tidak ada operasi) opsi menginstruksikan pg_resetxlog untuk mencetak nilai yang direkonstruksi dari
pg_control dan nilai akan diubah, lalu keluar tanpa mengubah apa pun. Ini
terutama alat debugging, tetapi dapat berguna sebagai pemeriksaan kewarasan sebelum mengizinkan
pg_resetxlog untuk melanjutkan secara nyata.
The -V dan --Versi: kapan opsi cetak versi pg_resetxlog dan keluar. Pilihannya -? dan
--membantu tampilkan argumen yang didukung, dan keluar.
CATATAN
Perintah ini tidak boleh digunakan saat server sedang berjalan. pg_resetxlog akan menolak
mulai jika menemukan file kunci server di direktori data. Jika server rusak maka
file kunci mungkin tertinggal; dalam hal ini Anda dapat menghapus file kunci ke
mengizinkan pg_resetxlog untuk berlari. Tetapi sebelum Anda melakukannya, pastikan dua kali lipat bahwa tidak ada
proses server masih hidup.
Gunakan pg_resetxlog online menggunakan layanan onworks.net
