Memindahkan bucket

Halaman ini menjelaskan proses pemindahan bucket dari satu lokasi ke lokasi lain. Untuk mengetahui informasi tentang pemindahan bucket, lihat Pemindahan bucket.

Sebelum memulai

Sebelum Anda dapat memindahkan bucket, selesaikan langkah-langkah berikut:

  1. Konfigurasi Storage Intelligence.

  2. Aktifkan penghapusan sementara.

  3. Periksa kuota dan batas untuk memastikan bahwa lokasi baru memiliki kuota yang cukup untuk mengakomodasi data bucket.

  4. Tentukan jenis relokasi bucket untuk memahami apakah waktu nonaktif penulisan diperlukan.

  5. Hapus semua tag bucket yang ada.

  6. Jika Anda menggunakan laporan inventaris, simpan konfigurasi Anda.

  7. Dapatkan peran yang diperlukan, yang dijelaskan di bagian berikut.

Mendapatkan peran yang diperlukan

Untuk mendapatkan izin yang Anda perlukan untuk memindahkan bucket, minta administrator Anda untuk memberi Anda peran IAM Storage Admin (roles/storage.admin) di project. Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat Mengelola akses ke project, folder, dan organisasi.

Peran bawaan ini berisi izin yang diperlukan untuk memindahkan bucket. Untuk melihat izin yang benar-benar diperlukan, luaskan bagian Izin yang diperlukan:

Izin yang diperlukan

Izin berikut diperlukan untuk memindahkan bucket:

  • Untuk memindahkan bucket: storage.buckets.relocate
  • Untuk melihat status operasi pemindahan bucket: storage.bucketOperations.get
  • Untuk melihat daftar operasi pemindahan bucket untuk project: storage.bucketOperations.list
  • Untuk membatalkan operasi pemindahan bucket: storage.bucketOperations.cancel
  • Untuk melihat metadata bucket selama fase uji coba relokasi bucket dan penyalinan data inkremental: storage.buckets.get
  • Untuk mendapatkan objek dalam bucket yang ingin Anda pindahkan: storage.objects.get
  • Untuk mencantumkan objek dalam bucket yang ingin Anda pindahkan: storage.objects.list

Anda mungkin juga bisa mendapatkan izin ini dengan peran khusus atau peran bawaan lainnya.

Memindahkan bucket

Bagian ini menjelaskan proses memindahkan bucket Cloud Storage dari satu lokasi ke lokasi lain. Saat memindahkan bucket, Anda memulai proses penyalinan data inkremental, memantau proses, lalu memulai langkah sinkronisasi akhir. Untuk mengetahui informasi selengkapnya tentang langkah-langkah ini, lihat Memahami proses relokasi bucket.

Melakukan uji coba

Untuk meminimalkan potensi masalah selama proses pemindahan bucket, sebaiknya Anda melakukan uji coba. Uji coba mensimulasikan proses pemindahan bucket tanpa memindahkan data, sehingga membantu Anda mendeteksi dan menyelesaikan masalah sejak awal. Uji coba memeriksa ketidakcocokan berikut:

Meskipun uji coba tidak dapat mengidentifikasi setiap kemungkinan masalah karena beberapa masalah mungkin hanya muncul selama migrasi langsung karena faktor-faktor seperti ketersediaan resource real-time, uji coba mengurangi risiko menghadapi masalah yang memakan waktu selama pemindahan yang sebenarnya.

Command line

Simulasikan uji coba pemindahan bucket:

gcloud storage buckets relocate gs://BUCKET_NAME --location=LOCATION --dry-run

Dengan:

  • BUCKET_NAME adalah nama bucket yang ingin Anda pindahkan.

  • LOCATION adalah lokasi tujuan bucket.

Setelah Anda memulai uji coba, operasi yang berjalan lama akan dimulai. Anda akan menerima ID operasi dan deskripsi operasi. Pantau progres dan penyelesaian uji coba dengan mendapatkan detail operasi yang berjalan lama.

Jika uji coba menunjukkan adanya masalah, selesaikan masalah tersebut sebelum melanjutkan ke Langkah memulai penyalinan data inkremental.

REST API

JSON API

  1. Menginstal dan melakukan inisialisasi gcloud CLI, yang memungkinkan Anda membuat token akses untuk header Authorization.

  2. Buat file JSON yang berisi setelan untuk bucket, yang harus menyertakan parameter destinationLocation dan validateOnly. Lihat dokumentasi Buckets: relocate untuk daftar lengkap setelan. Berikut adalah setelan umum yang harus disertakan:

    {
      "destinationLocation": "DESTINATION_LOCATION",
      "destinationCustomPlacementConfig": {
          "dataLocations": [
            LOCATIONS,
            ...
            ]
        },
      "validateOnly": "true"
    }

    Dengan:

    • DESTINATION_LOCATION adalah lokasi tujuan bucket.
    • LOCATIONS adalah daftar kode lokasi yang akan digunakan untuk dual-region yang dapat dikonfigurasi.
    • validateOnly disetel ke true untuk melakukan uji coba.
  3. Gunakan cURL untuk memanggil JSON API:

    curl -X POST --data-binary @JSON_FILE_NAME \
     -H "Authorization: Bearer $(gcloud auth print-access-token)" \
     -H "Content-Type: application/json" \
     "https://storage.googleapis.com/storage/v1/b/bucket=BUCKET_NAME/relocate"

    Dengan:

    • JSON_FILE_NAME adalah nama file JSON yang Anda buat.
    • BUCKET_NAME adalah nama bucket yang ingin Anda pindahkan.

    Setelah Anda memulai uji coba, operasi yang berjalan lama akan dimulai. Uji coba berhasil jika kondisi berikut terpenuhi:

    • Uji coba tidak melaporkan error.
    • Resource operations menampilkan nilai kolom done sebesar true.

      {
      "kind": "storage#operation",
      "name": "projects/_/buckets/bucket/operations/operation_id",
      "metadata": {
        "@type": OperationMetadataType*,
        metadata OperationMetadata*
      },
      "done": "true",
      "response": {
        "@type": ResponseResourceType*,
        response ResponseResource*
      }
      }

    Jika uji coba menunjukkan adanya masalah, selesaikan masalah tersebut sebelum melanjutkan ke Langkah memulai penyalinan data inkremental.

Mulai penyalinan data inkremental

Command line

Mulai operasi pemindahan bucket:

gcloud storage buckets relocate gs://BUCKET_NAME --location=LOCATION

Dengan:

  • BUCKET_NAME adalah nama bucket yang ingin Anda pindahkan.

  • LOCATION adalah lokasi tujuan bucket.

REST API

JSON API

  1. Menginstal dan melakukan inisialisasi gcloud CLI, yang memungkinkan Anda membuat token akses untuk header Authorization.

  2. Buat file JSON yang berisi setelan untuk bucket. Lihat dokumentasi Buckets: relocate untuk daftar lengkap setelan. Berikut adalah setelan umum yang harus disertakan:

    {
      "destinationLocation": "DESTINATION_LOCATION",
      "destinationCustomPlacementConfig": {
          "dataLocations": [
            LOCATIONS,
            ...
            ]
        },
      "validateOnly": "false"
    }

    Dengan:

    • DESTINATION_LOCATION adalah lokasi tujuan bucket.
    • LOCATIONS adalah daftar kode lokasi yang akan digunakan untuk dual-region yang dapat dikonfigurasi.
    • validateOnly disetel ke false untuk memulai langkah penyalinan data inkremental dari relokasi bucket.
  3. Gunakan cURL untuk memanggil JSON API:

    curl -X POST --data-binary @JSON_FILE_NAME \
     -H "Authorization: Bearer $(gcloud auth print-access-token)" \
     -H "Content-Type: application/json" \
     "https://storage.googleapis.com/storage/v1/b/bucket=BUCKET_NAME/relocate"

    Dengan:

    • JSON_FILE_NAME adalah nama file JSON yang Anda buat.
    • BUCKET_NAME adalah nama bucket yang ingin Anda pindahkan.

Memantau penyalinan data inkremental

Proses pemindahan bucket adalah operasi yang berjalan lama yang harus dipantau untuk melihat progresnya. Anda dapat memeriksa daftar operasi yang berjalan lama secara rutin untuk melihat status langkah penyalinan data inkremental. Untuk mengetahui informasi tentang cara mendapatkan detail tentang operasi yang berjalan lama, mencantumkan, atau membatalkan operasi yang berjalan lama, lihat Menggunakan operasi yang berjalan lama di Cloud Storage.

Contoh berikut menunjukkan output yang dihasilkan oleh operasi penyalinan data inkremental:

  done: false
  kind: storage#operation
  metadata:
  '@type': type.googleapis.com/google.storage.control.v2.RelocateBucketMetadata
  commonMetadata:
    createTime: '2024-10-21T04:26:59.666Z
    endTime: '2024-12-29T23:39:53.340Z'
    progressPercent: 99
    requestedCancellation: false
    type: relocate-bucket
    updateTime: '2024-10-21T04:27:03.2892'
  destinationLocation: US-CENTRAL1
  finalizationState: 'READY'
  progress:
    byteProgressPercent: 100
    discoveredBytes: 200
    remainingBytes: 0
    discoveredObjectCount: 10
    remainingObjectCount: 8
    objectProgressPercent: 100
    discoveredSyncCount: 8
    remainingSyncCount: 0
    syncProgressPercent: 100
  relocationState: SYNCING
  sourceLocation: US
  validateOnly: false
  estimatedWriteDowntimeDuration: '7200s'
  writeDowntimeExpireTime: '2024-12-30T10:34:01.786Z'
  name: projects//buckets/my-bucket1/operations/Bar7-1b0khdew@nhenUQRTF_R-Kk4dQ5V1f8fzezkFcPh3XMvlTqJ6xhnqJ1h_QXFIeAirrEqkjgu4zPKSRD6WSSG5UGXil6w
  response:
    '@type': type.googleapis.com/google.storage.control.v2.RelocateBucketResponse
      selfLink: https://storage.googleusercontent.com/storage/v1_ds/b/my-bucket1/operations/Bar7-1b0khdew@nhenUQRTF_R-Kk4dQ5V1f8fzezkFcPh3XMvlTqJ6xhnqJ1h_QXFIeAirrEqkjgu4zPKSRD6WSSG5UGXil6w
 

Tabel berikut memberikan informasi tentang kolom utama dalam output yang dihasilkan oleh operasi penyalinan data inkremental:

Nama kolom Deskripsi Nilai yang memungkinkan
done Menunjukkan selesainya operasi pemindahan bucket. true, false
kind Menunjukkan bahwa resource ini merepresentasikan operasi penyimpanan.
metadata Memberikan informasi tentang operasi.
metadata.@type Menunjukkan jenis operasi sebagai pemindahan bucket.
metadata.commonMetadata Metadata yang umum untuk semua operasi.
metadata.commonMetadata.createTime Waktu pembuatan operasi yang berjalan lama.
metadata.commonMetadata.endTime Waktu operasi yang berjalan lama berakhir.
metadata.commonMetadata.progressPercent Perkiraan progres operasi yang berjalan lama, dalam persentase. Antara 0 hingga 100%. Nilai -1 berarti progres tidak diketahui atau tidak berlaku.
metadata.commonMetadata.requestedCancellation Menunjukkan apakah pengguna telah meminta pembatalan operasi yang berjalan lama. true, false
metadata.commonMetadata.type Menunjukkan jenis operasi yang berjalan lama.
metadata.commonMetadata.updateTime Waktu saat operasi yang berjalan lama terakhir diperbarui.
metadata.destinationLocation Lokasi tujuan bucket.
metadata.finalizationState Menunjukkan kesiapan untuk memulai langkah sinkronisasi akhir.
  • READY: Menunjukkan bahwa Anda dapat memulai langkah sinkronisasi akhir. Namun, sebaiknya tunggu hingga nilai kolom progressPercent mencapai 99.
  • WAITING_ON_SYNC: Menunjukkan bahwa Anda tidak dapat memulai langkah sinkronisasi akhir.
  • NOT_REQUIRED: Menunjukkan bahwa langkah sinkronisasi akhir tidak diperlukan untuk bucket ini dan Anda dapat melewatkannya.
  • BLOCKED_ON_ERRORS: Menunjukkan bahwa langkah finalisasi dijeda sementara karena terjadi error. Anda harus mengatasi error untuk melanjutkan langkah ini.
  • RUNNING: Menunjukkan bahwa langkah penyelesaian sedang berlangsung.
  • FINALIZED: Menunjukkan bahwa langkah penyelesaian telah berhasil diselesaikan.
metadata.progress Detail progres operasi pemindahan.
metadata.progress.byteProgressPercent Progres byte yang disalin dalam persentase. Antara 0 hingga 100%. Nilai -1 berarti progres tidak diketahui atau tidak berlaku.
metadata.progress.discoveredBytes Jumlah byte yang ditemukan di bucket sumber.
metadata.progress.discoveredObjectCount Jumlah objek yang ditemukan di bucket sumber.
metadata.progress.discoveredSyncCount Jumlah pembaruan metadata objek yang ditemukan di bucket sumber.
metadata.progress.objectProgressPercent Progres objek yang disalin dalam persentase. Antara 0 hingga 100%. Nilai -1 berarti progres tidak diketahui atau tidak berlaku.
metadata.progress.remainingBytes Jumlah byte yang tersisa untuk disalin dari bucket sumber ke bucket tujuan.
metadata.progress.remainingObjectCount Jumlah objek yang tersisa untuk disalin dari bucket sumber ke bucket tujuan.
metadata.progress.remainingSyncCount Jumlah pembaruan metadata objek yang tersisa untuk disinkronkan.
metadata.progress.syncProgressPercent Progres pembaruan metadata objek yang akan disinkronkan dalam persentase. Antara 0 hingga 100%. Nilai -1 berarti progres tidak diketahui atau tidak berlaku.
metadata.relocationState Status keseluruhan operasi pemindahan bucket.
  • SYNCING: Menunjukkan bahwa langkah penyalinan data inkremental sedang aktif menyalin objek dari bucket sumber ke bucket tujuan.
  • FINALIZING: Menunjukkan bahwa langkah penyelesaian telah dimulai.
  • FAILED: Menunjukkan bahwa langkah penyalinan data inkremental mengalami error dan tidak berhasil diselesaikan.
  • SUCCEEDED: Menunjukkan bahwa langkah penyalinan data inkremental telah berhasil diselesaikan.
  • CANCELLED: Menunjukkan bahwa langkah penyalinan data inkremental dibatalkan.
metadata.sourceLocation Lokasi sumber bucket.
metadata.validateOnly Menunjukkan apakah uji coba pemindahan bucket telah dimulai. true, false
metadata.estimatedWriteDowntimeDuration Perkiraan durasi periode istirahat penulisan; diisi setelah finalizationState adalah READY. Nilai minimum adalah 7200s.
metadata.writeDowntimeExpireTime Waktu berakhirnya periode nonaktif penulisan.
name ID unik untuk operasi pemindahan ini.
Format: projects/_/buckets/bucket-name/operations/operation-id
response Respons operasi.
response.@type Jenis respons.
selfLink Link ke operasi ini.

Jika Anda mengalami masalah saat berinteraksi dengan fitur Cloud Storage lainnya, lihat Batasan.

Memulai langkah sinkronisasi akhir

Langkah sinkronisasi akhir melibatkan periode saat Anda tidak dapat melakukan operasi penulisan pada bucket. Sebaiknya jadwalkan langkah sinkronisasi akhir pada waktu yang meminimalkan gangguan pada aplikasi Anda.

Sebelum melanjutkan, konfirmasi bahwa bucket telah sepenuhnya disiapkan dengan memeriksa nilai finalizationState dalam output langkah penyalinan data inkremental. Nilai finalizationState harus READY untuk melanjutkan.

Jika Anda memulai langkah sinkronisasi akhir terlalu dini, perintah akan menampilkan pesan error The relocate bucket operation is not ready to advance to finalization running state, tetapi proses pemindahan akan berlanjut.

Sebaiknya tunggu hingga nilai progressPercent menjadi 99 sebelum memulai langkah sinkronisasi akhir.

Command line

Mulai langkah sinkronisasi akhir operasi pemindahan bucket setelah nilai finalizationState adalah READY:

gcloud storage buckets relocate --finalize --operation=projects/_/buckets/BUCKET_NAME/operations/OPERATION_ID

Dengan:

  • BUCKET_NAME adalah nama bucket yang ingin Anda pindahkan.
  • OPERATION_ID adalah ID operasi yang berjalan lama, yang ditampilkan dalam respons metode yang Anda panggil. Misalnya, respons berikut ditampilkan dari panggilan gcloud storage operations list dan ID operasi yang berjalan lama adalah AbCJYd8jKT1n-Ciw1LCNXIcubwvij_TdqO-ZFjuF2YntK0r74.
 `name: projects/_/buckets/my-bucket/operations/AbCJYd8jKT1n-Ciw1LCNXIcubwvij_TdqO-ZFjuF2YntK0r74` 

Tetapkan tanda ttl untuk memiliki kontrol yang lebih besar atas proses relokasi. Contoh:

gcloud storage buckets relocate --finalize --ttl TTL_DURATION --operation=projects/_/buckets/BUCKET_NAME/operations/OPERATION_ID

Dengan:

TTL_DURATION adalah Time to live (TTL) untuk fase penonaktifan penulisan selama proses relokasi. Dinyatakan sebagai string, seperti 12h untuk 12 jam. TTL_DURATION menentukan durasi maksimum yang diizinkan untuk fase periode nonaktif tulis. Jika periode nonaktif penulisan melebihi batas ini, proses pemindahan akan otomatis dikembalikan ke langkah penyalinan inkremental, dan operasi penulisan ke bucket akan diaktifkan kembali. Nilai harus berada dalam rentang 6h (6 jam) hingga 48h (48 jam). Jika tidak ditentukan, nilai defaultnya adalah 12h (12 jam).

REST API

JSON API

  1. Menginstal dan melakukan inisialisasi gcloud CLI, yang memungkinkan Anda membuat token akses untuk header Authorization.

  2. Buat file JSON yang berisi setelan untuk pemindahan bucket. Lihat dokumentasi Buckets: advanceRelocateBucket untuk daftar lengkap setelan. Berikut adalah setelan umum yang harus disertakan:

    {
        "expireTime": "EXPIRE_TIME",
        "ttl": "TTL_DURATION"
    }

    Dengan:

    • EXPIRE_TIME adalah waktu berakhirnya periode nonaktif penulisan.
    • TTL_DURATION adalah Time to live (TTL) untuk fase penonaktifan penulisan selama proses relokasi. Dinyatakan sebagai string, seperti 12h untuk 12 jam. TTL_DURATION menentukan durasi maksimum yang diizinkan untuk fase periode nonaktif tulis. Jika periode nonaktif penulisan melebihi batas ini, proses pemindahan akan otomatis dikembalikan ke langkah penyalinan inkremental, dan operasi penulisan ke bucket akan diaktifkan kembali. Nilai harus berada dalam rentang 6h (6 jam) hingga 48h (48 jam). Jika tidak ditentukan, nilai defaultnya adalah 12h (12 jam).
  3. Gunakan cURL untuk memanggil JSON API:

    curl -X POST --data-binary @JSON_FILE_NAME \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json" \
      "https://storage.googleapis.com/storage/v1/b/bucket/BUCKET_NAME/operations/OPERATION_ID/advanceRelocateBucket"

    Dengan:

    • JSON_FILE_NAME adalah nama file JSON yang Anda buat.
    • BUCKET_NAME adalah nama bucket yang ingin Anda pindahkan.
    • OPERATION_ID adalah ID operasi yang berjalan lama, yang ditampilkan dalam respons metode yang Anda panggil. Misalnya, respons berikut ditampilkan dari panggilan Operations: list dan ID operasi yang berjalan lama adalah AbCJYd8jKT1n-Ciw1LCNXIcubwvij_TdqO-ZFjuF2YntK0r74.

Memvalidasi proses pemindahan bucket

Setelah memulai pemindahan, verifikasi keberhasilannya. Bagian ini memberikan panduan tentang cara mengonfirmasi keberhasilan transfer data.

Validasi keberhasilan proses relokasi menggunakan metode berikut:

  • Polling operasi yang berjalan lama: Pemindahan bucket adalah operasi yang berjalan lama. Anda dapat melakukan polling operasi yang berjalan lama menggunakan operation id untuk memantau progres operasi dan mengonfirmasi penyelesaiannya yang berhasil dengan memverifikasi status success. Hal ini melibatkan kueri status operasi secara berkala hingga mencapai status akhir. Untuk mengetahui informasi tentang pemantauan operasi yang berjalan lama, lihat Menggunakan operasi yang berjalan lama di Cloud Storage.

  • Menganalisis entri Cloud Audit Logs: Cloud Audit Logs memberikan catatan mendetail tentang peristiwa dan operasi di lingkungan Google Cloud Anda. Anda dapat menganalisis entri Cloud Audit Logs yang terkait dengan relokasi untuk memvalidasi keberhasilannya. Analisis log untuk mengetahui apakah ada error, peringatan, atau perilaku tidak terduga yang mungkin menunjukkan masalah selama transfer. Untuk informasi tentang cara melihat log Cloud Audit Logs, lihat Melihat log audit.

    Entri log berikut membantu Anda menentukan apakah pemindahan berhasil atau gagal:

    • Berhasil dipindahkan: Relocate bucket succeeded. All existing objects are now in the new placement configuration.

    • Relokasi gagal: Relocate bucket has failed. Bucket location remains unchanged.

    Dengan notifikasi Pub/Sub, Anda juga dapat menyiapkan pemberitahuan yang memberi tahu saat peristiwa berhasil atau gagal tertentu muncul di log. Untuk mengetahui informasi tentang cara menyiapkan notifikasi Pub/Sub, lihat Mengonfigurasi notifikasi Pub/Sub untuk Cloud Storage.

Selesaikan tugas pemindahan bucket pasca-transfer

Setelah Anda berhasil memindahkan bucket, selesaikan langkah-langkah berikut:

  1. Opsional: Pulihkan kontrol akses berbasis tag di bucket Anda.
  2. Konfigurasi laporan inventaris yang ada tidak dipertahankan selama proses pemindahan dan Anda harus membuatnya ulang secara manual. Untuk mengetahui informasi tentang cara membuat konfigurasi laporan inventaris, lihat Membuat konfigurasi laporan inventaris.
  3. Perbarui konfigurasi infrastruktur sebagai kode Anda seperti Terraform dan konektor konfigurasi Google Kubernetes Engine untuk menentukan lokasi baru bucket.
  4. Endpoint regional terikat ke lokasi tertentu, dan Anda harus mengubah kode aplikasi untuk mencerminkan endpoint baru.

Cara menangani operasi pemindahan bucket yang gagal

Pertimbangkan faktor-faktor berikut sebelum menangani operasi pemindahan bucket yang gagal:

  • Relokasi bucket yang gagal dapat meninggalkan resource yang sudah tidak digunakan, seperti file sementara atau salinan data yang tidak lengkap, di tujuan. Anda harus menunggu 7 hingga 14 hari sebelum memulai relokasi bucket lain ke tujuan yang sama. Anda dapat memulai pemindahan bucket ke tujuan lain segera.

  • Jika lokasi tujuan bukan lokasi yang optimal untuk data Anda, Anda mungkin ingin membatalkan pemindahan. Namun, Anda tidak dapat segera memulai pemindahan. Waktu tunggu hingga 14 hari diperlukan sebelum Anda dapat memulai proses relokasi lagi. Pembatasan ini diterapkan untuk memastikan stabilitas dan mencegah konflik data.

Langkah berikutnya