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
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:
|
| 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
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
- Mengimpor data menggunakan file dump.
- Mengekspor data menggunakan file dump.
- Mengimpor data menggunakan file CSV.
- Mengekspor data menggunakan file CSV.
- Mengimpor data menggunakan file SQL.
- Mengekspor data menggunakan file SQL.
- Aktifkan pencadangan otomatis.
- Memulihkan dari cadangan.