Praktik terbaik untuk mengimpor dan mengekspor data

Halaman ini memberikan praktik terbaik untuk mengimpor dan mengekspor data dengan Cloud SQL. Untuk petunjuk langkah demi langkah mengimpor data ke Cloud SQL, lihat Mengimpor Data. Untuk mengetahui petunjuk langkah demi langkah untuk mengekspor data Anda, baik di Cloud SQL atau instance yang Anda kelola, lihat Mengekspor Data.

Praktik terbaik untuk mengimpor dan mengekspor

Berikut ini adalah praktik terbaik yang perlu dipertimbangkan saat mengimpor dan mengekspor data:

Jangan gunakan bucket Pemohon Membayar Cloud Storage

Anda tidak dapat menggunakan bucket Cloud Storage yang telah mengaktifkan Pemohon Membayar enabled untuk impor dan ekspor dari Cloud SQL.

Meminimalkan dampak performa dari ekspor

Untuk ekspor standar dari Cloud SQL, ekspor dijalankan saat database online. Jika data yang diekspor lebih kecil, dampaknya mungkin akan minimal. Namun, jika ada database besar, atau objek besar, seperti BLOB dalam database, ada kemungkinan bahwa ekspor dapat menurunkan performa database. Hal ini dapat memengaruhi waktu yang diperlukan untuk menjalankan kueri dan operasi database terhadap database. Setelah memulai ekspor, Anda tidak dapat menghentikannya jika database mulai merespons dengan lambat.

Untuk mencegah respons yang lambat selama ekspor, Anda dapat:

  1. melakukan ekspor dari replika baca. Ini mungkin opsi yang bagus jika Anda sering melakukan ekspor (setiap hari atau lebih sering), tetapi jumlah data yang diekspor kecil. Untuk melakukan ekspor dari replika baca, gunakan fungsi ekspor Konsol Google Cloud, gcloud, atau REST API pada instance replika baca Anda. Lihat Membuat replika baca untuk mengetahui informasi selengkapnya tentang cara membuat dan mengelola replika baca.

  2. Gunakan ekspor serverless Dengan ekspor serverless, Cloud SQL membuat instance sementara yang terpisah untuk memindahkan operasi ekspor. Dengan memindahkan operasi ekspor, database pada instance utama dapat terus menyalurkan kueri dan menjalankan operasi dengan tingkat performa yang biasa. Setelah ekspor data selesai, instance sementara akan dihapus secara otomatis. Opsi ini mungkin bagus jika Anda ingin mengekspor satu kali dari database yang besar. Gunakan fungsi ekspor konsol Google Cloud, gcloud, atau REST API, dengan flag offload untuk menjalankan operasi ekspor serverless.

    Selama operasi ekspor tanpa server, Anda dapat menjalankan beberapa operasi lain, seperti pengeditan, impor, dan failover instance. Namun, jika Anda memilih delete, operasi ekspor akan berhenti beberapa saat setelah Anda menghapus instance, dan tidak mengekspor data apa pun.

    Lihat tabel berikut untuk mempelajari operasi yang dapat diblokir saat operasi ekspor tanpa server sedang berjalan:
    Operasi saat ini Operasi baru Diblokir?
    Semua operasi Ekspor serverless Ya
    Ekspor serverless Operasi apa pun kecuali ekspor tanpa server Tidak
    Operasi apa pun kecuali ekspor tanpa server Operasi apa pun kecuali ekspor tanpa server Ya

    Ekspor tanpa server memerlukan waktu lebih lama daripada ekspor standar, karena pembuatan instance sementara memerlukan waktu. Waktu yang diperlukan setidaknya lebih dari lima menit, tetapi untuk database yang lebih besar, waktu yang diperlukan mungkin lebih lama. Pertimbangkan dampaknya terhadap waktu, performa, dan biaya sebelum menentukan jenis ekspor yang akan digunakan.

menggunakan flag yang benar saat Anda membuat file dump SQL

Jika Anda tidak menggunakan prosedur yang tepat saat mengekspor data ke file dump SQL, impor Anda mungkin gagal. Untuk mengetahui informasi tentang cara membuat file dump SQL untuk diimpor ke Cloud SQL, lihat Mengekspor data.

Kompresi data untuk mengurangi biaya

Cloud SQL mendukung pengimporan dan pengeksporan file terkompresi dan yang tidak dikompresi. Kompresi dapat menghemat ruang penyimpanan yang signifikan di Cloud Storage dan mengurangi biaya penyimpanan, terutama saat Anda mengekspor instance berukuran besar.

Saat Anda mengekspor file dump SQL atau CSV, gunakan ekstensi file .gz untuk mengompresi data. Saat Anda mengimpor file dengan ekstensi .gz, file tersebut akan didekompresi secara otomatis.

Mengurangi proses impor dan ekspor yang berjalan lama

Proses impor ke Cloud SQL dan ekspor dari Cloud SQL dapat memerlukan waktu lama, bergantung pada ukuran data yang diproses. Hal ini dapat menimbulkan dampak berikut:

  • Operasi instance Cloud SQL yang sudah berjalan lama tidak dapat dihentikan.
  • Satu operasi impor atau ekspor hanya dapat dijalankan dalam satu waktu untuk setiap instance, dan impor atau ekspor yang berjalan lama akan memblokir operasi lain seperti pencadangan otomatis harian. Ekspor serverless memungkinkan untuk menjalankan operasi lain, termasuk mengedit instance, mengimpor, failover, dan berhenti memblokir cadangan otomatis harian.

Durasi waktu yang diperlukan untuk menyelesaikan setiap operasi dapat dikurangi menggunakan fungsi impor atau ekspor Cloud SQL dengan batch data lebih kecil.

Ekspor dapat dilakukan dari replika baca atau menggunakan ekspor serverless untuk meminimalisir dampak terhadap performa database dan memungkinkan operasi lain berjalan pada instance saat ekspor berlangsung.

Untuk tips lainnya, lihat Mendiagnosis Masalah dengan Instance Cloud SQL.

Memverifikasi database yang diimpor

Setelah operasi impor selesai, hubungkan ke database Anda dan jalankan perintah database yang sesuai untuk memastikan kontennya sudah benar. Misalnya, hubungkan dan buat daftar database, tabel, dan entri tertentu.

Batasan umum

Untuk daftar batasan umum, lihat Masalah saat mengimpor dan mengekspor data.

Mengotomatiskan operasi ekspor

Meskipun Cloud SQL tidak menyediakan cara bawaan untuk mengotomatiskan ekspor database, Anda dapat membuat alat otomatisasi sendiri menggunakan beberapa komponen Google Cloud. Untuk mempelajari lebih lanjut, lihat tutorial ini.

Pemecahan masalah

Memecahkan masalah operasi impor

Masalah Pemecahan masalah
Pesan error: permission denied for schema public Untuk PostgreSQL versi 15 dan yang lebih baru, jika database target dibuat dari template0, pengimporan data mungkin akan gagal. Untuk mengatasi masalah ini, berikan hak istimewa skema publik kepada pengguna cloudsqlsuperuser dengan menjalankan perintah SQL GRANT ALL ON SCHEMA public TO cloudsqlsuperuser.
HTTP Error 409: Operation failed because another operation was already in progress. Sudah ada operasi yang tertunda untuk instance Anda. Hanya satu operasi yang diizinkan pada satu waktu. Coba permintaan Anda setelah operasi saat ini selesai.
Operasi impor memakan waktu terlalu lama. Terlalu banyak koneksi aktif dapat mengganggu operasi impor.

Tutup operasi yang tidak digunakan. Periksa penggunaan CPU dan memori instance Cloud SQL untuk memastikan ada banyak resource yang tersedia. Cara terbaik untuk memastikan resource maksimum untuk impor adalah dengan memulai ulang instance sebelum memulai operasi.

Mulai ulang:

  • Menutup semua koneksi.
  • Mengakhiri tugas yang mungkin menghabiskan resource.
Operasi impor bisa gagal ketika satu atau beberapa pengguna yang dirujuk dalam file dump tidak ada. Sebelum mengimpor file dump, semua pengguna database yang memiliki objek atau diberi izin pada objek dalam database yang diekspor harus ada di database target. Jika tidak, operasi impor akan gagal membuat ulang objek dengan kepemilikan atau izin asli.

Buat pengguna database sebelum mengimpor.

Setelah mengimpor data, ukuran penggunaan disk data Anda jauh lebih tinggi.

Mungkin terjadi penggunaan disk yang tidak terduga setelah mengimpor data. Penggunaan ini mungkin karena penggunaan pemulihan point-in-time.

Untuk mengatasi hal ini, setelah mengimpor data, nonaktifkan pemulihan point-in-time jika Anda ingin menghapus log dan memulihkan penyimpanan. Perlu diingat bahwa mengurangi penyimpanan yang digunakan tidak akan mengurangi ukuran penyimpanan yang disediakan untuk instance tersebut.

Pesan error: GRANT stderr: ERROR: must be member of role ROLE_NAME

Pesan error ini muncul jika Anda mencoba mengimpor file dump SQL yang diupload di Cloud Storage ke database Cloud SQL, dan tugas impor telah berjalan selama sekitar empat hari.

ROLE_NAME adalah peran database kustom yang ditentukan dalam database PostgreSQL sumber. Pengguna cloudsqlsuperuser default mengimpor file dump SQL. Namun, pengguna ini mungkin tidak termasuk dalam peran ROLE_NAME.

Untuk mengatasi masalah ini, selesaikan beberapa langkah berikut:

  1. Buat peran ROLE_NAME di database tujuan tempat Anda mengimpor file dump SQL.
  2. Jangan gunakan pengguna cloudsqlsuperuser untuk mengimpor file. Sebagai gantinya, di database tujuan, tetapkan pengguna yang merupakan anggota peran ROLE_NAME. Untuk menentukan pengguna, jalankan perintah berikut:

    gcloud sql import sql INSTANCE URI [--async]
    [--database=DATABASE, -d DATABASE] [--user=USER] [GCLOUD_WIDE_FLAG …]

Memecahkan masalah operasi ekspor

Masalah Pemecahan masalah
HTTP Error 409: Operation failed because another operation was already in progress. Sudah ada operasi yang tertunda untuk instance Anda. Hanya satu operasi yang diizinkan pada satu waktu. Coba permintaan Anda setelah operasi saat ini selesai.
HTTP Error 403: The service account does not have the required permissions for the bucket. Pastikan bucket ada dan akun layanan untuk instance Cloud SQL (yang melakukan ekspor) memiliki peran Storage Object Creator (roles/storage.objectCreator) untuk memungkinkan ekspor ke bucket. Lihat Peran IAM untuk Cloud Storage.
Ekspor CSV berhasil, tetapi ekspor SQL gagal. Format CSV dan SQL melakukan ekspor secara berbeda. Format SQL mengekspor seluruh database, dan mungkin memerlukan waktu lebih lama untuk diselesaikan. Format CSV memungkinkan Anda menentukan elemen database yang akan disertakan dalam ekspor.

Gunakan ekspor CSV untuk mengekspor hal yang Anda butuhkan saja.

Ekspor memerlukan waktu terlalu lama. Cloud SQL tidak mendukung operasi sinkron serentak.

Gunakan pengurangan beban ekspor. Pada level yang tinggi, dalam pengurangan beban ekspor, bukannya mengeluarkan ekspor pada instance sumber, melainkan Cloud SQL menjalankan instance pengurangan beban untuk melakukan ekspor. Pengurangan beban ekspor memiliki beberapa keunggulan, termasuk peningkatan performa pada instance sumber dan pemblokiran operasi administratif saat ekspor sedang berjalan. Dengan pengurangan beban ekspor, total latensi dapat meningkat sebesar jumlah waktu yang diperlukan untuk memunculkan instance pengurangan beban. Umumnya, untuk ekspor yang berukuran wajar, latensi tidak signifikan. Namun, jika ekspor Anda cukup kecil, Anda mungkin akan melihat peningkatan latensi.

Error saat Membuat Ekstensi. File dump berisi referensi ke ekstensi yang tidak didukung.

Edit file dump untuk menghapus referensi.

Terjadi error saat menggunakan pg_dumpall. Menggunakan utilitas pg_dumpall dengan flag --global memerlukan peran superuser. Namun, peran ini tidak didukung di Cloud SQL untuk PostgreSQL. Untuk mencegah terjadinya error saat melakukan operasi ekspor yang menyertakan nama pengguna, sebaiknya gunakan juga flag --no-role-passwords.
Waktu operasi ekspor habis sebelum mengekspor apa pun, dan Anda melihat pesan error Could not receive data from client: Connection reset by peer. Jika Cloud Storage tidak menerima data apa pun dalam jangka waktu tertentu, biasanya sekitar tujuh menit, maka koneksi akan direset. Ada kemungkinan bahwa kueri ekspor awal memakan waktu terlalu lama untuk dijalankan.

Lakukan ekspor manual menggunakan alat pg_dump.

Anda ingin ekspor dilakukan secara otomatis. Cloud SQL tidak menyediakan cara untuk mengotomatiskan ekspor.

Anda dapat mem-build sistem ekspor otomatis Anda sendiri menggunakan produk Google Cloud seperti Cloud Scheduler, Pub/Sub, dan Cloud Functions, mirip dengan artikel ini tentang mengotomatiskan cadangan.

Langkah selanjutnya