Mengekspor dan mengimpor file secara paralel

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.
  • Operasi ekspor dan impor menggunakan resource database, tetapi tidak mengganggu operasi database normal kecuali jika penyediaan instance kurang lengkap.

  • Ikuti praktik terbaik untuk mengekspor dan mengimpor data.
  • Setelah menyelesaikan operasi impor, verifikasi hasilnya.

Mengekspor data dari Cloud SQL untuk MySQL ke beberapa file secara paralel

Bagian berikut berisi informasi tentang cara mengekspor data dari Cloud SQL untuk MySQL ke beberapa file secara paralel.

Peran dan izin yang diperlukan untuk mengekspor data dari Cloud SQL untuk MySQL ke beberapa file secara paralel

Untuk mengekspor data dari Cloud SQL ke Cloud Storage, pengguna yang memulai ekspor harus memiliki salah satu peran berikut:

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 utilitas dumpInstance.

Setelah file berada di Cloud Storage, Anda dapat mengimpornya ke database Cloud SQL lainnya. Jika Anda ingin mengakses data dalam file secara lokal, download data dari Cloud Storage ke lingkungan lokal Anda.

Jika file Anda berisi klausa DEFINER (tampilan, pemicu, stored_procedures, dan sebagainya), yang bergantung pada urutan eksekusi pernyataan tersebut, penggunaan file ini untuk impor dapat gagal. Mempelajari lebih lanjut penggunaan DEFINER dan kemungkinan solusi di Cloud SQL.

gcloud

Untuk mengekspor data dari Cloud SQL ke beberapa file secara paralel, selesaikan langkah-langkah berikut:

  1. Buat bucket Cloud Storage.
  2. Untuk menemukan akun layanan untuk instance Cloud SQL tempat Anda mengekspor file, gunakan perintah
    gcloud sql instances describe.
    gcloud sql instances describe INSTANCE_NAME
  3. Ganti INSTANCE_NAME dengan nama instance Cloud SQL Anda.

    Di output, cari nilai yang terkait dengan kolom serviceAccountEmailAddress.

  4. Untuk memberikan peran IAM storage.objectAdmin ke akun layanan, gunakan perintah gcloud storage buckets add-iam-policy-binding. Untuk mendapatkan bantuan terkait penetapan izin IAM, lihat Menggunakan izin IAM.
  5. 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, tentukan 3 sebagai nilai untuk parameter ini.
    • DATABASE_NAME (opsional): nama database di dalam instance Cloud SQL tempat ekspor dilakukan. Jika Anda tidak menentukan database apa pun, Cloud SQL akan mengekspor semua database untuk instance.
    • 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 alat mysqldump.

    Setelah ekspor selesai, Anda akan memiliki file dalam folder di bucket Cloud Storage dalam format dump MySQL Shell.

  6. Jika Anda tidak memerlukan peran IAM yang ditetapkan di Peran dan izin yang diperlukan untuk mengekspor dari Cloud SQL untuk MySQL, cabut peran tersebut.

REST v1

Untuk mengekspor data dari Cloud SQL ke beberapa file secara paralel, selesaikan langkah-langkah berikut:

  1. Membuat bucket Cloud Storage:
    gcloud storage buckets create gs://BUCKET_NAME --project=PROJECT_NAME --location=LOCATION_NAME
    
    Lakukan penggantian berikut:
    • BUCKET_NAME: nama bucket, tunduk pada persyaratan penamaan. Misalnya, my-bucket.
    • 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.
  2. Berikan legacyBucketWriter pada instance Anda peran IAM untuk bucket Anda. Untuk mendapatkan bantuan terkait penetapan izin IAM, lihat Menggunakan izin IAM.
  3. Mengekspor 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 (opsional): nama database di dalam instance Cloud SQL tempat ekspor dilakukan. Jika Anda tidak menentukan database apa pun, Cloud SQL akan mengekspor semua database untuk instance.
    • THREAD_NUMBER: jumlah thread yang digunakan Cloud SQL untuk mengekspor file secara paralel. Misalnya, jika Anda ingin mengekspor 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/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 menerima respons JSON yang mirip dengan yang berikut ini:

  4. Setelah ekspor selesai, Anda akan memiliki file dalam folder di bucket Cloud Storage dalam format dump MySQL Shell.

  5. Jika Anda tidak memerlukan peran IAM yang ditetapkan di Peran dan izin yang diperlukan untuk mengekspor dari Cloud SQL untuk MySQL, cabut peran tersebut.
Untuk mengetahui daftar lengkap parameter permintaan, lihat halaman Cloud SQL Admin API.

REST v1beta4

Untuk mengekspor data dari Cloud SQL ke beberapa file secara paralel, selesaikan langkah-langkah berikut:

  1. Membuat bucket Cloud Storage:
    gcloud storage buckets create gs://BUCKET_NAME --project=PROJECT_NAME --location=LOCATION_NAME
    Lakukan penggantian berikut:
    • BUCKET_NAME: nama bucket, tunduk pada persyaratan penamaan. Misalnya, my-bucket.
    • 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.
  2. Berikan storage.objectAdmin pada instance Anda peran IAM untuk bucket Anda. Untuk mendapatkan bantuan terkait penetapan izin IAM, lihat Menggunakan izin IAM.
  3. Mengekspor 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 (opsional): nama database di dalam instance Cloud SQL tempat ekspor dilakukan. Jika Anda tidak menentukan database apa pun, Cloud SQL akan mengekspor semua database untuk instance.
    • THREAD_NUMBER: jumlah thread yang digunakan Cloud SQL untuk mengekspor file secara paralel. Misalnya, jika Anda ingin mengekspor 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/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 menerima respons JSON yang mirip dengan yang berikut ini:

  4. Setelah ekspor selesai, Anda akan memiliki file dalam folder di bucket Cloud Storage dalam format dump MySQL Shell.

  5. Jika Anda tidak memerlukan peran IAM yang ditetapkan di Peran dan izin yang diperlukan untuk mengekspor dari Cloud SQL untuk MySQL, cabut peran tersebut.
Untuk mengetahui daftar lengkap parameter permintaan, lihat halaman Cloud SQL Admin API.

Mengimpor data dari beberapa file secara paralel ke Cloud SQL untuk MySQL

Bagian berikut berisi informasi tentang cara mengimpor data dari beberapa file secara paralel ke Cloud SQL untuk MySQL.

Peran dan izin yang diperlukan untuk mengimpor data dari beberapa file secara paralel ke Cloud SQL untuk MySQL

Untuk mengimpor data dari Cloud Storage ke Cloud SQL, pengguna yang memulai impor harus memiliki salah satu peran berikut:

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 MySQL

Anda dapat mengimpor data secara paralel dari beberapa file yang berada di Cloud Storage ke database. Untuk melakukannya, gunakan utilitas loadDump.

gcloud

Untuk mengimpor data dari beberapa file secara paralel ke Cloud SQL, selesaikan langkah-langkah berikut:

  1. Buat bucket Cloud Storage.
  2. Upload file ke bucket Anda.

    Untuk mendapatkan bantuan dalam mengupload file ke bucket, lihat Mengupload objek dari file.

  3. Untuk menemukan akun layanan untuk instance Cloud SQL tempat Anda mengimpor file, gunakan perintah
    gcloud sql instances describe.
    gcloud sql instances describe INSTANCE_NAME
  4. Ganti INSTANCE_NAME dengan nama instance Cloud SQL Anda.

    Di output, cari nilai yang terkait dengan kolom serviceAccountEmailAddress.

  5. Untuk memberikan peran IAM storage.objectAdmin ke akun layanan, gunakan utilitas gcloud storage buckets add-iam-policy-binding. Untuk mendapatkan bantuan terkait penetapan izin IAM, lihat Menggunakan izin IAM.
  6. 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 (opsional): nama database di dalam instance Cloud SQL tempat impor dilakukan. Jika Anda tidak menentukan database apa pun, Cloud SQL akan mengimpor semua database untuk instance.

    Jika perintah menampilkan error seperti ERROR_RDBMS, tinjau izinnya; kesalahan ini sering kali disebabkan oleh masalah izin.

  7. Jika Anda tidak memerlukan izin IAM yang Anda tetapkan di Peran dan izin yang diperlukan untuk mengimpor ke Cloud SQL untuk MySQL, gunakan gcloud storage buckets remove-iam-policy-binding untuk menghapusnya.

REST v1

Untuk mengimpor data dari beberapa file secara paralel ke Cloud SQL, selesaikan langkah-langkah berikut:

  1. Membuat bucket Cloud Storage:
    gcloud storage buckets create gs://BUCKET_NAME --project=PROJECT_NAME --location=LOCATION_NAME
    
    Lakukan penggantian berikut:
    • BUCKET_NAME: nama bucket, tunduk pada persyaratan penamaan. Misalnya, my-bucket.
    • 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.
  2. Upload file ke bucket Anda.

    Untuk mendapatkan bantuan dalam mengupload file ke bucket, lihat Mengupload objek dari file.

  3. Berikan instance Anda peran IAM storage.objectAdmin untuk bucket Anda. Untuk mendapatkan bantuan terkait penetapan izin IAM, lihat Menggunakan izin IAM.
  4. Mengimpor 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 (opsional): nama database di dalam instance Cloud SQL tempat impor dilakukan. Jika Anda tidak menentukan database apa pun, Cloud SQL akan mengimpor semua database untuk instance.
    • 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 menerima respons JSON yang mirip dengan yang berikut ini:

    Untuk mengetahui daftar lengkap parameter permintaan, lihat halaman Cloud SQL Admin API.
  5. Jika Anda tidak memerlukan izin IAM yang Anda tetapkan di Peran dan izin yang diperlukan untuk mengimpor ke Cloud SQL untuk MySQL, gunakan gcloud storage buckets remove-iam-policy-binding untuk menghapusnya.

REST v1beta4

Untuk mengimpor data dari beberapa file secara paralel ke Cloud SQL, selesaikan langkah-langkah berikut:

  1. Membuat bucket Cloud Storage:
    gcloud storage buckets create gs://BUCKET_NAME --project=PROJECT_NAME --location=LOCATION_NAME
    
    Lakukan penggantian berikut:
    • BUCKET_NAME: nama bucket, tunduk pada persyaratan penamaan. Misalnya, my-bucket.
    • 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.
  2. Upload file ke bucket Anda.

    Untuk mendapatkan bantuan dalam mengupload file ke bucket, lihat Mengupload objek dari file.

  3. Berikan instance Anda peran IAM storage.objectAdmin untuk bucket Anda. Untuk mendapatkan bantuan terkait penetapan izin IAM, lihat Menggunakan izin IAM.
  4. Mengimpor 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 (opsional): nama database di dalam instance Cloud SQL tempat impor dilakukan. Jika Anda tidak menentukan database apa pun, Cloud SQL akan mengimpor semua database untuk instance.
    • 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 menerima respons JSON yang mirip dengan yang berikut ini:

    Untuk mengetahui daftar lengkap parameter permintaan, lihat halaman Cloud SQL Admin API.
  5. Jika Anda tidak memerlukan izin IAM yang Anda tetapkan di Peran dan izin yang diperlukan untuk mengimpor ke Cloud SQL untuk MySQL, gunakan gcloud storage buckets remove-iam-policy-binding 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 informasi selengkapnya, lihat Tentang setelan instance.
  • Saat melakukan ekspor, koma dalam nama database atau nama tabel di kolom databases atau tables tidak didukung.
  • Pastikan Anda memiliki cukup ruang disk untuk mendownload file dump awal. Jika tidak, error no space left on disk akan muncul.
  • Jika instance Anda 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 harus minimal dua.
  • Jika Anda menulis pernyataan bahasa definisi data (DDL) seperti CREATE, DROP, atau ALTER selama operasi ekspor, operasi tersebut mungkin gagal atau data yang diekspor mungkin tidak konsisten dengan snapshot pemulihan titik waktu.
  • Jika operasi impor gagal, Anda mungkin memiliki data yang diimpor sebagian. Untuk pernyataan DDL, MySQL melakukan commit secara otomatis. Jika hal ini terjadi, sebelum mengimpor data lagi, bersihkan data parsial.

Langkah selanjutnya