Halaman ini menjelaskan cara mengekspor dan mengimpor file ke instance Cloud SQL secara paralel.
Sebelum memulai
Sebelum Anda memulai operasi ekspor atau impor:
- Pastikan database Anda memiliki ruang kosong yang memadai.
- Ikuti praktik terbaik untuk mengekspor dan mengimpor data.
- Setelah menyelesaikan operasi impor, verifikasi hasilnya.
Operasi ekspor dan impor menggunakan resource database, tetapi tidak mengganggu operasi database standar kecuali jika ketersediaan instance kurang.
Mengekspor data dari Cloud SQL untuk PostgreSQL ke beberapa file secara paralel
Bagian berikut berisi informasi tentang cara mengekspor data dari Cloud SQL untuk PostgreSQL ke beberapa file secara paralel.
Peran dan izin yang diperlukan untuk mengekspor data dari Cloud SQL untuk PostgreSQL ke beberapa file secara paralel
Untuk mengekspor data dari Cloud SQL ke Cloud Storage, pengguna yang memulai ekspor harus memiliki salah satu peran berikut:
- Peran Cloud SQL Editor
- Peran khusus,
termasuk izin berikut:
cloudsql.instances.get
cloudsql.instances.export
Selain itu, akun layanan untuk instance Cloud SQL harus memiliki salah satu peran berikut:
- Peran Identity and Access Management (IAM)
storage.objectAdmin
- Peran khusus, termasuk izin berikut:
storage.objects.create
storage.objects.list
(hanya untuk mengekspor file secara paralel)storage.objects.delete
(hanya untuk mengekspor file secara paralel)
Untuk mendapatkan bantuan terkait peran IAM, lihat Identity and Access Management.
Mengekspor data ke beberapa file secara paralel
Anda dapat mengekspor data secara paralel dari beberapa file yang berada di Cloud SQL ke Cloud Storage. Untuk melakukannya, gunakan utilitaspg_dump
dengan opsi --jobs
.
Jika Anda berencana untuk mengimpor data ke Cloud SQL, ikuti petunjuk yang diberikan dalam artikel Mengekspor data dari server database eksternal sehingga file Anda diformat dengan benar untuk Cloud SQL.
gcloud
Untuk mengekspor data dari Cloud SQL ke beberapa file secara paralel, selesaikan langkah-langkah berikut:
- Membuat bucket Cloud Storage.
- Untuk menemukan akun layanan instance Cloud SQL tempat Anda mengekspor file, gunakan perintah
gcloud sql instances describe
.gcloud sql instances describe INSTANCE_NAME
- Untuk memberikan peran IAM
storage.objectAdmin
ke akun layanan, gunakan utilitasgsutil iam
. Untuk mendapatkan bantuan dalam menetapkan izin IAM, lihat Menggunakan izin IAM. - Untuk mengekspor data dari Cloud SQL ke beberapa file secara paralel, gunakan perintah
gcloud sql export sql
:gcloud sql export sql INSTANCE_NAME gs://BUCKET_NAME/BUCKET_PATH/FOLDER_NAME \ --offload \ --parallel \ --threads=THREAD_NUMBER \ --database=DATABASE_NAME \ --table=TABLE_EXPRESSION
Lakukan penggantian berikut:
- INSTANCE_NAME: nama instance Cloud SQL tempat Anda mengekspor file secara paralel.
- BUCKET_NAME: nama bucket Cloud Storage.
- BUCKET_PATH: jalur ke bucket tempat file ekspor disimpan.
- FOLDER_NAME: folder tempat file ekspor disimpan.
- THREAD_NUMBER: jumlah thread yang digunakan Cloud SQL untuk mengekspor file secara paralel. Misalnya, jika Anda ingin mengekspor tiga file sekaligus secara paralel, tetapkan
3
sebagai nilai untuk parameter ini. - DATABASE_NAME: nama database di dalam instance Cloud SQL tempat ekspor dilakukan. Anda hanya boleh menentukan satu database.
- TABLE_EXPRESSION: tabel yang akan diekspor dari database yang ditentukan.
Perintah
export sql
tidak berisi pemicu atau prosedur tersimpan, tetapi berisi tampilan. Untuk mengekspor pemicu atau prosedur tersimpan, gunakan satu thread untuk ekspor. Thread ini menggunakan alatpg_dump
.Setelah ekspor selesai, Anda akan memiliki file di folder di bucket Cloud Storage dalam format direktori
pg_dump
. - Jika Anda tidak memerlukan peran IAM yang ditetapkan di Peran dan izin yang diperlukan untuk mengekspor dari Cloud SQL untuk PostgreSQL, revoke peran tersebut.
Ganti INSTANCE_NAME dengan nama instance Cloud SQL Anda.
Pada output, cari nilai yang terkait dengan kolom serviceAccountEmailAddress
.
REST v1
Untuk mengekspor data dari Cloud SQL ke beberapa file secara paralel, selesaikan langkah-langkah berikut:
-
Membuat bucket Cloud Storage:
Lakukan penggantian berikut:gsutil mb -p PROJECT_NAME -l LOCATION_NAME gs://BUCKET_NAME
- PROJECT_NAME: nama project Google Cloud yang berisi bucket Cloud Storage yang Anda buat.
- LOCATION_NAME: lokasi bucket tempat Anda ingin menyimpan file yang diekspor. Contoh,
us-east1
. - BUCKET_NAME: nama bucket, yang tunduk pada persyaratan penamaan. Misalnya,
my-bucket
.
- Beri instance Anda peran IAM
legacyBucketWriter
untuk bucket Anda. Untuk mendapatkan bantuan terkait penetapan izin IAM, lihat Menggunakan izin IAM. -
Ekspor data dari Cloud SQL ke beberapa file secara paralel:
Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:
- PROJECT_NAME: nama project Google Cloud yang berisi bucket Cloud Storage yang Anda buat.
- INSTANCE_NAME: nama instance Cloud SQL tempat Anda mengekspor file secara paralel.
- BUCKET_NAME: nama bucket Cloud Storage.
- BUCKET_PATH: jalur ke bucket tempat file ekspor disimpan.
- FOLDER_NAME: folder tempat file ekspor disimpan.
- DATABASE_NAME: nama database di dalam instance Cloud SQL tempat ekspor dilakukan. Anda hanya boleh menentukan satu database.
- THREAD_NUMBER: jumlah thread yang digunakan Cloud SQL untuk mengekspor file secara paralel. Misalnya, jika Anda ingin mengekspor tiga file sekaligus secara paralel, tetapkan
3
sebagai nilai untuk parameter ini.
Metode HTTP dan URL:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_NAME/instances/INSTANCE_NAME/export
Meminta isi JSON:
{ "exportContext": { "fileType": "SQL", "uri": "gs://BUCKET_NAME/BUCKET_PATH/FOLDER_NAME", "databases": ["DATABASE_NAME"], "offload": [TRUE|FALSE], "sqlExportOptions": { "parallel": [TRUE|FALSE], "threads": [THREAD_NUMBER] } } }
Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:
Anda akan melihat respons JSON seperti berikut:
- Jika Anda tidak memerlukan peran IAM yang ditetapkan di Peran dan izin yang diperlukan untuk mengekspor dari Cloud SQL untuk PostgreSQL, revoke peran tersebut.
Setelah ekspor selesai, Anda akan memiliki file di folder di bucket Cloud Storage dalam format direktori pg_dump
.
REST v1beta4
Untuk mengekspor data dari Cloud SQL ke beberapa file secara paralel, selesaikan langkah-langkah berikut:
-
Membuat bucket Cloud Storage:
Lakukan penggantian berikut:gsutil mb -p PROJECT_NAME -l LOCATION_NAME gs://BUCKET_NAME
- PROJECT_NAME: nama project Google Cloud yang berisi bucket Cloud Storage yang Anda buat.
- LOCATION_NAME: lokasi bucket tempat Anda ingin menyimpan file yang diekspor. Contoh,
us-east1
. - BUCKET_NAME: nama bucket, yang tunduk pada persyaratan penamaan. Misalnya,
my-bucket
.
- Beri instance Anda peran IAM
storage.objectAdmin
untuk bucket Anda. Untuk mendapatkan bantuan terkait penetapan izin IAM, lihat Menggunakan izin IAM. -
Ekspor data dari Cloud SQL ke beberapa file secara paralel:
Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:
- PROJECT_NAME: nama project Google Cloud yang berisi bucket Cloud Storage yang Anda buat.
- INSTANCE_NAME: nama instance Cloud SQL tempat Anda mengekspor file secara paralel.
- BUCKET_NAME: nama bucket Cloud Storage.
- BUCKET_PATH: jalur ke bucket tempat file ekspor disimpan.
- FOLDER_NAME: folder tempat file ekspor disimpan.
- DATABASE_NAME: nama database di dalam instance Cloud SQL tempat ekspor dilakukan. Anda hanya boleh menentukan satu database.
- THREAD_NUMBER: jumlah thread yang digunakan Cloud SQL untuk mengekspor file secara paralel. Misalnya, jika Anda ingin mengekspor tiga file sekaligus secara paralel, tetapkan
3
sebagai nilai untuk parameter ini.
Metode HTTP dan URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_NAME/instances/INSTANCE_NAME/export
Meminta isi JSON:
{ "exportContext": { "fileType": "SQL", "uri": "gs://BUCKET_NAME/BUCKET_PATH/FOLDER_NAME", "databases": ["DATABASE_NAME"], "offload": [TRUE|FALSE], "sqlExportOptions": { "parallel": [TRUE|FALSE], "threads": [THREAD_NUMBER] } } }
Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:
Anda akan melihat respons JSON seperti berikut:
- Jika Anda tidak memerlukan peran IAM yang ditetapkan di Peran dan izin yang diperlukan untuk mengekspor dari Cloud SQL untuk PostgreSQL, revoke peran tersebut.
Setelah ekspor selesai, Anda akan memiliki file di folder di bucket Cloud Storage dalam format direktori pg_dump
.
Mengimpor data dari beberapa file secara paralel ke Cloud SQL untuk PostgreSQL
Bagian berikut berisi informasi tentang cara mengimpor data dari beberapa file secara paralel dengan Cloud SQL untuk PostgreSQL.
Peran dan izin yang diperlukan untuk mengimpor data dari beberapa file secara paralel dengan Cloud SQL untuk PostgreSQL
Untuk mengimpor data dari Cloud Storage ke Cloud SQL, pengguna yang memulai impor harus memiliki salah satu peran berikut:
- Peran Cloud SQL Editor
- Peran khusus,
termasuk izin berikut:
cloudsql.instances.get
cloudsql.instances.import
Selain itu, akun layanan untuk instance Cloud SQL harus memiliki salah satu peran berikut:
- Peran IAM
storage.objectAdmin
- Peran khusus, termasuk izin berikut:
storage.objects.get
storage.objects.list
(hanya untuk mengimpor file secara paralel)
Untuk mendapatkan bantuan terkait peran IAM, lihat Identity and Access Management.
Mengimpor data ke Cloud SQL untuk PostgreSQL
Anda dapat mengimpor data secara paralel dari beberapa file yang berada di Cloud Storage ke database Anda. Untuk melakukannya, gunakan utilitas pg_restore
dengan opsi --jobs
.
gcloud
Untuk mengimpor data dari beberapa file secara paralel ke Cloud SQL, selesaikan langkah-langkah berikut:
- Buat bucket Cloud Storage.
Upload file ke bucket Anda.
Untuk mendapatkan bantuan terkait cara mengupload file ke bucket, lihat Mengupload objek dari file.
- Untuk menemukan akun layanan instance Cloud SQL tujuan impor file, gunakan perintah
gcloud sql instances describe
.gcloud sql instances describe INSTANCE_NAME
- Untuk memberikan peran IAM
storage.objectAdmin
ke akun layanan, gunakan utilitasgsutil iam
. Untuk mendapatkan bantuan dalam menetapkan izin IAM, lihat Menggunakan izin IAM. - Untuk mengimpor data dari beberapa file secara paralel ke Cloud SQL, gunakan perintah
gcloud sql import sql
:gcloud sql import sql INSTANCE_NAME gs://BUCKET_NAME/BUCKET_PATH/FOLDER_NAME \ --offload \ --parallel \ --threads=THREAD_NUMBER \ --database=DATABASE_NAME
Lakukan penggantian berikut:
- INSTANCE_NAME: nama instance Cloud SQL tempat Anda mengimpor file secara paralel.
- BUCKET_NAME: nama bucket Cloud Storage.
- BUCKET_PATH: jalur ke bucket tempat file impor disimpan.
- FOLDER_NAME: folder tempat file impor disimpan.
- THREAD_NUMBER: jumlah thread yang digunakan Cloud SQL untuk mengimpor file secara paralel. Misalnya, jika Anda ingin mengimpor tiga file sekaligus secara paralel, tentukan
3
sebagai nilai untuk parameter ini. - DATABASE_NAME: nama database di dalam instance Cloud SQL tempat impor dibuat. Anda hanya boleh menentukan satu database.
Jika perintah menampilkan error seperti
ERROR_RDBMS
, tinjau izin; error ini sering kali disebabkan oleh masalah izin. - Jika Anda tidak memerlukan izin IAM yang ditetapkan di Peran dan izin yang diperlukan untuk mengimpor ke Cloud SQL untuk PostgreSQL, gunakan
gsutil iam
untuk menghapusnya.
Ganti INSTANCE_NAME dengan nama instance Cloud SQL Anda.
Pada output, cari nilai yang terkait dengan kolom serviceAccountEmailAddress
.
REST v1
Untuk mengimpor data dari beberapa file secara paralel ke Cloud SQL, selesaikan langkah-langkah berikut:
-
Membuat bucket Cloud Storage:
Lakukan penggantian berikut:gsutil mb -p PROJECT_NAME -l LOCATION_NAME gs://BUCKET_NAME
- PROJECT_NAME: nama project Google Cloud yang berisi bucket Cloud Storage yang Anda buat.
- LOCATION_NAME: lokasi bucket tempat Anda ingin menyimpan file yang diimpor. Contoh,
us-east1
. - BUCKET_NAME: nama bucket, yang tunduk pada persyaratan penamaan. Misalnya,
my-bucket
.
Upload file ke bucket Anda.
Untuk mendapatkan bantuan terkait cara mengupload file ke bucket, lihat Mengupload objek dari file.
- Berikan instance Anda peran IAM
storage.objectAdmin
untuk bucket Anda. Untuk mendapatkan bantuan terkait penetapan izin IAM, lihat Menggunakan izin IAM. Impor data dari beberapa file secara paralel ke Cloud SQL:
Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:
- PROJECT_NAME: nama project Google Cloud yang berisi bucket Cloud Storage yang Anda buat.
- INSTANCE_NAME: nama instance Cloud SQL tempat Anda mengimpor file secara paralel.
- BUCKET_NAME: nama bucket Cloud Storage.
- BUCKET_PATH: jalur ke bucket tempat file impor disimpan.
- FOLDER_NAME: folder tempat file impor disimpan.
- DATABASE_NAME: nama database di dalam instance Cloud SQL tempat impor dibuat. Anda hanya boleh menentukan satu database.
- THREAD_NUMBER: jumlah thread yang digunakan Cloud SQL untuk mengimpor file secara paralel. Misalnya, jika Anda ingin mengimpor tiga file sekaligus secara paralel, tentukan
3
sebagai nilai untuk parameter ini.
Metode HTTP dan URL:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_NAME/instances/INSTANCE_NAME/import
Meminta isi JSON:
{ "importContext": { "fileType": "SQL", "uri": "gs://BUCKET_NAME/BUCKET_PATH/FOLDER_NAME", "databases": ["DATABASE_NAME"], "offload": [TRUE|FALSE], "sqlImportOptions": { "parallel": [TRUE|FALSE], "threads": [THREAD_NUMBER] } } }
Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:
Anda akan melihat respons JSON seperti berikut:
Untuk menggunakan akun pengguna lain untuk impor, tentukan properti
Untuk mengetahui daftar lengkap parameter permintaan, lihat halaman Cloud SQL Admin API.importContext.importUser
.- Jika Anda tidak memerlukan izin IAM yang ditetapkan di Peran dan izin yang diperlukan untuk mengimpor ke Cloud SQL untuk PostgreSQL, gunakan
gsutil iam
untuk menghapusnya.
REST v1beta4
Untuk mengimpor data dari beberapa file secara paralel ke Cloud SQL, selesaikan langkah-langkah berikut:
-
Membuat bucket Cloud Storage:
Lakukan penggantian berikut:gsutil mb -p PROJECT_NAME -l LOCATION_NAME gs://BUCKET_NAME
- PROJECT_NAME: nama project Google Cloud yang berisi bucket Cloud Storage yang Anda buat.
- LOCATION_NAME: lokasi bucket tempat Anda ingin menyimpan file yang diimpor. Contoh,
us-east1
. - BUCKET_NAME: nama bucket, yang tunduk pada persyaratan penamaan. Misalnya,
my-bucket
.
Upload file ke bucket Anda.
Untuk mendapatkan bantuan terkait cara mengupload file ke bucket, lihat Mengupload objek dari file.
- Berikan instance Anda peran IAM
storage.objectAdmin
untuk bucket Anda. Untuk mendapatkan bantuan terkait penetapan izin IAM, lihat Menggunakan izin IAM. Impor data dari beberapa file secara paralel ke Cloud SQL:
Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:
- PROJECT_NAME: nama project Google Cloud yang berisi bucket Cloud Storage yang Anda buat.
- INSTANCE_NAME: nama instance Cloud SQL tempat Anda mengimpor file secara paralel.
- BUCKET_NAME: nama bucket Cloud Storage.
- BUCKET_PATH: jalur ke bucket tempat file impor disimpan.
- FOLDER_NAME: folder tempat file impor disimpan.
- DATABASE_NAME: nama database di dalam instance Cloud SQL tempat impor dibuat. Anda hanya boleh menentukan satu database.
- THREAD_NUMBER: jumlah thread yang digunakan Cloud SQL untuk mengimpor file secara paralel. Misalnya, jika Anda ingin mengimpor tiga file sekaligus secara paralel, tentukan
3
sebagai nilai untuk parameter ini.
Metode HTTP dan URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_NAME/instances/INSTANCE_NAME/import
Meminta isi JSON:
{ "importContext": { "fileType": "SQL", "uri": "gs://BUCKET_NAME/BUCKET_PATH/FOLDER_NAME", "databases": ["DATABASE_NAME"], "offload": [TRUE|FALSE], "sqlImportOptions": { "parallel": [TRUE|FALSE], "threads": [THREAD_NUMBER] } } }
Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:
Anda akan melihat respons JSON seperti berikut:
Untuk menggunakan akun pengguna lain untuk impor, tentukan properti
Untuk mengetahui daftar lengkap parameter permintaan, lihat halaman Cloud SQL Admin API.importContext.importUser
.- Jika Anda tidak memerlukan izin IAM yang ditetapkan di Peran dan izin yang diperlukan untuk mengimpor ke Cloud SQL untuk PostgreSQL, gunakan
gsutil iam
untuk menghapusnya.
Batasan
- Jika Anda menentukan terlalu banyak thread saat mengimpor atau mengekspor data dari beberapa file secara paralel, Anda mungkin menggunakan lebih banyak memori daripada yang dimiliki instance Cloud SQL. Jika hal ini terjadi, pesan error internal akan muncul. Periksa penggunaan memori instance Anda dan tingkatkan ukuran instance, sesuai kebutuhan. Untuk mengetahui informasi selengkapnya, lihat Tentang setelan instance.
- Saat melakukan ekspor, koma di nama database atau nama tabel di kolom
databases
atautables
tidak didukung. - Pastikan Anda memiliki kapasitas disk yang cukup untuk download file dump awal. Jika tidak, error
no space left on disk
akan muncul. - Jika instance hanya memiliki satu CPU virtual (vCPU), Anda tidak dapat mengimpor atau mengekspor beberapa file secara paralel. Jumlah vCPU untuk instance Anda tidak boleh lebih kecil dari jumlah thread yang Anda gunakan untuk operasi impor atau ekspor, dan jumlah thread minimal harus dua.
- Utilitas
pg_dump
tidak dapat memotong tabel apa pun yang Anda ekspor. Oleh karena itu, jika Anda memiliki satu tabel yang sangat besar, tabel tersebut dapat menjadi bottleneck bagi kecepatan operasi ekspor.
Langkah selanjutnya
- Pelajari cara memeriksa status operasi impor dan ekspor.
- Pelajari cara membatalkan impor dan ekspor data.
- Pelajari praktik terbaik untuk mengimpor dan mengekspor data.
- Pelajari masalah umum untuk impor dan ekspor.