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
- Meminimalkan dampak performa dari ekspor
- menggunakan flag yang benar saat Anda membuat file dump SQL
- Kompresi data untuk mengurangi biaya.
- Mengurangi proses impor dan ekspor yang berjalan lama
- Memverifikasi database yang diimpor
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:
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.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 flagoffload
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
Lihat tabel berikut untuk mempelajari operasi yang dapat diblokir saat operasi ekspor tanpa server sedang berjalan:delete
, operasi ekspor akan berhenti beberapa saat setelah Anda menghapus instance, dan tidak mengekspor data apa pun.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:
|
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 Untuk mengatasi masalah ini, selesaikan beberapa langkah berikut:
|
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. |
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 |
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 fungsi Cloud Run, mirip dengan artikel ini tentang mengotomatiskan cadangan. |
Langkah selanjutnya
- Pelajari cara mengimpor dan mengekspor data menggunakan file dump PG.
- Pelajari cara mengimpor dan mengekspor data menggunakan file CSV.
- Pelajari cara mengaktifkan pencadangan otomatis.
- Pelajari cara memulihkan dari cadangan.