全部产品
Search
文档中心

PolarDB:pg_dump

更新时间:Jul 02, 2025

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.

Catatan

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.

    Catatan

    Hanya 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:

  • p(plain): File skrip dihasilkan.

  • c (custom): File arsip dalam format kustom yang dapat digunakan sebagai input konten pg_restore dihasilkan. Secara default, file arsip dalam format ini dikompresi.

  • d (directory): File arsip dalam format direktori yang dapat digunakan sebagai input konten pg_restore dihasilkan. Secara default, file arsip dalam format ini dikompresi. Selain itu, format ini mendukung pencadangan paralel.

  • t (tar): File arsip dalam format tar yang dapat digunakan sebagai input konten pg_restore dihasilkan. File arsip dalam format tar tidak dapat dikompresi. Selain itu, saat Anda menggunakan format tar, Anda tidak dapat memodifikasi urutan relatif item data tabel saat sistem memulihkan data.

-f file (--file=file)

Menentukan nama file ke mana data cadangan dikirim.

  • Parameter ini diperlukan jika pencadangan dilakukan menggunakan format direktori dan direktori yang diperlukan bukan file yang ditentukan.

  • Parameter ini opsional jika pencadangan dilakukan menggunakan format file lain. Secara default, format file standar digunakan untuk pencadangan.

-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
  • Jika Anda menentukan -n, pg_dump tidak mencadangkan objek database yang mungkin bergantung pada skema yang ditentukan. Oleh karena itu, tidak dapat dijamin bahwa hasil cadangan skema tertentu dapat dipulihkan dengan sukses ke database kosong.

  • Jika Anda menentukan -n, pg_dump tidak mencadangkan data seperti blob yang skemanya tidak cocok dengan skema yang ditentukan. Untuk mencadangkan blob, Anda dapat menambahkan opsi baris perintah --blobs selama pencadangan.

-N pattern (--exclude-schema=pattern)

Menentukan bahwa data yang skemanya tidak cocok dengan nilai pattern dicadangkan.

Catatan
  • Jika Anda menentukan baik -n maupun -N, data yang skemanya cocok setidaknya dengan satu skema yang ditentukan oleh -n dicadangkan tetapi data yang skemanya cocok dengan skema yang ditentukan oleh -N tidak dicadangkan.

  • Jika Anda hanya menentukan -N, data yang skemanya cocok dengan skema yang ditentukan oleh -N tidak dicadangkan.

-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
  • Jika Anda menentukan baik -t maupun -T, tabel yang skemanya cocok setidaknya dengan satu nilai -t dicadangkan tetapi tabel yang skemanya cocok dengan nilai -T tidak dicadangkan.

  • Jika Anda hanya menentukan -T, tabel yang skemanya cocok dengan nilai -T tidak dicadangkan.

-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
  • Untuk file arsip kustom, segmen data tabel tunggal dikompresi. Secara default, tingkat kompresi sedang digunakan.

  • Secara default, file skrip tidak dikompresi. Jika Anda mengatur tingkat kompresi ke nilai selain 0, seluruh file keluaran dikompresi.

--column-inserts and --attribute-inserts

Menentukan bahwa data dicadangkan sebagai perintah INSERT dengan nama kolom eksplisit.

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

--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
  • Opsi data menentukan data tabel aktual, blob, dan nilai urutan.

  • Opsi post-data menentukan indeks, pemicu, dan definisi aturan serta batasan. Batasan check yang divalidasi tidak ditentukan.

  • Opsi pre-data menentukan semua item definisi data lainnya.

--serializable-deferrable

Menentukan bahwa transaksi serializable digunakan untuk pencadangan.

Catatan
  • Jika transaksi baca dan tulis dalam keadaan aktif saat Anda menggunakan pg_dump, sistem mulai mencadangkan data setelah periode waktu tertunda yang tidak ditentukan.

  • Jika transaksi baca dan tulis tidak dalam keadaan aktif saat Anda menggunakan pg_dump, opsi ini tidak membuat perbedaan.

--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
  • Jika tidak ada skema atau tabel yang cocok, pg_dump mengembalikan kesalahan meskipun --strict-names tidak ditentukan.

  • Opsi ini tidak berdampak pada -N/--exclude schema, -T/--exclude table, atau --exclude table data.

  • Pola pengecualian yang gagal mencocokkan objek apa pun tidak dianggap sebagai kesalahan.

--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.sql
  • Jalankan perintah berikut untuk memuat skrip SQL ke database baru bernama newdb:

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

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

    pg_dump -Fd mydb -f dumpdir
  • Jalankan perintah berikut untuk mencadangkan database ke file arsip dalam format direktori secara paralel menggunakan lima pekerjaan:

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

    pg_restore -d newdb db.dump
  • Jalankan 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.dump
  • Jalankan perintah berikut untuk mencadangkan satu tabel bernama mytab:

    pg_dump -t mytab mydb > db.sql
  • Jalankan perintah berikut untuk mencadangkan semua tabel yang namanya dimulai dengan emp dalam skema detroit. Tabel bernama employee_log tidak dicadangkan.

    pg_dump -t 'detroit.emp*' -T detroit.employee_log mydb > db.sql
  • Jalankan 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.sql
  • Jalankan perintah berikut untuk menggunakan notasi ekspresi reguler guna mengonsolidasikan sakelar:

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

    pg_dump -T 'ts_*' mydb > db.sql
  • Untuk 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