All Products
Search
Document Center

PolarDB:pg_dump

Last Updated:Aug 28, 2026

pg_dump adalah alat backup logis yang disediakan oleh PolarDB for PostgreSQL (Compatible with Oracle). Anda dapat menggunakannya untuk mencadangkan satu database dalam sebuah kluster ke dalam file skrip atau arsip lainnya.

Pendahuluan

pg_dump digunakan untuk mencadangkan satu database. Alat ini menghasilkan backup konsisten meskipun database sedang aktif, tanpa memblokir akses pengguna lain (baik untuk membaca maupun menulis). Untuk informasi lebih lanjut, lihat situs web resmi pg_dump.

Catatan

Alat pg_dump dalam PolarTools berbeda dari versi komunitas. Versi PolarTools telah disesuaikan untuk PolarDB for PostgreSQL (Compatible with Oracle). Penggunaan versi komunitas pg_dump dapat menyebabkan error tak terduga atau backup data yang tidak lengkap.

Format file backup

  • File skrip: File skrip adalah file teks biasa yang berisi perintah SQL untuk memulihkan database ke kondisinya pada saat backup dilakukan.

  • archive file: archive file harus dipulihkan dengan pg_restore.

    Format output file mencakup format custom -Fc, format direktori -Fd, dan format arsip tar -Ft. Format -Fc dan -Fd memungkinkan pemilihan dan pengaturan ulang semua item yang diarsipkan serta dikompresi secara default. Format -Ft tidak dikompresi dan tidak mendukung pengubahan urutan saat memulihkan data.

    Catatan

    Format direktori adalah satu-satunya format yang mendukung parallel backup.

    Ketika digunakan dengan salah satu format arsip, pg_dump dapat mencadangkan seluruh database. Anda dapat menggunakan pg_restore untuk memeriksa arsip atau memilih bagian tertentu dari database yang akan dipulihkan.

Sintaks

pg_dump [connection-option...] [option...] [dbname]

Tabel 1. Parameter

Parameter

Deskripsi

connection-option

Opsi baris perintah yang mengontrol parameter koneksi database. Untuk detailnya, lihat Opsi koneksi.

option

Opsi baris perintah yang mengontrol konten dan format keluaran. Untuk detail, lihat Opsi Dump.

dbname

Nama database yang akan dibackup.

Tabel 2. Opsi koneksi

Opsi baris perintah

Deskripsi

-d dbname atau --dbname=dbname

Menentukan nama database yang akan dihubungi.

-h host atau --host=host

Menentukan hostname komputer tempat server berjalan. Jika nilai ini dimulai dengan garis miring, nilai tersebut digunakan sebagai direktori untuk socket domain UNIX. Nilai default-nya adalah variabel lingkungan PGHOST.

-p port atau --port=port

Menentukan port TCP atau ekstensi file socket domain UNIX lokal tempat server mendengarkan koneksi. Nilai default diambil dari variabel lingkungan PGPORT, atau nilai default bawaan digunakan jika variabel ini tidak diatur.

-U username atau --username=username

Username yang digunakan untuk koneksi.

-w adalah alias untuk --no-password

Tidak pernah menampilkan prompt password.

-W adalah bentuk singkat dari --password.

Memaksa pg_dump untuk meminta password sebelum menghubungkan ke database.

Catatan

Opsi ini bersifat opsional.

--role=rolename

Menentukan nama role yang digunakan untuk membuat backup.

Tabel 3. Opsi dump

Opsi baris perintah

Deskripsi

dbname

Nama database yang akan dibackup. Jika tidak ditentukan, variabel lingkungan PGDATABASE akan digunakan.

-a adalah alias untuk --data-only

Hanya melakukan backup data, bukan schema (definisi data).

Catatan

Opsi ini melakukan backup data tabel, blob, dan nilai sequence.

-b adalah alias untuk --blobs

Blob secara default disertakan dalam backup. Ketika opsi --schema, --table, atau --schema only ditentukan, blob tidak disertakan dalam backup.

Penting

Karena blob dianggap sebagai data, blob disertakan dalam backup jika Anda menggunakan opsi --data-only, tetapi dikecualikan jika Anda menggunakan opsi --schema-only.

-B adalah alias untuk --no-blobs

Mengecualikan blob dari backup.

Catatan

Jika kedua opsi -b dan -B ditentukan, backup akan menyertakan blob.

-c adalah alias untuk --clean

Menghapus objek database sebelum menjalankan perintah untuk membuatnya. Untuk menghindari pesan error saat memulihkan database, kami menyarankan Anda menentukan opsi --if exists.

Catatan

Opsi ini hanya berlaku untuk file skrip. Untuk file arsip, Anda dapat menentukan opsi ini saat memanggil pg_restore.

-C atau --create

Membuat database dan terhubung kembali ke database yang baru dibuat. Jika opsi --clean ditentukan, skrip akan menghapus dan membuat ulang database target, lalu terhubung kembali ke database tersebut.

Jika opsi --create ditentukan dan opsi --no-acl tidak ditentukan, data backup mencakup komentar, informasi konfigurasi, dan hak akses database.

Catatan

Opsi ini hanya berlaku untuk file skrip. Untuk file arsip, Anda dapat menentukan opsi ini saat memanggil pg_restore.

-E encoding atau --encoding=encoding

Membuat backup menggunakan pengkodean karakter yang ditentukan. Secara default, backup dibuat menggunakan pengkodean karakter dari database yang ingin Anda backup. Anda juga dapat mengatur nilai variabel lingkungan PGCLIENTENCODING ke pengkodean backup yang diinginkan.

-F format atau --format=format

Menentukan format output. Format yang tersedia adalah sebagai berikut:

  • p atau plain: Menghasilkan file skrip (default).

  • c, custom: Menghasilkan file arsip format custom yang cocok sebagai input untuk pg_restore. Secara default, file arsip dalam format ini dikompresi.

  • d (directory): Menghasilkan file arsip dalam format direktori, yang cocok sebagai input untuk pg_restore. Secara default, file arsip dalam format ini dikompresi dan mendukung backup paralel.

  • t atau tar: Menghasilkan file arsip format tar yang cocok sebagai input untuk pg_restore. Format tar tidak mendukung kompresi. Selain itu, ketika menggunakan format tar, urutan relatif item data tabel tidak dapat diubah selama pemulihan.

-f file atau --file=file

Mengirimkan output ke file yang ditentukan.

  • Untuk format direktori, parameter ini wajib ditentukan dan menunjukkan direktori tujuan, bukan file.

  • Untuk format berbasis file lainnya, jika parameter ini dihilangkan, output dikirim ke standard output.

-j njobs atau --jobs=njobs

Opsi ini menjalankan backup secara paralel dengan melakukan backup njobs tabel secara simultan dan harus digunakan dengan format direktori.

Catatan

Sebelum memulai backup paralel, hentikan proses yang memodifikasi database, seperti proses yang melibatkan DDL dan DML.

-n pattern adalah bentuk singkat dari --schema=pattern.

Hanya melakukan backup schema yang sesuai dengan pola. Jika opsi ini tidak ditentukan, semua schema non-sistem dalam database target akan dibackup.

Catatan
  • Ketika Anda menentukan -n, pg_dump tidak melakukan backup objek database lain yang mungkin menjadi dependensi dari schema yang dipilih. Oleh karena itu, pemulihan sukses dari schema tertentu ke database kosong tidak dijamin.

  • Ketika Anda menentukan -n, pg_dump tidak melakukan backup data untuk objek non-schema, seperti Blob. Untuk melakukan backup data ini, sertakan opsi baris perintah --blobs.

-N pattern adalah alias untuk --exclude-schema=pattern

Membackup schema selain yang sesuai dengan pola.

Catatan
  • Jika -n dan -N ditentukan bersamaan, backup akan mencocokkan setidaknya satu schema -n tetapi tidak mencocokkan schema -N,

  • Jika hanya -N yang ditentukan, schema yang sesuai dengan -N dikecualikan dari backup.

-o atau --oids

Membackup object identifier (OID) sebagai bagian dari data untuk setiap tabel. Gunakan opsi ini jika aplikasi Anda mereferensikan kolom OID, misalnya dalam kendala kunci asing. Jika tidak, jangan gunakan opsi ini.

-O adalah bentuk singkat dari --no-owner

Tidak menyertakan perintah untuk mengatur kepemilikan objek agar sesuai dengan database aslinya.

Catatan

Opsi ini hanya berlaku untuk file skrip. Untuk file arsip, Anda dapat menentukan opsi ini saat memanggil pg_restore.

-s adalah bentuk singkat dari --schema-only

Hanya melakukan backup definisi objek (schema), bukan data.

-S username sama dengan --superuser=username

Username superuser yang digunakan saat menonaktifkan pemicu. Opsi ini hanya digunakan bersama dengan --disable-triggers.

-t pattern, atau --table=pattern

Hanya melakukan backup tabel yang sesuai dengan pola. Anda dapat memilih beberapa tabel dengan menentukan opsi -t beberapa kali atau menggunakan wildcard dalam pola.

Catatan

Ketika Anda menentukan -t, pg_dump tidak mencoba melakukan backup objek database lain yang mungkin menjadi dependensi dari tabel yang dipilih. Oleh karena itu, tidak ada jaminan bahwa backup tabel tertentu dapat dipulihkan secara sukses ke database kosong.

-T pattern adalah alias untuk --exclude-table=pattern

Tidak melakukan backup tabel yang sesuai dengan pola. Anda dapat menentukan opsi -T beberapa kali untuk mengecualikan tabel yang sesuai dengan beberapa pola.

Catatan
  • Ketika kedua opsi -t dan -T ditentukan, backup mencakup tabel yang sesuai dengan setidaknya satu -t tetapi tidak sesuai dengan -T.

  • Jika hanya -T yang ditentukan, tabel yang sesuai dengan -T dikecualikan dari backup.

-v atau --verbose

Menentukan mode verbose.

-V adalah alias untuk --version

Menampilkan versi pg_dump dan keluar.

-x adalah alias untuk --no-privileges atau --no-acl

Mencegah backup hak akses (perintah grant/revoke).

-Z 0..9 sama dengan --compress=0..9

Menentukan tingkat kompresi yang digunakan. Nilai 0 berarti tanpa kompresi.

Catatan
  • Untuk arsip format custom, ini menentukan kompresi segmen data tabel individual, dan default-nya adalah kompresi pada tingkat sedang.

  • Untuk file skrip, default-nya adalah tanpa kompresi. Menentukan tingkat kompresi bukan nol akan mengompresi seluruh file output.

--column-inserts and --attribute-inserts

Membackup data sebagai perintah INSERT dengan nama kolom eksplisit.

INSERT INTO table (column, ...) VALUES ...

--disable-dollar-quoting

Menonaktifkan penggunaan dollar quoting untuk isi fungsi.

--disable-triggers

Sementara menonaktifkan pemicu pada tabel target. Opsi ini hanya efektif saat membuat backup data. Saat menggunakan opsi ini, Anda harus menentukan superuser dengan menggunakan -S.

Catatan

Opsi ini hanya berlaku untuk file skrip. Untuk file arsip, Anda dapat menentukan opsi ini saat memanggil pg_restore.

--enable-row-security

Hanya melakukan backup bagian tabel yang memiliki izin akses. Opsi ini hanya efektif saat melakukan backup konten tabel yang memiliki row-level security diaktifkan.

Penting

Jika Anda menggunakan opsi ini, Anda mungkin juga perlu menggunakan INSERT untuk membuat backup karena COPY FROM tidak mendukung row-level security selama pemulihan data.

--exclude-table-data=pattern

Tidak melakukan backup data tabel yang sesuai dengan pola. Anda dapat menentukan --exclude-table-data beberapa kali untuk mengecualikan tabel yang sesuai dengan beberapa pola.

Catatan

Untuk mengecualikan data dari semua tabel dalam database, lihat --schema only.

--if-exists

Menggunakan perintah kondisional, seperti menambahkan klausa IF EXISTS, untuk membersihkan objek database. Anda juga harus menentukan opsi --clean, jika tidak opsi ini tidak berpengaruh.

--inserts

Membackup data sebagai perintah INSERT.

Penting

Jika Anda menggunakan opsi ini, pengubahan urutan data selama pemulihan dapat menyebabkan operasi gagal. Kami menyarankan menggunakan --column-inserts .

--load-via-partition-root

Menggunakan perintah COPY atau INSERT untuk membackup data dari partisi tabel.

Catatan

Gunakan pemulihan paralel dengan hati-hati saat memulihkan file arsip yang dibuat dengan opsi ini.

--lock-wait-timeout=timeout

Menentukan waktu tunggu untuk mendapatkan shared lock.

--no-comments

Tidak melakukan backup komentar.

--no-publications

Tidak mencadangkan publikasi.

--no-security-labels

Tidak melakukan backup security label.

--no-subscriptions

Tidak melakukan backup subscription.

--no-sync

Kembali tanpa menunggu semua file ditulis ke disk secara aman.

--no-synchronized-snapshots

Menunjukkan bahwa Anda dapat menjalankan pg_dump -j di server.

--no-tablespaces

Membuat semua objek di tablespace default.

Catatan

Opsi ini hanya berlaku untuk file skrip. Untuk file arsip, Anda dapat menentukan opsi ini saat memanggil pg_restore.

--no-unlogged-table-data

Tidak melakukan backup konten tabel unlogged.

--quote-all-identifiers

Memaksa pengutipan semua identifier.

--rows-per-insert=nrows

Mengontrol jumlah maksimum baris per pernyataan INSERT dalam backup database.

--section=sectionname

Menentukan bahwa hanya bagian yang ditentukan yang akan dibackup. Nama bagian dapat berupa pre-data, data, atau post-data. Anda dapat menentukan opsi ini beberapa kali untuk memilih beberapa bagian. Secara default, semua bagian dibackup.

Catatan
  • Item data berisi data tabel aktual, konten objek besar, dan nilai sequence.

  • post-data mencakup definisi indeks, pemicu, aturan, dan kendala, tetapi tidak termasuk kendala check yang belum divalidasi.

  • pre-data mencakup semua item definisi data lainnya.

--serializable-deferrable

Menggunakan transaksi serializable untuk backup.

Catatan
  • Jika transaksi read-write aktif saat pg_dump dimulai, backup mungkin tertunda dalam waktu yang tidak dapat ditentukan.

  • Opsi ini tidak berpengaruh jika tidak ada transaksi read-write yang aktif saat pg_dump dimulai.

--snapshot=snapshotname

Menggunakan snapshot tersinkronisasi yang ditentukan saat melakukan backup database.

--strict-names

Mengharuskan setiap pola schema (-n atau --schema) dan tabel (-t atau --table) mencocokkan setidaknya satu schema atau tabel dalam database sumber.

Catatan
  • Jika tidak ditemukan kecocokan untuk kualifikasi schema dan tabel, pg_dump menghasilkan error bahkan tanpa --strict-names.

  • Opsi ini tidak berlaku untuk -N/--exclude schema, -T/--exclude table, atau --exclude table data.

  • Pola pengecualian yang tidak cocok dengan objek apa pun tidak dianggap sebagai error.

--use-set-session-authorization

Menghasilkan perintah standar SQL SET SESSION AUTHORIZATION alih-alih perintah ALTER OWNER.

-? atau --help

Menampilkan bantuan untuk argumen baris perintah pg_dump lalu keluar.

Catatan penggunaan

  • Jika Anda memilih tabel yang hanya digunakan untuk backup data dan menggunakan opsi --disable-triggers, pg_dump mengeluarkan perintah untuk menonaktifkan pemicu tabel pengguna sebelum memasukkan data dan mengaktifkannya kembali setelah data dimasukkan. Jika proses pemulihan terganggu, katalog sistem mungkin tertinggal dalam kondisi yang tidak konsisten.

  • Setelah file backup dipulihkan, Anda dapat menjalankan perintah ANALYZE untuk memastikan kinerja optimal.

  • Saat mencadangkan langganan replikasi logis, pg_dump menghasilkan perintah CREATE SUBSCRIPTION dengan opsi connect=false. Jika host berubah, Anda mungkin perlu memperbarui informasi koneksi, dan sebaiknya memotong tabel target sebelum memulai salinan tabel penuh baru.

  • Karena pg_dump secara internal menjalankan pernyataan SELECT, jika Anda mengalami masalah saat menjalankannya, pastikan Anda dapat mengkueri informasi dari database menggunakan alat seperti psql. Selain itu, pastikan semua pengaturan koneksi default dan variabel lingkungan yang digunakan oleh pustaka frontend libpq berfungsi dengan benar.

  • Pengumpul statistik biasanya mencatat aktivitas database selama eksekusi pg_dump, tetapi jika hal ini tidak diperlukan, Anda dapat menggunakan perintah PGOPTIONS atau ALTER USER untuk mengatur parameter track_counts menjadi false.

Contoh

  • Jalankan perintah berikut untuk mencadangkan database bernama mydb ke file skrip SQL:

    pg_dump mydb > db.sql
  • Jalankan perintah berikut untuk memuat ulang skrip SQL ke database baru bernama newdb:

    psql -d newdb -f db.sql
  • Jalankan perintah berikut untuk mencadangkan database ke file arsip format custom:

    pg_dump -Fc mydb > db.dump
  • Jalankan perintah berikut untuk mencadangkan sebuah database ke dalam format direktori file arsip:

    pg_dump -Fd mydb -f dumpdir
  • Jalankan perintah berikut untuk mencadangkan database secara paralel dengan 5 job pekerja ke file arsip format direktori:

    pg_dump -Fd mydb -j 5 -f dumpdir
  • Jalankan perintah berikut untuk memulihkan file arsip ke database baru bernama newdb:

    pg_restore -d newdb db.dump
  • Jalankan perintah berikut untuk memulihkan file arsip ke database asal tempat backup diambil, dengan membersihkan konten saat ini dari database tersebut:

    pg_restore -d postgres --clean --create db.dump
  • Jalankan perintah berikut untuk mencadangkan satu tabel bernama mytab:

    pg_dump -t mytab mydb > db.sql
  • Jalankan perintah berikut untuk mencadangkan semua tabel dalam schema detroit yang namanya diawali dengan emp, kecuali tabel bernama employee_log:

    pg_dump -t 'detroit.emp*' -T detroit.employee_log mydb > db.sql
  • Jalankan perintah berikut untuk mencadangkan semua schema yang namanya diawali dengan east atau west dan diakhiri dengan gsm (tidak termasuk schema yang namanya mengandung test):

    pg_dump -n 'east*gsm' -n 'west*gsm' -N '*test*' mydb > db.sql
  • Perintah berikut menggunakan ekspresi reguler untuk mencapai hasil yang sama secara lebih ringkas:

    pg_dump -n '(east|west)*gsm' -N '*test*' mydb > db.sql
  • Jalankan perintah berikut untuk mencadangkan semua objek database kecuali tabel yang namanya diawali dengan ts_:

    pg_dump -T 'ts_*' mydb > db.sql
  • Jika Anda perlu menentukan nama dengan huruf kapital atau campuran dalam opsi -t dan opsi terkait lainnya, Anda harus membungkus nama tersebut dalam tanda kutip ganda. Jika tidak, nama tersebut akan diubah menjadi huruf kecil. Namun, tanda kutip ganda merupakan karakter khusus untuk shell, sehingga Anda juga harus meng-escape-nya. Oleh karena itu, untuk mencadangkan satu tabel dengan nama campuran, jalankan perintah berikut:

    pg_dump -t "\"MixedCaseName\"" mydb > mytab.sql