Mengekspor file SQL

Halaman ini menjelaskan cara mengekspor data dari cluster AlloyDB untuk PostgreSQL ke dalam file dump SQL.

Untuk mengetahui informasi tentang cara memigrasikan seluruh database dari server database yang didukung ke instance AlloyDB baru, lihat Memigrasikan database ke AlloyDB menggunakan Database Migration Service. Jika Anda mengekspor karena ingin membuat instance baru dari file yang diekspor, pertimbangkan untuk memulihkan cluster dari cadangan tersimpan.

Anda dapat membatalkan ekspor data dari cluster AlloyDB untuk PostgreSQL. Untuk mengetahui informasi selengkapnya, lihat Membatalkan ekspor data.

Sebelum memulai

  • Sebelum memulai operasi ekspor, perlu diingat bahwa operasi ekspor menggunakan resource database, tetapi tidak mengganggu operasi database standar kecuali jika instance kurang tersedia.
  • Biaya transfer data antar-region berlaku jika bucket target berada di region yang berbeda dengan cluster sumber. Untuk mengetahui informasi selengkapnya, lihat Harga AlloyDB untuk PostgreSQL.
  • Kompresi diaktifkan jika nama objek diakhiri dengan ekstensi .gz. Objek tersebut kemudian diekspor dalam format .gz ke Cloud Storage.
  • Beberapa operasi ekspor dapat berjalan secara paralel.

Peran dan izin yang diperlukan untuk mengekspor dari AlloyDB

Untuk mengekspor data dari AlloyDB ke Cloud Storage, pengguna yang memulai ekspor harus memiliki salah satu peran Identity and Access Management (IAM) berikut:

  • Peran Admin Cloud AlloyDB (roles/alloydb.admin)
  • Peran khusus, termasuk izin berikut:
    • alloydb.clusters.get
    • alloydb.clusters.export

Selain itu, akun layanan untuk cluster AlloyDB harus memiliki salah satu peran berikut di bucket Cloud Storage:

  • Peran IAM storage.objectAdmin atau storage.objectCreator
  • Peran khusus, termasuk izin storage.objects.create

Untuk mendapatkan bantuan terkait peran IAM, lihat Identity and Access Management.

Mengekspor data AlloyDB ke file dump SQL

Saat Anda menggunakan AlloyDB untuk melakukan ekspor, baik dari gcloud CLI atau API, yang Anda gunakan adalah pg_dump utilitas, dengan opsi yang diperlukan untuk memastikan bahwa file ekspor yang dihasilkan valid untuk diimpor kembali ke AlloyDB.

Untuk mengekspor data dari database di cluster AlloyDB ke file dump SQL di bucket Cloud Storage, ikuti langkah-langkah berikut:

gcloud

  1. Pastikan ada bucket Cloud Storage yang ada untuk menyimpan file yang diekspor, atau buat bucket baru.
  2. Gunakan format yang disediakan untuk mengidentifikasi akun layanan untuk project yang Anda ekspor. Format untuk akun layanan adalah sebagai berikut:

    service-PROJECT_NUMBER@gcp-sa-alloydb.iam.gserviceaccount.com

    Beri akun layanan izin ke bucket Cloud Storage untuk operasi ekspor.

  3. Gunakan gcloud storage buckets add-iam-policy-binding untuk memberikan peran storage.objectAdmin IAM ke akun layanan. Untuk mengetahui petunjuk cara memberikan peran pada bucket, lihat Menetapkan dan mengelola kebijakan IAM pada bucket.

    Jika Anda mengekspor file ke bucket Cloud Storage yang ada yang tidak Anda buat, Anda mungkin memerlukan izin IAM tambahan untuk memberikan peran pada bucket. Untuk mengetahui detailnya, lihat Peran yang diperlukan.

  4. Ekspor database ke bucket Cloud Storage Anda. Berikut adalah daftar opsi untuk mengekspor data dalam format dump SQL:

    • --async (Opsional): segera tampilkan, tanpa menunggu operasi yang sedang berlangsung selesai.
    • --tables (Opsional): tabel yang akan diekspor dari.
    • --schema-only (Opsional): jika ditetapkan, hanya ekspor skema.
    • --clean-target-objects (Opsional): jika ditetapkan, perintah output ke DROP semua objek database yang di-dump sebelum mengeluarkan perintah untuk membuatnya.
    • --if-exist-target-objects (Opsional): jika ditetapkan, gunakan perintah DROP ... IF EXISTS untuk memeriksa keberadaan objek sebelum menghapusnya dalam mode --clean-target-objects.

    Untuk menggunakan fitur ini, sertakan opsi ini dalam perintah gcloud. Jika Anda hanya ingin mengekspor definisi objek (skema) dan tidak ada data, gunakan flag –-schema-only. Untuk menentukan tabel mana yang akan diekspor, gunakan flag --tables=TABLE_NAMES. Anda dapat menentukan nilai nama tabel yang dipisahkan koma atau pola karakter pengganti untuk menentukan beberapa tabel.

    Jika tidak, hapus parameter ini dari perintah berikut:

    gcloud alloydb clusters export CLUSTER_NAME
      --region=REGION
      --database=DATABASE_NAME
      --gcs-uri="gs://BUCKET_NAME/OBJECT_NAME"
      --tables=TABLE_NAMES
      --schema-only
      --clean-target-objects
      --if-exist-target-objects
      --sql

    Perintah alloydb clusters export tidak berisi pemicu atau prosedur tersimpan, tetapi berisi tampilan. Untuk mengekspor pemicu atau prosedur tersimpan, gunakan pg_dump utilitas.

    Untuk mengetahui informasi selengkapnya tentang penggunaan perintah alloydb clusters export, lihat alloydb clusters export halaman referensi perintah.

  5. Jika Anda tidak perlu mempertahankan peran IAM yang telah Anda tetapkan sebelumnya, cabut peran tersebut sekarang.

REST v1

  1. Pastikan ada bucket Cloud Storage yang ada untuk menyimpan file yang diekspor, atau buat bucket baru:

    gcloud storage buckets create gs://BUCKET_NAME --project=PROJECT_NAME --location=LOCATION_NAME
  2. Gunakan format akun layanan untuk mengidentifikasi akun layanan untuk project yang Anda ekspor.

    Format untuk akun layanan adalah sebagai berikut:

     service-PROJECT_NUMBER@gcp-sa-alloydb.iam.gserviceaccount.com

    Beri akun layanan izin ke bucket Cloud Storage untuk operasi ekspor.

  3. Gunakan gcloud storage buckets add-iam-policy-binding untuk memberikan peran storage.objectAdmin IAM ke akun layanan. Untuk mengetahui petunjuk cara memberikan peran pada bucket, lihat Menetapkan dan mengelola kebijakan IAM pada bucket.

    Jika Anda mengekspor file ke bucket Cloud Storage yang ada yang tidak Anda buat, Anda mungkin memerlukan izin IAM tambahan untuk memberikan peran pada bucket. Untuk mengetahui detailnya, lihat Peran yang diperlukan.

  4. Ekspor database Anda.

    Gunakan metode HTTP dan URL berikut:

    POST https://alloydb.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/clusters/CLUSTER_ID:export

    Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

    • PROJECT_ID: project ID.
    • REGION: region tempat cluster AlloyDB di-deploy.
    • CLUSTER_ID: ID cluster.
    • BUCKET_NAME: nama bucket Cloud Storage.
    • PATH_TO_SQL_FILE: jalur ke file dump SQL.
    • DATABASE_NAME: nama database di dalam instance AlloyDB.
    • TABLES: tabel yang akan diekspor dari.
    • SCHEMA_ONLY: jika true, hanya ekspor skema.
    • CLEAN_TARGET_OBJECTS: jika true, perintah output ke DROP semua objek database yang di-dump sebelum mengeluarkan perintah untuk membuatnya.
    • IF_EXIST_TARGET_OBJECTS: Jika true, gunakan DROP ... IF EXISTS perintah untuk memeriksa keberadaan objek sebelum menghapusnya dalam mode clean_target_objects.

    Untuk menggunakan fitur ini, tetapkan nilai parameter ini ke true. Jika tidak, tetapkan nilainya ke false. Jika Anda hanya ingin mengekspor definisi objek (skema) dan tidak ada data, gunakan flag schema_only. Untuk menentukan tabel mana yang akan diekspor, gunakan kolom tables. Anda dapat memilih beberapa tabel dengan memberikan daftar nama tabel yang dipisahkan koma atau dengan menulis karakter pengganti dalam pola.

    Meminta isi JSON:

    {
      "gcs_destination": {
        "uri": "gs://BUCKET_NAME/PATH_TO_SQL_FILE"
      },
      "database": "DATABASE_NAME",
      "sql_export_options": {
        "schema_only": true,
        "tables": [
         "TABLE1",
         "TABLE2"
        ],
        "clean_target_objects": false,
        "if_exist_target_objects": true
      }
    }
    

    Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:

    curl (Linux, macOS, atau Cloud Shell)

    Simpan isi permintaan dalam file bernama request.json dan jalankan perintah berikut:

       curl -X POST \
             -H "Authorization: Bearer $(gcloud auth print-access-token)" \
             -H "Content-Type: application/json; charset=utf-8" \
             -d @request.json \
             "https://alloydb.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/clusters/CLUSTER_ID:export"
       

    PowerShell (Windows)

    Simpan isi permintaan dalam file bernama request.json dan jalankan perintah berikut:

       $cred = gcloud auth print-access-token
       $headers = @{ "Authorization" = "Bearer $cred" }
    
       Invoke-WebRequest `
         -Method POST `
         -Headers $headers `
         -ContentType: "application/json; charset=utf-8" `
         -InFile request.json `
       -Uri "https://alloydb.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/clusters/CLUSTER_ID:export"| Select-Object -Expand Content
       

    Anda akan menerima respons JSON yang mirip dengan yang berikut ini:

    Respons

    {
      "name": "projects/PROJECT_ID/locations/REGION/operations/OPERATION_ID",
      "metadata": {
        "@type": "type.googleapis.com/google.cloud.alloydb.v1.OperationMetadata",
        "createTime": "2024-09-17T06:05:31.244428646Z",
        "target": "projects/PROJECT_ID/locations/REGION/clusters/CLUSTER_ID",
        "verb": "export",
        "requestedCancellation": false,
        "apiVersion": "v1"
      },
      "done": false
    }
    
  5. Jika Anda tidak perlu mempertahankan peran IAM yang telah Anda tetapkan sebelumnya, hapus peran tersebut sekarang.

Untuk mengetahui daftar lengkap parameter permintaan, lihat clusters:export.

Langkah berikutnya