Memindahkan instance

Halaman ini menjelaskan cara memindahkan instance di Spanner.

Anda dapat memindahkan instance Spanner dari konfigurasi instance apa pun ke konfigurasi instance lainnya, termasuk antara konfigurasi regional, dual-region, dan multi-region. Memindahkan instance tidak menyebabkan periode nonaktif, dan Spanner terus memberikan jaminan transaksi biasa, termasuk konsistensi yang kuat, selama pemindahan.

Anda juga dapat memindahkan instance dari konfigurasi instance sumber ke konfigurasi instance kustom (misalnya, konfigurasi dasar nam3 dengan replika hanya baca us-west2). Karena Anda tidak dapat memperbarui topologi konfigurasi instance yang ada, Anda harus membuat konfigurasi instance kustom baru dengan topologi yang diinginkan terlebih dahulu. Setelah membuat konfigurasi instance kustom baru, Anda dapat memindahkan instance dari konfigurasi instance sumber ke konfigurasi instance kustom baru.

Mengapa memindahkan instance Spanner?

Manfaat memindahkan instance mencakup:

  • Meningkatkan ketersediaan: Dapatkan ketersediaan 99,999% tanpa periode nonaktif setelah melakukan pemindahan dari regional ke dual-region atau multi-region.
  • Mengurangi latensi: Kurangi latensi dan tingkatkan cakupan geografis dengan replika hanya baca tambahan melalui pemindahan dari regional ke dual-region atau multi-region atau multi-region ke multi-region.
  • Mengurangi biaya: Kurangi biaya per jam dengan berpindah dari konfigurasi dual-region atau multi-region ke konfigurasi regional.
  • Menempatkan database di lokasi yang sama: Tempatkan database Spanner di lokasi yang sama dengan aplikasi klien dengan memindahkan instance ke lokasi yang lebih dioptimalkan.

Harga

Saat memindahkan instance, konfigurasi instance sumber dan tujuan dikenai biaya komputasi dan penyimpanan per jam. Setelah pemindahan selesai, Anda akan ditagih untuk penyimpanan instance di konfigurasi tujuan.

Jika memindahkan instance ke konfigurasi instance regional, dual-region, atau multi-region baru, Anda mungkin dikenai biaya transfer data keluar. Untuk mengetahui informasi selengkapnya, lihat Harga Spanner.

Batasan

  • Untuk memindahkan instance, instance tersebut harus memiliki minimal 1 node (1.000 unit pemrosesan).
  • Anda tidak dapat memindahkan instance di seluruh project dan Google Cloud akun.
  • Anda tidak dapat memindahkan instance yang menggunakan edisi Standar langsung dari konfigurasi instance regional ke konfigurasi instance dual-region atau multi-region. Anda harus mengupgrade edisi instance ke edisi Enterprise Plus terlebih dahulu, lalu memindahkan instance.
  • Jika Anda memiliki permintaan aktif menggunakan endpoint layanan regional di salah satu resource instance, pemindahan instance akan memengaruhi semua permintaan yang menggunakan endpoint regional karena penerapan regional memblokir akses ke instance lintas region. Permintaan yang menggunakan endpoint global tidak terpengaruh.
  • Backup Spanner khusus untuk konfigurasi instance dan tidak disertakan saat memindahkan instance. Untuk mengetahui informasi selengkapnya, lihat Cadangan.
  • API berikut dinonaktifkan selama pemindahan instance:
    • InstanceAdmin.DeleteInstance
    • InstanceAdmin.UpdateInstance
    • DatabaseAdmin.CreateDatabase
    • DatabaseAdmin.UpdateDatabaseDdl (Dinonaktifkan jika default_leader ditentukan dalam permintaan.)
    • DatabaseAdmin.RestoreDatabase
    • DatabaseAdmin.CreateBackup
    • DatabaseAdmin.CreateBackupSchedule
    • DatabaseAdmin.CopyBackup
  • Jika database memiliki pemimpin default yang diubah, pilihan tersebut akan dipertahankan jika database tersebut diberi nama region baca-tulis dalam konfigurasi instance tujuan, dan konfigurasi tersebut adalah multi-region. Jika konfigurasi tujuan bersifat regional, atau tidak menyertakan region baca-tulis yang diberi nama, pilihan pemimpin default akan dihapus.
  • Memindahkan instance akan mengubah atribut konfigurasi instance dari instance Anda. Jika Anda mengelola resource Spanner melalui otomatisasi, pastikan untuk menyiapkan dan mengatasi ketidakcocokan yang mungkin muncul.
    • Misalnya, jika Anda menggunakan Terraform untuk mengelola instance dan database Spanner, dan Anda mengaktifkan terraform apply --auto-approve untuk menjaga resource tetap sinkron, semua instance dan resource turunan akan dihapus saat kami memindahkan instance. Perbarui konfigurasi yang sesuai untuk menghindari penghapusan dan kehilangan data. Lihat Opsi Penerapan Terraform untuk mengetahui informasi selengkapnya tentang perintah apply.
  • Saat instance dipindahkan, metrik dan diagram pemantauan Spanner mungkin menampilkan data dalam konfigurasi instance sumber dan tujuan, atau mungkin hanya mencerminkan performa dalam satu konfigurasi instance.
  • Jika Anda telah mengonfigurasi alat Autoscaler open source, Anda tidak perlu menonaktifkannya. Alat ini gagal karena InstanceAdmin.UpdateInstance (digunakan untuk perubahan node dan unit pemrosesan) dinonaktifkan.
  • Anda tidak dapat memindahkan instance jika fitur autoscaler terkelola Spanner diaktifkan di instance tersebut. Untuk memindahkan instance, Anda harus menonaktifkan autoscaler terkelola, memindahkan instance, lalu mengaktifkan kembali autoscaler terkelola.
    • Selain itu, jika Anda menggunakan penskalaan otomatis, Anda harus menyediakan node yang cukup untuk penggunaan CPU puncak sesuai dengan rekomendasi maksimum yang tercatat, lalu menonaktifkan penskalaan otomatis sebelum Anda memindahkan instance.
  • Anda tidak dapat memindahkan instance uji coba gratis Spanner. Anda dapat memindahkan instance setelah mengupgrade ke instance berbayar.

Pertimbangan performa

Saat dipindahkan, instance mengalami latensi baca-tulis yang lebih tinggi dan tingkat pembatalan transaksi yang lebih tinggi. Penggunaan CPU selama pemindahan mungkin mencapai 100% karena pemindahan instance dilakukan menggunakan CPU cadangan yang disediakan oleh pengguna. Namun, memindahkan instance tidak menyebabkan periode nonaktif. Waktu yang diperlukan untuk memindahkan instance bergantung pada berbagai faktor, termasuk ukuran database, jumlah node, dan jenis pemindahan (misalnya, dari regional ke multi-region).

Setelah memindahkan instance, performa instance akan bervariasi bergantung pada detail konfigurasi instance. Misalnya, konfigurasi dual-region dan multi-region umumnya memiliki latensi tulis yang lebih tinggi dan latensi baca yang lebih rendah daripada konfigurasi regional.

Cadangan

Saat Anda memindahkan instance, cadangan dalam konfigurasi asli instance tidak akan otomatis dipindahkan ke konfigurasi tujuan baru. Pemindahan instance akan dibatalkan jika cadangan ada dalam konfigurasi asli instance saat Anda memulai pemindahan instance. Anda harus menyalin cadangan dan mempertimbangkan rencana pemulihan data sebelum memindahkan instance.

Jika ada cadangan dalam konfigurasi asli instance yang perlu Anda simpan, sebaiknya salin cadangan ke dua instance sementara kecil (100 PU), placeholder-source dan placeholder-dest:

  • placeholder-source: instance dengan konfigurasi instance yang sama dengan konfigurasi asli instance yang dipindahkan. Hal ini memungkinkan Anda memulihkan cadangan ke konfigurasi asli jika Anda perlu membatalkan pemindahan.

  • placeholder-dest: instance dengan konfigurasi instance yang sama dengan konfigurasi instance tujuan. Hal ini memastikan Anda memiliki cadangan yang siap tersedia dalam konfigurasi baru segera setelah pemindahan selesai.

Fitur pemulihan tidak mendukung pemulihan lintas konfigurasi, sehingga instance placeholder ini penting untuk rollback atau pemulihan cepat dalam konfigurasi baru jika diperlukan, yang memberikan jaminan jika terjadi masalah dengan instance yang dipindahkan.

Setelah menyalin cadangan ke placeholder-source dan placeholder-dest, Anda harus menghapus cadangan yang ada dalam konfigurasi asli instance sebelum dapat memindahkan instance. Kemudian, setelah pemindahan instance selesai, Anda sudah memiliki salinan cadangan dalam konfigurasi tujuan. Anda juga dapat membuat cadangan baru.

Dengan mengikuti pendekatan ini, Anda memastikan kelangsungan bisnis dan meminimalkan potensi periode nonaktif atau kehilangan data selama proses pemindahan instance.

Cara memindahkan instance

Anda dapat memindahkan instance dengan Google Cloud konsol Cloud Shell dan gcloud CLI menggunakan gcloud perintah.

Prasyarat

Sebelum memindahkan konfigurasi instance, pastikan Anda telah membaca bagian Batasan dan Pertimbangan performa. Kemudian, ikuti langkah-langkah berikut:

  1. Pastikan Anda memiliki spanner.instances.update izin IAM pada instance yang dipindahkan.
  2. Jika berlaku, pindahkan instance non-produksi (seperti pengujian dan staging) sebelum memindahkan instance produksi untuk membantu menilai dan memahami dampak performa pada workload selama pemindahan instance.
  3. Saat Anda memindahkan instance Spanner, proses pemindahan akan menghapus tag instance yang Anda buat di Data Catalog. Untuk mempertahankan tag, Anda harus mengekspor tag sebelum pemindahan dan mengimpornya setelah pemindahan. Untuk mengetahui informasi selengkapnya, lihat Mengekspor dan mengimpor tag.

Untuk praktik terbaik, ikuti juga panduan berikut:

  • Uji workload performa di instance non-produksi dalam konfigurasi instance tujuan sebelum memindahkan instance produksi. Coba pindahkan instance staging yang mirip dengan instance produksi Anda untuk mengetahui perkiraan waktu yang diperlukan untuk memindahkan instance produksi.
  • Pastikan tidak ada hotspot di database Anda menggunakan Key Visualizer.
  • Tinjau untuk memastikan Anda memiliki kuota node yang cukup dalam konfigurasi instance tujuan untuk mendukung penggunaan puncak yang diharapkan instance. Untuk mengetahui informasi selengkapnya, lihat Kuota & Batasan Spanner.
  • Pastikan penggunaan CPU puncak instance Anda kurang dari 40% untuk konfigurasi instance yang Anda pindahkan dan jumlah penyimpanan per node kurang dari 1 Tebibyte (TiB).
  • Jangan lakukan perubahan pada instance selama pemindahan. Hal ini mencakup mengubah jumlah node instance, mengubah skema database, membuat atau menghapus database, dan membuat atau menghapus cadangan.

Jika Anda memindahkan instance sesuai dengan rekomendasi ini, pemindahan biasanya akan selesai dalam waktu 24 jam. Namun, bergantung pada workload aplikasi, waktu penyelesaian mungkin lebih lama atau lebih singkat.

Memindahkan instance

Google Cloud Konsol

  1. Buka halaman Instances di Google Cloud konsol.

    Instance

  2. Pilih instance yang ingin Anda pindahkan.

  3. Di halaman Instance overview, di samping Configuration, klik Move instance to a new configuration.

  4. Di panel Move database to new configuration, pilih konfigurasi instance baru untuk instance Anda.

  5. Klik Save.

gcloud CLI

Gunakan perintah gcloud spanner instances move untuk memindahkan instance.

gcloud spanner instances move INSTANCE_ID \
--target-config=TARGET_CONFIG

Ganti kode berikut:

  • INSTANCE_ID: ID permanen untuk instance yang ingin Anda pindahkan.
  • TARGET_CONFIG: ID permanen konfigurasi instance tempat Anda ingin memindahkan instance. Lokasi geografis baru instance Anda. Konfigurasi ini dapat berupa konfigurasi instance regional, dual-region, atau multi-region (misalnya, nam3, regional-us-central1, atau custom-nam3-us-west2).

Misalnya, untuk memindahkan instance test-instance dari konfigurasi instance saat ini ke nam3, jalankan perintah berikut:

  gcloud spanner instances move test-instance --target-config=nam3

Opsional: Jika Anda ingin menambahkan replika hanya baca di region us-west2 ke konfigurasi instance dasar di nam3, lakukan hal berikut:

  1. Clone konfigurasi dasar dan tambahkan replika hanya baca ke konfigurasi instance kustom baru custom-nam3-us-west2:

    gcloud spanner instance-configs create custom-nam3-us-west2 \
    --clone-config=nam3 --add-replicas=location=us-west2, type=READ_ONLY
    
  2. Pindahkan instance test-instance dari konfigurasi instance saat ini ke konfigurasi instance custom-nam3-us-west2 baru ini:

    gcloud spanner instances move test-instance --target-config=custom-nam3-us-west2
    

Opsional: Memindahkan instance dengan database yang mendukung CMEK

Gunakan perintah gcloud spanner instances move untuk memindahkan instance dengan database yang mendukung CMEK. Anda harus menyertakan flag --target-database-move-configs dan nilai kunci KMS dalam perintah atau mengonfigurasi file JSON atau YAML dengan kunci KMS yang diperlukan.

Catatan penggunaan:

  • Jika Anda memiliki beberapa database yang mendukung CMEK di instance yang ingin dipindahkan, Anda harus menentukan --target-database-move-configs untuk setiap database. Anda dapat menggunakan kunci yang sama untuk setiap database, tetapi Anda harus menentukan kunci untuk setiap database yang mendukung CMEK.
  • Kunci Anda harus mencakup semua region dalam konfigurasi instance tujuan. Misalnya, jika konfigurasi instance tujuan Anda berada di nam3, Anda harus menetapkan kunci di regional-us-east4, regional-us-east1, dan regional-us-central1.
  • Anda tidak dapat menetapkan kunci KMS untuk database yang tidak mendukung CMEK saat memindahkan instance.
  • Anda tidak boleh menonaktifkan atau menghancurkan kunci CMEK dalam konfigurasi instance sumber atau tujuan saat memindahkan instance. Migrasi tidak akan dilanjutkan jika Anda mencoba.
  • Anda tidak dapat memindahkan instance yang memiliki partisi instance. Untuk mengetahui informasi selengkapnya tentang batasan partisi geografis, lihat batasan dalam ringkasan partisi geografis.
gcloud spanner instances move INSTANCE_ID \
  --target-config=TARGET_CONFIG \
  --target-database-move-configs=^:^database-id=DATABASE_ID_1:kms-key-names=KMS_KEY_1[, KMS_KEY_2 ... ] \
  [--target-database-move-configs=^:^database-id=DATABASE_ID_2:kms-key-names=KMS_KEY_1 ... ]

atau

gcloud spanner instances move INSTANCE_ID \
  --target-config=TARGET_CONFIG \
  --target-database-move-configs=CONFIG_FILE_PATH

Konfigurasikan file CONFIG_FILE_PATH dengan ID database dan kunci KMS Anda. Contoh file konfigurasi berikut berisi kunci KMS untuk dua database, database-1 dan database-2, dengan kunci yang sama di regional-us-east4, regional-us-east1, dan regional-us-central1 untuk mencakup semua region di nam3.

[
  {
    database-id: database-1,
    kms-key-names:
      "projects/[your-project]/locations/us-east4/keyRings/[your-keyring]/cryptoKeys/[your-key],projects/[your-project]/locations/us-east1/keyRings/[your-keyring]/cryptoKeys/[your-key],projects/[your-project]/locations/us-central1/keyRings/[your-keyring]/cryptoKeys/[your-key]",
  },
  {
    database-id: database-2,
    kms-key-names:
      "projects/[your-project]/locations/us-east4/keyRings/[your-keyring]/cryptoKeys/[your-key],projects/[your-project]/locations/us-east1/keyRings/[your-keyring]/cryptoKeys/[your-key],projects/[your-project]/locations/us-central1/keyRings/[your-keyring]/cryptoKeys/[your-key]",
  },
]

Cara memantau progres pemindahan dan pembatalan instance

Anda dapat menggunakan gcloud spanner operations describe atau membuat dasbor Cloud Monitoring kustom untuk memantau progres pemindahan instance.

Melihat progres operasi pemindahan dan pembatalan

Untuk melacak progres operasi pemindahan instance atau pembatalan pemindahan instance, gunakan gcloud spanner operations describe perintah. Perintah ini memerlukan ID operasi dari operasi pemindahan instance yang sedang berlangsung.

  1. Dapatkan ID operasi untuk operasi pemindahan instance dengan menjalankan:

    gcloud spanner operations list --instance="INSTANCE_ID"
    

    Ganti kode berikut:

    • INSTANCE_ID: ID permanen untuk instance yang Anda ingin pindahkan.

    Output menampilkan daftar operasi yang berjalan lama, termasuk operasi pemindahan instance.

  2. Jalankan perintah gcloud spanner operations describe untuk melihat persentase dan status progres:

    gcloud spanner operations describe OPERATION_ID --instance=INSTANCE_ID
    

    Ganti kode berikut:

    • OPERATION_ID: ID operasi dari operasi pemindahan instance yang ingin Anda periksa.
    • INSTANCE_ID: ID instance untuk instance yang ingin Anda periksa.

Memantau operasi pemindahan instance

Anda dapat membuat dasbor Cloud Monitoring kustom untuk menampilkan dan memantau metrik selama pemindahan instance, operasi yang berjalan lama dengan potensi implikasi layanan.

Grafik Total storage dan Total database storage by databases di dasbor berguna untuk memantau progres pemindahan. Anda dapat melihat penyimpanan dalam konfigurasi sumber secara bertahap menurun, sementara penyimpanan dalam konfigurasi tujuan meningkat.

Google Cloud Konsol

  1. Download move-instance-dashboard.json file. File ini memiliki informasi yang diperlukan untuk mengisi dasbor kustom di Monitoring.
  2. Di Google Cloud konsol, buka halaman  Dasbor:

    Buka Dashboards

    Jika Anda menggunakan kotak penelusuran untuk menemukan halaman ini, pilih hasil yang subjudulnya adalah Monitoring.

  3. Di halaman Dashboards Overview, klik Create dashboard.
  4. Di toolbar dasbor, klik menu drop-down Dashboard settings. Kemudian pilih JSON, lalu JSON Editor.
  5. Di panel JSON Editor, salin konten file move-instance-dashboard.json yang Anda download dan tempelkan ke editor.
  6. Untuk menerapkan perubahan pada dasbor, klik Apply changes. Jika Anda tidak ingin menggunakan dasbor ini, kembali ke halaman Dashboards Overview.
  7. Setelah dasbor dibuat, klik Add Filter. Kemudian, pilih project_id atau instance_id untuk memantau progres pemindahan instance.

gcloud CLI

  1. Download move-instance-dashboard.json file. File ini memiliki informasi yang diperlukan untuk mengisi dasbor kustom di Monitoring.
  2. Untuk membuat dasbor dalam project, gunakan perintah gcloud monitoring dashboards create:

    gcloud monitoring dashboards create --config-from-file=move-instance-dashboard.json
    

    Untuk mengetahui informasi selengkapnya, lihat gcloud monitoring dashboards create referensi.

Cara membatalkan pemindahan instance

Anda hanya dapat membatalkan pemindahan instance yang masih berlangsung. Jika ingin mengembalikan pemindahan instance yang sudah selesai, Anda harus memulai pemindahan baru.

Anda dapat menggunakan gcloud spanner operations cancel untuk membatalkan operasi pemindahan instance. Pembatalan tidak terjadi secara instan dan memerlukan waktu yang hampir sama dengan waktu yang telah berlalu sejak awal pemindahan. Hal ini karena data harus dipindahkan kembali ke konfigurasi instance sumber.

Perintah ini memerlukan ID operasi dari operasi pemindahan instance yang sedang berlangsung.

  1. Dapatkan ID operasi dengan menjalankan:

    gcloud spanner operations list --type=INSTANCE --instance="INSTANCE_ID"
    --filter="done:False AND metadata.@type:MoveInstanceMetadata"
    

    Ganti kode berikut:

    • INSTANCE_ID: ID permanen untuk instance yang Anda ingin pindahkan.

    Output menampilkan daftar operasi pemindahan instance yang sedang berlangsung.

  2. Jalankan perintah gcloud spanner operations cancel untuk membatalkan pemindahan instance:

    gcloud spanner operations cancel OPERATION_ID
    

    Ganti kode berikut:

    • OPERATION_ID: ID operasi dari operasi pemindahan instance yang ingin Anda batalkan.

Langkah berikutnya