Ini ialah arahan pg_resetxlog yang boleh dijalankan dalam penyedia pengehosan percuma OnWorks menggunakan salah satu daripada berbilang stesen kerja dalam talian percuma kami seperti Ubuntu Online, Fedora Online, emulator dalam talian Windows atau emulator dalam talian MAC OS.
JADUAL:
NAMA
pg_resetxlog - tetapkan semula log tulis ke hadapan dan maklumat kawalan lain bagi PostgreSQL
kluster pangkalan data
SINOPSIS
pg_resetxlog [-c xid,xid] [-f] [-n] [-o dengar] [-x xid] [-e xid_epoch] [-m mxid,mxid]
[-O mxoff] [-l xlogfile] {[-D] Datadir}
DESCRIPTION
pg_resetxlog mengosongkan log tulis ke hadapan (WAL) dan secara pilihan menetapkan semula beberapa kawalan lain
maklumat yang disimpan dalam fail pg_control. Fungsi ini kadangkala diperlukan jika ini
fail telah menjadi rosak. Ia harus digunakan hanya sebagai pilihan terakhir, apabila pelayan akan
tidak bermula kerana rasuah tersebut.
Selepas menjalankan arahan ini, mungkin untuk memulakan pelayan, tetapi perlu diingat
bahawa pangkalan data mungkin mengandungi data yang tidak konsisten disebabkan oleh urus niaga yang komited separa.
Anda harus segera membuang data anda, jalankan initdb, dan muat semula. Selepas muat semula, semak untuk
ketidakkonsistenan dan pembaikan mengikut keperluan.
Utiliti ini hanya boleh dijalankan oleh pengguna yang memasang pelayan, kerana ia memerlukan
akses baca/tulis ke direktori data. Atas sebab keselamatan, anda mesti menyatakan data
direktori pada baris arahan. pg_resetxlog tidak menggunakan pembolehubah persekitaran PGDATA.
If pg_resetxlog mengadu bahawa ia tidak dapat menentukan data yang sah untuk pg_control, anda boleh
memaksanya untuk meneruskan juga dengan menyatakan -f (paksa) pilihan. Dalam kes ini munasabah
nilai akan digantikan untuk data yang hilang. Kebanyakan bidang boleh dijangka
padanan, tetapi bantuan manual mungkin diperlukan untuk OID seterusnya, ID transaksi seterusnya dan
zaman, ID dan offset berbilang transaksi seterusnya, dan medan alamat permulaan WAL. Medan ini
boleh ditetapkan menggunakan pilihan yang dibincangkan di bawah. Jika anda tidak dapat menentukan betul
nilai untuk semua bidang ini, -f masih boleh digunakan, tetapi pangkalan data yang dipulihkan mestilah
diperlakukan dengan lebih syak wasangka daripada biasa: pembuangan segera dan tambah nilai adalah penting.
Do tidak laksanakan sebarang operasi pengubahsuaian data dalam pangkalan data sebelum anda membuang, seperti mana-mana
tindakan mungkin akan memburukkan lagi rasuah.
. -o, -x, -e, -m, -O, -c and -l pilihan membenarkan OID seterusnya, ID transaksi seterusnya, seterusnya
zaman ID transaksi, ID multitransaksi seterusnya dan tertua, offset multitransaksi seterusnya,
ID urus niaga tertua dan terbaharu yang mana masa komitmen boleh diambil, dan WAL
nilai alamat permulaan untuk ditetapkan secara manual. Ini hanya diperlukan apabila pg_resetxlog is
tidak dapat menentukan nilai yang sesuai dengan membaca pg_control. Nilai selamat boleh
ditentukan seperti berikut:
· Nilai selamat untuk ID transaksi seterusnya (-x) boleh ditentukan dengan mencari
nama fail terbesar secara berangka dalam direktori pg_clog di bawah direktori data,
menambah satu, dan kemudian mendarab dengan 1048576. Ambil perhatian bahawa nama fail berada dalam
perenambelasan. Ia biasanya paling mudah untuk menentukan nilai pilihan dalam perenambelasan juga. Untuk
contoh, jika 0011 ialah entri terbesar dalam pg_clog, -x 0x1200000 akan berfungsi (lima
sifar mengekor memberikan pengganda yang betul).
· Nilai selamat untuk ID multitransaksi seterusnya (bahagian pertama -m) boleh ditentukan oleh
mencari nama fail terbesar secara berangka dalam direktori pg_multixact/offsets
di bawah direktori data, menambah satu, dan kemudian mendarab dengan 65536. Sebaliknya, a
nilai selamat untuk ID multitransaksi tertua (bahagian kedua daripada -m) boleh ditentukan oleh
mencari nama fail terkecil secara berangka dalam direktori yang sama dan mendarab
oleh 65536. Seperti di atas, nama fail adalah dalam perenambelasan, jadi cara paling mudah untuk melakukan ini
adalah untuk menentukan nilai pilihan dalam perenambelasan dan menambah empat sifar.
· Nilai selamat untuk offset multitransaksi seterusnya (-O) boleh ditentukan dengan melihat
untuk nama fail terbesar secara berangka dalam direktori pg_multixact/members di bawah
direktori data, menambah satu, dan kemudian mendarab dengan 52352. Seperti di atas, nama fail
berada dalam heksadesimal. Tidak ada resipi mudah seperti yang disertakan di atas
sifar.
· Nilai selamat untuk ID transaksi tertua yang masa komit boleh diambil semula
(bahagian pertama daripada -c) boleh ditentukan dengan mencari nama fail terkecil secara berangka
dalam direktori pg_commit_ts di bawah direktori data. Sebaliknya, nilai selamat untuk
ID transaksi terbaharu yang mana masa komit boleh diambil (bahagian kedua daripada
-c) boleh ditentukan dengan mencari nama fail terbesar secara berangka dalam fail yang sama
direktori. Seperti di atas, nama fail adalah dalam perenambelasan.
· Alamat permulaan WAL (-l) hendaklah lebih besar daripada mana-mana nama fail segmen WAL
kini wujud dalam direktori pg_xlog di bawah direktori data. Nama-nama ini adalah
juga dalam perenambelasan dan mempunyai tiga bahagian. Bahagian pertama ialah "ID garis masa" dan
selalunya harus disimpan sama. Sebagai contoh, jika 00000001000000320000004A ialah
entri terbesar dalam pg_xlog, gunakan -l 00000001000000320000004B atau lebih tinggi.
Nota
pg_resetxlog sendiri melihat fail dalam pg_xlog dan memilih lalai -l menetapkan
melebihi nama fail sedia ada yang terakhir. Oleh itu, pelarasan manual bagi -l semestinya sahaja
diperlukan jika anda mengetahui fail segmen WAL yang tidak terdapat pada masa ini
pg_xlog, seperti entri dalam arkib luar talian; atau jika kandungan pg_xlog mempunyai
telah hilang sepenuhnya.
· Tidak ada cara yang setanding mudah untuk menentukan OID seterusnya yang melebihi OID terbesar
dalam pangkalan data, tetapi mujurlah tidak penting untuk mendapatkan tetapan OID seterusnya dengan betul.
· Epok ID transaksi sebenarnya tidak disimpan di mana-mana dalam pangkalan data kecuali dalam
medan yang ditetapkan oleh pg_resetxlog, jadi sebarang nilai akan berfungsi setakat pangkalan data
sendiri prihatin. Anda mungkin perlu melaraskan nilai ini untuk memastikan replikasi itu
sistem seperti Slony-I dan Skytools berfungsi dengan betul — jika ya, nilai yang sesuai
seharusnya boleh diperolehi daripada keadaan pangkalan data replika hiliran.
. -n (tiada operasi) arahan pilihan pg_resetxlog untuk mencetak nilai yang dibina semula daripada
pg_control dan nilai yang akan diubah, dan kemudian keluar tanpa mengubah suai apa-apa. ini
adalah terutamanya alat penyahpepijatan, tetapi boleh berguna sebagai pemeriksaan kewarasan sebelum membenarkannya
pg_resetxlog untuk meneruskan secara nyata.
. -V and --versi pilihan mencetak versi pg_resetxlog dan keluar. Pilihan -? and
- membantu tunjukkan hujah yang disokong, dan keluar.
NOTA
Perintah ini tidak boleh digunakan semasa pelayan sedang berjalan. pg_resetxlog akan menolak
mulakan jika ia menemui fail kunci pelayan dalam direktori data. Jika pelayan itu ranap
fail kunci mungkin telah ditinggalkan; dalam kes itu anda boleh mengalih keluar fail kunci ke
membenarkan pg_resetxlog untuk berlari. Tetapi sebelum anda berbuat demikian, pastikan dua kali ganda bahawa tidak ada
proses pelayan masih hidup.
Gunakan pg_resetxlog dalam talian menggunakan perkhidmatan onworks.net