pg_dump adalah alat pencadangan logis yang disediakan oleh PolarDB for PostgreSQL (Kompatibel dengan Oracle). Alat ini digunakan untuk mencadangkan database dalam kluster ke dalam file skrip atau file arsip.
Informasi latar belakang
pg_dump digunakan untuk mencadangkan satu database. Meskipun database sedang diakses, cadangan konsisten dibuat untuk data yang diakses. Proses pencadangan tidak menghalangi pengguna lain membaca atau menulis ke database. Untuk informasi lebih lanjut, lihat pg_dump.
Alat pg_dump di PolarTools berbeda dari yang ada di Komunitas PostgreSQL. Alat pg_dump di PolarTools disesuaikan untuk PolarDB for PostgreSQL (Kompatibel dengan Oracle). Pengecualian yang tidak diketahui dapat terjadi atau data yang tidak lengkap dapat dicadangkan saat menggunakan alat pg_dump di Komunitas PostgreSQL.
Backup file formats
File Skrip: File teks biasa yang berisi pernyataan SQL untuk mengelola database, termasuk pernyataan SQL untuk membangun kembali dan mencadangkan database.
File Arsip: File yang diperlukan untuk bekerja sama dengan pg_restore guna membangun kembali database.
Format file keluaran adalah sebagai berikut: -Fc, -Fd, dan -Ft dikompresi dalam format tar. Format -Fc adalah format kustom, -Fd adalah format direktori, dan -Ft adalah format arsip. Anda dapat memilih dan menyusun ulang semua file arsip -Fc dan -Fd sesuai proyek. Secara default, file -Fc dan -Fd dikompresi. File arsip -Ft tidak dikompresi, dan Anda tidak dapat menyusun ulang file -Ft saat memulihkan data.
CatatanHanya file -Fd yang mendukung pencadangan paralel.
Anda dapat menggunakan pg_dump dengan file arsip untuk mencadangkan seluruh database. Gunakan pg_restore untuk memeriksa file arsip atau memilih data yang perlu dipulihkan.
Sintaksis
pg_dump [connection-option...] [option...] [dbname]Tabel 1. Parameter
Parameter | Deskripsi |
connection-option | Menentukan opsi baris perintah yang mengontrol parameter yang digunakan untuk terhubung ke database. Untuk informasi lebih lanjut, lihat connection-option. |
option | Menentukan opsi baris perintah yang digunakan untuk mengontrol konten keluaran dan formatnya. Untuk informasi lebih lanjut, lihat option. |
dbname | Menentukan nama database yang ingin Anda cadangkan. |
Tabel 2. connection-option
Opsi baris perintah | Deskripsi |
-d dbname (--dbname=dbname) | Menentukan nama database yang ingin Anda hubungkan. |
-h host (--host=host) | Menentukan nama host komputer yang menjalankan server. Jika nilai ini dimulai dengan garis miring, nilai tersebut digunakan sebagai direktori soket domain UNIX. Nilai default adalah nilai variabel lingkungan PGHOST. |
-p port (--port=port) | Menentukan port TCP atau ekstensi file soket domain UNIX lokal tempat server mendengarkan koneksi. Secara default, nomor port terkandung dalam nilai variabel lingkungan PGPORT. Jika nomor port dalam nilai tersebut tidak digunakan, nilai default dalam program digunakan. |
-U username (--username=username) | Menentukan nama pengguna akun yang digunakan untuk terhubung ke database. |
-w (--no-password) | Menentukan bahwa Anda tidak diminta untuk memasukkan kata sandi saat pg_dump terhubung ke database. |
-W (--password) | Menentukan bahwa Anda diminta untuk memasukkan kata sandi saat pg_dump terhubung ke database. Catatan Opsi ini bersifat opsional. |
--role=rolename | Menentukan nama peran yang digunakan untuk membuat cadangan. |
Tabel 3. option
Opsi baris perintah | Deskripsi |
dbname | Menentukan nama database yang ingin Anda cadangkan. Jika Anda tidak menentukan parameter ini, nilai variabel lingkungan PGDATABASE digunakan. |
-a (--data-only) | Menentukan bahwa hanya data yang dicadangkan. Skema tidak dicadangkan. Catatan Opsi ini menentukan data tabel, blob, dan nilai urutan yang akan dicadangkan. |
-b (--blobs) | Menentukan bahwa blob dicadangkan secara default. Jika Anda menentukan --schema, -table, atau --schema only, blob tidak dicadangkan. Penting Blob dilihat sebagai data. Jika Anda menentukan --data only, data dapat dicadangkan. Jika Anda menentukan --schema only, data tidak dapat dicadangkan. |
-B (--no-blobs) | Menentukan bahwa blob tidak dicadangkan. Catatan Jika baik -b maupun -B ditentukan, blob dicadangkan. |
-c (--clean) | Menentukan bahwa objek database yang ada dihapus sebelum perintah yang digunakan untuk membuat objek database dijalankan. Untuk mencegah kesalahan selama pemulihan, kami sarankan Anda menentukan opsi --if exists. Catatan Opsi ini hanya berlaku untuk file skrip. Anda dapat menentukan opsi ini untuk file arsip saat Anda memanggil pg_restore. |
-C (--create) | Menentukan bahwa perintah dijalankan untuk membuat dan terhubung ke database. Jika Anda menentukan --clean, skrip ini dijalankan untuk menghapus database yang ada, membuat database, dan membangun kembali koneksi ke database. Jika Anda menentukan --create tanpa menentukan --no-acl, komentar, informasi konfigurasi, dan informasi kontrol akses database juga dicadangkan saat sistem mencadangkan data. Catatan Opsi ini hanya berlaku untuk file skrip. Anda dapat menentukan opsi ini untuk file arsip saat Anda memanggil pg_restore. |
-E encoding (--encoding=encoding) | Menentukan bahwa cadangan dibuat menggunakan metode pengkodean karakter yang ditentukan. Secara default, cadangan dibuat menggunakan metode pengkodean karakter database. Anda juga dapat menggunakan nilai variabel lingkungan PGCLIENTENCODING sebagai metode pengkodean untuk cadangan. |
-F format (--format=format) | Menentukan format file cadangan. Nilai default: p. Anda dapat memilih salah satu format berikut:
|
-f file (--file=file) | Menentukan nama file ke mana data cadangan dikirim.
|
-j njobs (--jobs=njobs) | Menentukan jumlah pekerjaan yang digunakan untuk mencadangkan tabel secara paralel. Opsi ini harus digunakan bersama dengan format direktori. Catatan Sebelum sistem mencadangkan tabel secara paralel, Anda harus menghentikan proses DDL dan DML yang digunakan untuk memodifikasi database. |
-n pattern (--schema=pattern) | Menentukan bahwa hanya data yang skemanya cocok dengan nilai pattern yang dicadangkan. Jika opsi ini tidak ditentukan, data yang menggunakan semua skema non-sistem dalam database dicadangkan. Catatan
|
-N pattern (--exclude-schema=pattern) | Menentukan bahwa data yang skemanya tidak cocok dengan nilai pattern dicadangkan. Catatan
|
-o (--oids) | Menentukan bahwa pengenal objek (OID) setiap tabel dicadangkan. Tentukan opsi ini jika aplikasi Anda menggunakan metode untuk mengimpor kolom OID dalam skenario seperti batasan kunci asing. Jika tidak, jangan tentukan opsi ini. |
-O (--no-owner) | Menentukan bahwa kepemilikan objek ditentukan saat sistem mencoba mencocokkan database sumber. Catatan Opsi ini hanya berlaku untuk file skrip. Anda dapat menentukan opsi ini untuk file arsip saat Anda memanggil pg_restore. |
-s (--schema-only) | Menentukan bahwa hanya skema objek yang dicadangkan. Data tidak dicadangkan. |
-S username (--superuser=username) | Menentukan nama superuser yang digunakan untuk menonaktifkan pemicu. Anda dapat menentukan opsi ini saat Anda menggunakan --disable-triggers. |
-t pattern (--table=pattern) | Menentukan bahwa hanya tabel yang skemanya cocok dengan nilai pattern yang dicadangkan. Untuk memilih beberapa tabel, Anda dapat menentukan beberapa opsi -t atau menyetel parameter skema ke wildcard. Catatan Saat Anda menentukan -t, pg_dump tidak mencadangkan objek database lain yang mungkin bergantung pada tabel yang dipilih. Oleh karena itu, tidak dapat dijamin bahwa hasil cadangan skema tertentu dapat dipulihkan dengan sukses ke database kosong. |
-T pattern (--exclude-table=pattern) | Menentukan bahwa tabel yang skemanya cocok dengan nilai pattern tidak dicadangkan. Anda dapat menentukan beberapa opsi -T untuk mengecualikan pencadangan tabel yang cocok dengan skema yang ditentukan. Catatan
|
-v (--verbose) | Menentukan bahwa mode verbose digunakan selama pencadangan. |
-V (--version) | Menentukan bahwa versi pg_dump ditampilkan dan sistem menginstruksikan Anda untuk keluar. |
-x (--no-privileges atau --no-acl) | Menentukan bahwa izin akses untuk file cadangan dicabut, yang setara dengan pernyataan GRANT atau REVOKE. |
-Z 0..9 (--compress=0..9) | Menentukan tingkat kompresi. 0 menentukan bahwa file tidak dikompresi. Catatan
|
--column-inserts and --attribute-inserts | Menentukan bahwa data dicadangkan sebagai perintah INSERT dengan nama kolom eksplisit. |
--disable-dollar-quoting | Menentukan bahwa kutipan dolar untuk isi fungsi dinonaktifkan. |
--disable-triggers | Menentukan bahwa pemicu pada tabel yang diperlukan dinonaktifkan. Opsi ini hanya berlaku saat Anda membuat cadangan data. Saat menggunakan opsi ini, Anda harus menggunakan -S untuk menentukan superuser. Catatan Opsi ini hanya berlaku untuk file skrip. Anda dapat menentukan opsi ini untuk file arsip saat Anda memanggil pg_restore. |
--enable-row-security | Menentukan bahwa hanya beberapa konten dalam tabel yang diizinkan untuk Anda akses yang dapat dicadangkan. Opsi ini hanya berlaku saat konten tabel yang ingin Anda cadangkan adalah keamanan tingkat baris. Penting Untuk menggunakan opsi ini, Anda mungkin juga perlu menggunakan INSERT untuk melakukan pencadangan, karena COPY FROM tidak mendukung keamanan tingkat baris saat sistem memulihkan data. |
--exclude-table-data=pattern | Menentukan bahwa data dalam tabel yang skemanya cocok dengan nilai pattern tidak dicadangkan. Anda dapat menentukan beberapa opsi --exclude-table-data untuk mencegah tabel yang cocok dengan skema tertentu dicadangkan. Catatan Untuk informasi lebih lanjut tentang cara mencegah semua data tabel dalam database dicadangkan, lihat --schema only. |
--if-exists | Menentukan bahwa perintah bersyarat seperti klausa IF EXISTS digunakan untuk membersihkan objek database. Saat Anda menentukan opsi ini, Anda juga harus menentukan --clean agar konfigurasi berlaku. |
--inserts | Menentukan bahwa data dicadangkan sebagai perintah INSERT. Penting Setelah Anda menentukan opsi ini, data mungkin gagal disusun ulang saat sistem memulihkan data. Kami sarankan Anda menggunakan --column-inserts. |
--load-via-partition-root | Menentukan bahwa perintah COPY atau INSERT dijalankan saat sistem mencadangkan data dalam partisi tabel. Catatan Saat Anda memulihkan file arsip yang dibuat menggunakan opsi ini, kami sarankan Anda berhati-hati saat melakukan pencadangan paralel. |
--lock-wait-timeout=timeout | Menentukan waktu tunggu yang digunakan untuk mendapatkan kunci bersama. |
--no-comments | Menentukan bahwa komentar tidak dicadangkan. |
--no-publications | Menentukan bahwa publikasi tidak dicadangkan. |
--no-security-labels | Menentukan bahwa label keamanan tidak dicadangkan. |
--no-subscriptions | Menentukan bahwa informasi langganan tidak dicadangkan. |
--no-sync | Menentukan bahwa pg_dump segera mengembalikan data. Anda tidak perlu menunggu semua file ditulis secara aman ke disk. |
--no-synchronized-snapshots | Menentukan bahwa pg_dump -j dapat dijalankan di server. |
--no-tablespaces | Menentukan bahwa semua objek dibuat di ruang tabel default. Catatan Opsi ini hanya berlaku untuk file skrip. Anda dapat menentukan opsi ini untuk file arsip saat Anda memanggil pg_restore. |
--no-unlogged-table-data | Menentukan bahwa konten tabel yang tidak tercatat tidak dicadangkan. |
--quote-all-identifiers | Menentukan bahwa sistem secara paksa mengutip semua pengenal. |
--rows-per-insert=nrows | Menentukan jumlah maksimum baris untuk setiap perintah INSERT saat database dicadangkan sebagai perintah INSERT. |
--section=sectionname | Menentukan bahwa hanya data yang ditentukan oleh section yang dicadangkan. Nama section dapat berupa pre-data, data, atau post-data. Anda dapat menentukan beberapa opsi section. Secara default, data yang ditentukan oleh semua opsi section dicadangkan. Catatan
|
--serializable-deferrable | Menentukan bahwa transaksi serializable digunakan untuk pencadangan. Catatan
|
--snapshot=snapshotname | Menentukan bahwa snapshot sinkronisasi yang ditentukan digunakan saat sistem mencadangkan database. |
--strict-names | Menentukan bahwa setiap skema yang ditentukan oleh -n/--schema dan setiap kualifikasi tabel yang ditentukan oleh -t/--table digunakan untuk mencocokkan setidaknya satu skema dan tabel dalam database sumber. Catatan
|
--use-set-session-authorization | Menentukan bahwa pernyataan SQL standar SET SESSION AUTHORIZATION alih-alih ALTER OWNER dihasilkan. |
-? (--help) | Menentukan bahwa informasi bantuan alat pg_dump ditampilkan. |
Catatan
Jika Anda menentukan opsi -a untuk mencadangkan hanya data dan menentukan --disable triggers untuk menonaktifkan pemicu pada tabel, pg_dump mengeluarkan perintah untuk menonaktifkan pemicu sebelum menyisipkan data. Setelah data dimasukkan, pg_dump mengeluarkan perintah untuk mengaktifkan pemicu. Jika pemulihan terganggu, katalog sistem mungkin tetap dalam keadaan error.
Setelah file cadangan dipulihkan, jalankan ANALYZE untuk memastikan kinerja optimal.
Saat pg_dump mencadangkan informasi langganan replikasi logis, pg_dump menghasilkan CREATE SUBSCRIPTION dengan opsi connect=false. Jika host yang terlibat telah berubah, informasi koneksi mungkin harus diubah. Mungkin juga tepat untuk memotong tabel yang diperlukan sebelum tugas salinan tabel penuh baru dimulai.
pg_dump secara internal mengeksekusi pernyataan SELECT. Jika terjadi kesalahan saat menjalankan pg_dump, pastikan Anda dapat memilih informasi dari database menggunakan alat seperti psql. Selain itu, pastikan bahwa pengaturan koneksi default dan variabel lingkungan yang digunakan oleh pustaka frontend libpq benar.
Aktivitas database pg_dump biasanya dikumpulkan oleh pengumpul statistik. Jika ini tidak diinginkan, gunakan PGOPTIONS atau ALTER USER untuk mengatur track_counts ke false.
Contoh
Jalankan perintah berikut untuk mencadangkan database bernama mydb ke file skrip SQL:
pg_dump mydb > db.sqlJalankan perintah berikut untuk memuat skrip SQL ke database baru bernama newdb:
psql -d newdb -f db.sqlJalankan perintah berikut untuk mencadangkan database ke file arsip dalam format kustom:
pg_dump -Fc mydb > db.dumpJalankan perintah berikut untuk mencadangkan database ke file arsip dalam format direktori:
pg_dump -Fd mydb -f dumpdirJalankan perintah berikut untuk mencadangkan database ke file arsip dalam format direktori secara paralel menggunakan lima pekerjaan:
pg_dump -Fd mydb -j 5 -f dumpdirJalankan perintah berikut untuk memuat ulang file arsip ke database baru bernama newdb:
pg_restore -d newdb db.dumpJalankan perintah berikut untuk memuat ulang file arsip ke database yang sama dari mana file tersebut dicadangkan dan menghapus konten saat ini dari database tersebut:
pg_restore -d postgres --clean --create db.dumpJalankan perintah berikut untuk mencadangkan satu tabel bernama mytab:
pg_dump -t mytab mydb > db.sqlJalankan perintah berikut untuk mencadangkan semua tabel yang namanya dimulai dengan emp dalam skema
detroit. Tabel bernamaemployee_logtidak dicadangkan.pg_dump -t 'detroit.emp*' -T detroit.employee_log mydb > db.sqlJalankan perintah berikut untuk mencadangkan tabel yang nama skemanya dimulai dengan east atau west dan diakhiri dengan gsm. Tabel yang nama skemanya adalah test tidak dicadangkan.
pg_dump -n 'east*gsm' -n 'west*gsm' -N '*test*' mydb > db.sqlJalankan perintah berikut untuk menggunakan notasi ekspresi reguler guna mengonsolidasikan sakelar:
pg_dump -n '(east|west)*gsm' -N '*test*' mydb > db.sqlJalankan perintah berikut untuk mencadangkan semua objek database kecuali tabel yang namanya dimulai dengan ts_:
pg_dump -T 'ts_*' mydb > db.sqlUntuk menentukan nama huruf besar atau campuran dalam -t dan sakelar terkait, Anda perlu mengapit nama tersebut dalam tanda kutip ganda ("). Jika tidak, nama tersebut dilipat menjadi huruf kecil. Namun, tanda kutip ganda (") digunakan secara berbeda dalam perintah Shell. Oleh karena itu, nama tersebut harus dikutip secara bergantian. Untuk mencadangkan satu tabel yang namanya mengandung huruf besar dan kecil, jalankan perintah berikut:
pg_dump -t "\"MixedCaseName\"" mydb > mytab.sql