Praktik terbaik untuk mengimpor dan mengekspor data

Saat mengimpor dan mengekspor data ke AlloyDB untuk PostgreSQL, pertimbangkan praktik terbaik berikut:

  • Jangan gunakan bucket Pemohon Membayar Cloud Storage untuk impor atau ekspor.
  • Gunakan flag yang benar saat Anda membuat file dump SQL.
  • Kompresi data untuk mengurangi biaya.
  • Kurangi proses impor dan ekspor yang berjalan lama dengan memproses data dalam batch.
  • Verifikasi database yang diimpor setelah impor.

Jangan gunakan bucket Pemohon Membayar Cloud Storage

Anda tidak dapat menggunakan bucket Cloud Storage yang telah mengaktifkan Pemohon Membayar untuk impor ke atau ekspor dari AlloyDB. AlloyDB menggunakan akun layanan yang dikelola Google, Agen Layanan, untuk melakukan impor dan ekspor. Agen ini umumnya tidak memiliki konteks atau konfigurasi untuk menagih project pemohon atas akses data, yang menyebabkan operasi yang melibatkan bucket Requester Pays gagal.

Gunakan flag yang benar saat Anda membuat file dump SQL

Jika Anda tidak menggunakan flag dan opsi yang benar saat mengekspor data ke file dump SQL, impor Anda mungkin gagal. Untuk mengetahui informasi tentang mengekspor data untuk diimpor ke AlloyDB, lihat Mengekspor file DMP dan Mengekspor file SQL.

Kompresi data untuk mengurangi biaya

AlloyDB mendukung pengimporan dan pengeksporan file .gz terkompresi dari Cloud Storage. Kompresi dapat menghemat ruang penyimpanan yang signifikan di Cloud Storage dan mengurangi biaya penyimpanan, terutama saat Anda mengekspor data dalam jumlah besar. Saat Anda mengekspor file dump SQL atau CSV menggunakan AlloyDB API, gunakan ekstensi file .gz di URI tujuan untuk mengompresi data. Saat Anda mengimpor file dengan ekstensi .gz, file tersebut akan didekompresi secara otomatis.

Mengurangi proses impor dan ekspor yang berjalan lama

Bergantung pada ukuran data Anda, impor ke dan ekspor dari AlloyDB dapat memakan waktu lama hingga selesai. Jika operasi membutuhkan waktu terlalu lama, operasi tersebut dapat memblokir operasi lain.

Kurangi waktu untuk menyelesaikan setiap operasi dengan menggunakan batch data yang lebih kecil. Anda juga dapat menggunakan alat pg_dump untuk melakukan ekspor manual dari klien yang terhubung ke instance kumpulan baca.

Memverifikasi database yang diimpor

Setelah operasi impor selesai, hubungkan ke database Anda menggunakan psql atau klien lain, dan jalankan perintah yang sesuai untuk memastikan kontennya sudah benar, seperti mencantumkan tabel atau membuat kueri jumlah baris.

Mengotomatiskan operasi ekspor

Meskipun AlloyDB tidak menyediakan metode bawaan untuk mengotomatiskan ekspor, Anda dapat membuat alat otomatisasi menggunakan komponenGoogle Cloud lain seperti Cloud Scheduler, Pub/Sub, dan fungsi Cloud Run.

Pemecahan masalah

Bagian ini memberikan saran perbaikan untuk masalah yang mungkin Anda alami terkait operasi impor dan ekspor.

Operasi impor

Masalah Deskripsi Perbaikan yang direkomendasikan
ERROR: permission denied for schema public Untuk PostgreSQL 15 dan yang lebih baru, pengimporan data mungkin gagal karena izin skema jika Anda membuat database target dari template0.

Untuk mengatasinya, gunakan perintah berikut untuk memberikan hak istimewa pada skema public kepada pengguna yang mengimpor data:

        GRANT ALL ON SCHEMA public TO my_import_user;
        
Operasi impor memakan waktu terlalu lama. Terlalu banyak koneksi aktif dapat mengganggu operasi impor.

Coba langkah berikut untuk mengatasinya:

  • Tutup koneksi yang tidak digunakan.
  • Untuk memastikan ketersediaan resource yang memadai, periksa penggunaan CPU dan memori instance Anda.
  • Untuk memastikan resource maksimum untuk impor, mulai ulang instance sebelum Anda memulai operasi. Tindakan ini akan menutup semua koneksi dan mengakhiri tugas yang mungkin menghabiskan resource.
Operasi impor gagal karena satu atau beberapa pengguna yang dirujuk dalam file dump tidak ada. Sebelum Anda mengimpor file dump, semua pengguna database yang memiliki objek atau menerima izin pada objek dalam database yang diekspor harus ada di database target. Jika tidak ada, operasi impor gagal membuat ulang objek dengan kepemilikan atau izin asli. Buat pengguna database yang diperlukan sebelum mengimpor.
GRANT stderr: ERROR: must be member of role ROLE_NAME Error ini dapat terjadi jika Anda mengimpor file dump SQL yang berisi objek yang dimiliki oleh ROLE_NAME, atau izin yang diberikan kepada ROLE_NAME, tetapi pengguna database yang melakukan impor bukan anggota ROLE_NAME. Untuk mengatasi hal ini, pastikan peran ROLE_NAME ada di database tujuan, dan berikan keanggotaan di ROLE_NAME kepada pengguna yang melakukan impor sebelum menjalankan impor.

Operasi ekspor

Masalah Deskripsi Perbaikan yang direkomendasikan
HTTP Error 403: The service account does not have the required permissions for the bucket. Akun layanan AlloyDB tidak memiliki izin yang diperlukan untuk bucket tujuan. Pastikan bucket Cloud Storage tujuan ada dan akun layanan AlloyDB diberi peran roles/storage.objectAdmin atau roles/storage.objectCreator. Peran ini memungkinkannya menulis ke bucket. Lihat Peran Identity and Access Management (IAM) untuk Cloud Storage.
Ekspor CSV berhasil, tetapi ekspor SQL gagal. Format CSV dan SQL melakukan ekspor secara berbeda. Format SQL mengekspor skema dan data database, dan biasanya memerlukan waktu lebih lama. Format CSV hanya mengekspor data yang dihasilkan dari kueri SELECT yang Anda berikan. Jika ekspor SQL gagal atau terlalu lambat, pertimbangkan untuk mengekspor tabel satu per satu menggunakan CSV.
Ekspor memerlukan waktu terlalu lama. Jika ekspor memerlukan waktu terlalu lama di instance utama, ekspor mungkin terlalu besar. Pertimbangkan untuk mengekspor data dalam batch yang lebih kecil. Misalnya, ekspor tabel satu per satu, bukan mengekspor seluruh database dalam satu operasi. Anda juga dapat menggunakan alat pg_dump untuk melakukan ekspor manual dari klien yang terhubung ke instance kumpulan baca.
Error Create Extension di log pg_restore atau impor gagal. File dump berisi referensi ke ekstensi PostgreSQL yang tidak didukung AlloyDB, atau yang tidak diinstal di cluster Anda. Untuk menghapus referensi, edit file dump atau instal ekstensi di cluster Anda jika AlloyDB mendukungnya.
Terjadi error saat menggunakan pg_dumpall. Utilitas pg_dumpall dengan tanda seperti --globals-only mungkin memerlukan hak istimewa yang tidak tersedia di AlloyDB.

Untuk mengekspor objek global seperti pengguna dan peran tanpa sandi, gunakan perintah berikut untuk menyertakan flag --no-role-passwords:

        pg_dumpall --globals-only --no-role-passwords
        
Waktu operasi ekspor habis atau Anda melihat Connection reset by peer. Jika Cloud Storage tidak menerima data dalam jangka waktu tertentu, koneksi dapat direset. Hal ini dapat terjadi jika kueri database awal yang diperlukan untuk ekspor memerlukan waktu terlalu lama untuk dijalankan. Jika hal ini terjadi, coba lakukan ekspor manual menggunakan alat pg_dump dari klien yang terhubung ke instance kumpulan baca.

Masalah umum

Masalah Deskripsi Perbaikan yang direkomendasikan
HTTP Error 409: Operation failed because another operation was already in progress. Sistem hanya mengizinkan satu operasi impor atau ekspor berbasis API dalam satu waktu. Coba permintaan Anda setelah operasi saat ini selesai.

Langkah berikutnya