Saya berharap saya bisa mendapatkan jawaban yang jelas tentang cara memastikan mengambil cadangan Postgres lengkap seperti yang Anda dapatkan dengan MS SQL Server, dan kemudian mengurus pengguna yatim.
Dari apa yang saya baca, dan bisa saja salah, menemukan blog PostgreSQL yang bagus telah menjadi tantangan, jadi jangan ragu untuk merekomendasikan beberapa kepada saya, saya perlu mencari tahu bagaimana aplikasi ini bekerja sehingga saya dapat memiliki kepercayaan pada backup dan Slony saya. replikasi. Saya meminta pengembang mengembalikan cadangan yang saya ambil dari PgadminIII via custom
,, directory
dan tar
memformat ketika memilih OID
tetapi dia mengatakan dua dari mereka tidak memuat, tar
tetapi hanya direktori, bukan data. Saya benar-benar bingung sekarang.
- Saya menggunakan PGAdminIII, ia memiliki opsi
pg_dump
danpg_dumpall
. Saya ingin mencadangkan semuanya yang harus saya uji untuk memulihkan database ini di suatu tempat dan memverifikasi bahwa ya, semua data yang kami butuhkan dan cadangan kami baik. Akhirnya saya ingin menulis skrip pemulihan otomatis tetapi satu hari setiap kali.
pg_dumpall
tampaknya memiliki -globals
opsi yang seharusnya mencadangkan segalanya, tetapi bantuan untuk pg_dumpall
menunjukkan -g, --globals-only dump only global objects, no databases
, bukan --globals
opsi.
Saya pikir pg_dumpall
setidaknya akan membuat cadangan kunci asing, tetapi bahkan itu tampaknya menjadi 'opsi'. Menurut dokumentasi , bahkan dengan pg_dumpall
saya perlu menggunakan -o
opsi untuk membuat cadangan kunci asing, saya tidak bisa membayangkan ketika saya tidak ingin membuat cadangan kunci asing dan ini akan lebih masuk akal sebagai opsi default.
- Bagaimana saya merawat pengguna yatim dan memvalidasi saya memiliki segalanya? Saya benar-benar ingin mengembalikan file cadangan saya di server lain dan memverifikasi semuanya berfungsi. Jika ada yang punya saran tentang cara mengambil cadangan nyata di PostgreSQL dan memulihkan, saya akan sangat berterima kasih.
Saya memiliki server PostgreSQL tetapi saya masih belum dapat memahami mengapa aplikasi tidak akan mencadangkan OID
secara default! Sepertinya 99,9% dari waktu yang Anda inginkan itu.
PEMBARUAN 1:
Dokumentasi Postgres menyebutkan bahwa globals
opsi yang saya cari tampaknya menjadi opsi default pada versi ini, tetapi masih membutuhkan -o
opsi. Jika seseorang dapat memverifikasi atau memberi saya contoh perintah untuk memulihkan satu database di tempat lain dengan semua yang dibutuhkan, saya akan menghargainya.
Sunting: ditanya oleh situs untuk menunjukkan keunikan pertanyaan ini dengan mengedit pertanyaan saya. Pertanyaan ini menimbulkan masalah dan mendapatkan kejelasan tentang OID dalam cadangan, perbedaan antara global dan non global, serta pengujian mengembalikan rekomendasi untuk memastikan cadangan itu baik, bukan hanya cadangan. Karena jawaban yang saya dapat backup, mencari global / oids, dan memulai proses tes pemulihan setiap malam di Postgres menggunakan pekerjaan cron. Terima kasih untuk bantuannya!
sumber
Jawaban:
Anda dapat membuang seluruh cluster PostgreSQL dengan pg_dumpall. Itu semua database dan semua global untuk satu cluster. Dari baris perintah di server, saya akan melakukan sesuatu seperti ini. (Tambang mendengarkan pada port 5433, bukan pada port default.) Anda mungkin atau mungkin tidak memerlukan opsi --clean.
Ini termasuk global - informasi tentang pengguna dan grup, tablespace, dan sebagainya.
Jika saya akan membuat cadangan satu database dan memindahkannya ke server awal , saya akan membuang database dengan pg_dump, dan membuang global dengan
pg_dumpall --globals-only
, ataupg_dumpall --roles-only
(jika Anda hanya membutuhkan peran)seperti ini.
Keluaran hanyalah file teks.
Setelah Anda memindahkan file-file ini ke server yang berbeda, muat global terlebih dahulu, lalu buang database.
Tidak, referensi itu mengatakan "Gunakan opsi ini jika aplikasi Anda mereferensikan kolom OID dengan cara tertentu (misalnya, dalam batasan kunci asing). Jika tidak, opsi ini tidak boleh digunakan." (Penekanan ditambahkan.) Saya pikir aplikasi Anda tidak mereferensikan kolom OID. Anda tidak perlu menggunakan opsi ini untuk "membuat cadangan kunci asing". (Baca file dump di editor atau penampil file Anda.)
sumber
psql -U postgres -h localhost -p 5433 sandbox < sandbox.sql
pg_dumpall
, versi 9.5, tidak bekerja dengan benar denganNULL
nilai - nilai saat menggunakanCOPY
. Saya mendapatkan banyak kesalahan seperti ini:psql:/tmp/dumpall.sql:4133559: invalid command \N psql:/tmp/dumpall.sql:4133560: invalid command \.
Ketika mengimpor kembali ke Postgres 10 menggunakanpsql -f /tmp/dumpall.sql