Praktik terbaik untuk mengimpor dan mengekspor data

Untuk mengoptimalkan performa, mengurangi biaya penyimpanan, dan mencegah gangguan operasional saat Anda memindahkan data ke dalam atau ke luar AlloyDB untuk PostgreSQL, ikuti 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.
  • Mengurangi proses impor dan ekspor yang berjalan lama dengan memproses data dalam batch.
  • Memverifikasi 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, sehingga menyebabkan operasi yang melibatkan bucket Pemohon Membayar 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 cara 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 yang dikompresi 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, proses impor ke dan ekspor dari AlloyDB dapat memerlukan waktu lama. Jika operasi memakan waktu terlalu lama, operasi tersebut dapat memblokir operasi lain.

Kurangi waktu untuk menyelesaikan setiap operasi 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 komponen Google Cloud lain seperti Cloud Scheduler, Pub/Sub, dan Cloud Run Functions.

Pemecahan masalah

Bagian ini memberikan perbaikan yang disarankan 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 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 resource yang tersedia 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 akan 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 dalam 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 telah 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 diekspor 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 pada 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 flag 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 mungkin 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