Halaman ini menjelaskan cara mengekspor dan mengimpor data ke instance Cloud SQL menggunakan pg_dump, pg_dumpall, dan pg_restore.
Sebelum memulai
Ekspor menggunakan resource database, tetapi tidak mengganggu operasi database normal, kecuali jika penyediaan instance kurang lengkap.
Untuk praktik terbaik, lihat Praktik Terbaik untuk Mengimpor dan Mengekspor Data.
Setelah menyelesaikan operasi impor, memverifikasi hasilnya.
Pelajari utilitas pg_dump
, pg_dumpall
, dan pg_restore
lebih lanjut.
Mengekspor data dari Cloud SQL untuk PostgreSQL
Anda dapat menggunakan Cloud SQL untuk melakukan ekspor dari Google Cloud Console, gcloud CLI, atau API.
- Untuk mengekspor satu database PostgreSQL, gunakan utilitas
pg_dump
. - Untuk mengekspor semua database PostgreSQL dari cluster, gunakan utilitas
pg_dumpall
.
Saat menggunakan salah satu utilitas, pastikan Anda juga menggunakan opsi yang diperlukan guna memastikan bahwa file ekspor yang dihasilkan valid untuk diimpor kembali ke Cloud SQL.
Mengekspor data dari server PostgreSQL lokal menggunakan pg_dump
Untuk mengekspor database yang tidak dikelola oleh Cloud SQL, untuk diimpor nanti
ke Cloud SQL, gunakan utilitas pg_dump
dengan flag
berikut:
--no-owner
Perintah perubahan kepemilikan tidak boleh disertakan dalam file dump.
--format
Format
custom
dandirectory
diizinkan jika file dump ini dimaksudkan untuk digunakan denganpg_restore
.Untuk format
plain-text
, ekspor keSQL dump file
sebagai gantinya. Format ini tidak kompatibel denganpg_restore
, dan harus diimpor menggunakan perintah impor konsol Google Cloud atau klienpsql
.--no-acl
Flag ini diperlukan jika dump Anda akan berisi pernyataan untuk memberikan atau mencabut keanggotaan dalam peran
SUPERUSER
.--clean
Flag opsional ini memungkinkan Anda menyertakan pernyataan SQL
DROP <object>
yang diperlukan untuk menghapus (membersihkan) objek database sebelum mengimpornya.--if-exists
Flag opsional ini memungkinkan Anda menyertakan pernyataan SQL
IF EXISTS
dengan setiap pernyataanDROP
yang dihasilkan oleh flagclean
.
Selain itu, Anda harus menghapus semua hal berikut:
- Pernyataan terkait ekstensi, jika Cloud SQL tidak mendukung ekstensi tersebut. Lihat Ekstensi PostgreSQL untuk daftar ekstensi yang didukung.
- Pernyataan
CREATE EXTENSION
atauDROP EXTENSION
yang merujuk plpgsql. Ekstensi ini sudah diinstal sebelumnya pada instance Postgres Cloud SQL. - Laporan
COMMENT ON EXTENSION
.
Pastikan encoding default, sebagaimana ditentukan oleh setelan database,
sudah benar untuk data Anda. Jika diperlukan, Anda dapat mengganti default dengan flag
--encoding
.
Ekspor data menggunakan format custom
dari Cloud SQL untuk PostgreSQL
Untuk menggunakan format kustom, jalankan pg_dump
dari command line:
pg_dump \ -U USERNAME \ --format=custom \ --no-owner \ --no-acl \ DATABASE_NAME > DATABASE_NAME.dmp
Mengekspor data dari beberapa file secara paralel dari Cloud SQL untuk PostgreSQL
Anda hanya dapat menggunakan format output directory
untuk mengekspor data dari beberapa file secara paralel.
Untuk mengekspor secara paralel, gunakan flag -j NUM_CORES
.
NUM_CORES adalah jumlah core pada instance sumber.
Mengekspor semua database
pg_dumpall
adalah
utilitas yang memungkinkan Anda mengekstrak semua database PostgreSQL dari sebuah cluster ke dalam
satu file skrip. File ini memiliki perintah SQL yang dapat Anda gunakan untuk memulihkan
database.
Untuk mengekspor semua database PostgreSQL di instance Cloud SQL, gunakan
utilitas pg_dumpall
dengan flag wajib berikut:
exclude-database=cloudsqladmin
exclude-database=template*
Utilitas pg_dumpall
tidak memiliki akses ke database cloudsqladmin
atau
template
.
Untuk mengekspor semua database PostgreSQL, jalankan perintah berikut:
pg_dumpall \ -h HOST_NAME -l DATABASE_NAME –exclude-database=cloudsqladmin \ –exclude-database=template* > pg_dumpall.sql
Untuk melihat sandi peran saat membuang peran dengan pg_dumpall
, tetapkan
flag cloudsql.pg_authid_select_role
ke nama peran PostgreSQL. Jika ada,
berarti peran tersebut memiliki akses hanya baca (SELECT
) ke tabel pg_authid
. Tabel ini
berisi sandi peran.
Impor
Gunakan utilitas pg_restore
untuk mengimpor arsip ke
database Cloud SQL. pg_restore
hanya berfungsi dengan arsip
yang dibuat oleh pg_dump dalam
format custom
atau directory
.
Pelajari lebih lanjut
pg_restore
.
Mengimpor dari file dump yang dibuat dengan format custom
ke Cloud SQL untuk PostgreSQL
Jika file dump dibuat dengan format kustom, jalankan perintah berikut:
pg_restore \ --list DATABASE_NAME.dmp | sed -E 's/(.* EXTENSION )/; \1/g' > DATABASE_NAME.toc
Pasca-pemrosesan dari sed
akan mengomentari semua laporan ekstensi
dalam file dump SQL.
Saat mengimpor menggunakan pg_restore
, tentukan daftar isi yang diproses dengan
argumen command line "--use-list=DATABASE_NAME.toc".
Mengimpor data dari beberapa file secara paralel ke Cloud SQL untuk PostgreSQL
Anda dapat mengimpor data dari beberapa file secara paralel hanya untuk arsip yang dibuat menggunakan format output directory
dan
custom
.
Untuk mengimpor secara paralel, gunakan flag -j NUM_CORES
.
NUM_CORES adalah jumlah core pada instance tujuan.
Mengimpor performa di Cloud SQL untuk PostgreSQL
Langkah selanjutnya
- Pelajari cara memeriksa status operasi impor dan ekspor.
- Pelajari lebih lanjut praktik terbaik untuk mengimpor dan mengekspor data.
- Pelajari utilitas pg_dump PostgreSQL lebih lanjut.
- Masalah umum untuk impor dan ekspor.