Memindahkan instance

Halaman ini menjelaskan cara memindahkan instance di Spanner.

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

Anda juga dapat memindahkan instance dari konfigurasi instance sumbernya 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 Anda inginkan terlebih dahulu. Setelah membuat konfigurasi instance kustom baru, Anda dapat memindahkan instance dari konfigurasi instance sumber ke konfigurasi instance kustom baru.

Mengapa Anda perlu memindahkan instance Spanner?

Manfaat memindahkan instance Anda meliputi:

  • Meningkatkan ketersediaan: Dapatkan ketersediaan 99,999% dengan periode nonaktif nol 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 dari multi-region ke multi-region.
  • Mengurangi biaya: Kurangi biaya per jam dengan beralih dari konfigurasi dual-region atau multi-region ke konfigurasi regional.
  • Menempatkan database secara bersamaan: Tempatkan database Spanner bersama 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 pada 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 harus memiliki minimal 1 node (1.000 unit pemrosesan).
  • Anda tidak dapat memindahkan instance di seluruh project dan akun Google Cloud .
  • Anda tidak dapat memindahkan instance yang menggunakan edisi Standard langsung dari konfigurasi instance regional ke konfigurasi instance multi-region atau multi-region. Anda harus mengupgrade edisi instance Anda ke edisi Enterprise Plus terlebih dahulu, lalu memindahkan instance.
  • Jika Anda memiliki permintaan aktif yang menggunakan endpoint layanan regional di salah satu resource instance, pemindahan instance akan memengaruhi semua permintaan yang menggunakan endpoint regional karena penegakan regional memblokir akses ke instance lintas-region. Permintaan yang menggunakan endpoint global tidak terpengaruh.
  • Pencadangan Spanner khusus untuk konfigurasi instance dan tidak disertakan saat memindahkan instance. Untuk mengetahui informasi selengkapnya, lihat Pencadangan.
  • 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 akan dipertahankan jika memilih region baca-tulis dalam konfigurasi instance tujuan, dan konfigurasi tersebut adalah multi-region. Jika konfigurasi tujuan bersifat regional, atau tidak mencakup region baca-tulis bernama, pemilihan 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 inkonsistensi yang mungkin muncul.
    • Misalnya, jika Anda menggunakan Terraform untuk mengelola instance dan database Spanner, dan Anda mengaktifkan terraform apply --auto-approve agar resource tetap disinkronkan, semua instance dan resource turunan akan dihapus saat kita 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 hanya mencerminkan performa dalam satu konfigurasi instance.
  • Jika Anda telah mengonfigurasi alat Autoscaler open source, Anda tidak perlu menonaktifkannya. Hal 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 tercantum, lalu menonaktifkan penskalaan otomatis sebelum 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 dapat meningkat hingga 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, regional ke multi-regional).

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

Cadangan

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

Jika ada cadangan di instance sumber yang perlu Anda simpan, sebaiknya salin cadangan Anda ke konfigurasi instance tujuan dan instance lain dengan konfigurasi instance yang sama seperti instance sumber yang akan dipindahkan. Hal ini agar:

  • Anda dapat menyalin cadangan ke konfigurasi instance tujuan segera setelah pemindahan instance selesai.
  • Jika perlu membatalkan pemindahan instance, Anda juga dapat memulihkan cadangan dengan cepat dari instance dengan konfigurasi yang sama seperti konfigurasi instance sumber.

Setelah menyalin cadangan ke instance lain, Anda harus menghapus cadangan yang ada di instance sumber sebelum dapat memindahkan instance. Kemudian, setelah pemindahan instance selesai, Anda sudah memiliki salinan cadangan dalam konfigurasi tujuan. Anda juga dapat membuat cadangan baru.

Untuk mempelajari lebih lanjut cara menyalin cadangan dan biaya terkait, lihat Menyalin cadangan.

Cara memindahkan instance

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

Prasyarat

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

  1. Pastikan Anda memiliki izin IAM spanner.instances.update pada instance sumber.
  2. Jika berlaku, pindahkan instance non-produksi Anda (seperti pengujian dan penyiapan) sebelum memindahkan instance produksi Anda untuk membantu menilai dan memahami dampak performa pada beban kerja 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 Anda. Coba pindahkan instance staging yang mirip dengan instance produksi Anda untuk mengetahui berapa lama waktu yang dibutuhkan untuk memindahkan instance produksi Anda.
  • Periksa apakah ada hotspot di database Anda menggunakan Key Visualizer.
  • Tinjau untuk memastikan Anda memiliki kuota node yang cukup dalam konfigurasi instance tujuan untuk mendukung perkiraan penggunaan puncak instance. Untuk mengetahui informasi selengkapnya, lihat Kuota & Batas Spanner.
  • Pastikan pemanfaatan CPU puncak instance Anda kurang dari 40% untuk konfigurasi instance yang Anda pindahkan dan jumlah penyimpanan per node kurang dari 1 Tebibyte (TiB).
  • Jangan melakukan perubahan pada instance selama pemindahan. Hal ini mencakup perubahan jumlah node instance, perubahan skema database, pembuatan atau penghapusan database, serta pembuatan atau penghapusan cadangan.

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

Memindahkan instance

Google Cloud console

  1. Buka halaman Instances di konsol Google Cloud .

    Instance

  2. Pilih instance yang ingin Anda pindahkan.

  3. Di halaman Ringkasan instance, di samping Konfigurasi, klik edit Pindahkan instance ke konfigurasi baru.

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

  5. Klik Simpan.

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, 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 diaktifkan untuk CMEK di instance yang ingin dipindahkan, Anda harus menentukan -—target-database-move-configs untuk setiap database tersebut. 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 us-east4, us-east1, dan 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.
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

Konfigurasi 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 us-east4, us-east1, dan 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 perintah gcloud spanner operations describe. Perintah ini memerlukan ID operasi pemindahan instance yang sedang berlangsung.

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

    gcloud spanner operations list --instance="INSTANCE_ID"
    

    Ganti kode berikut:

    • INSTANCE_ID: ID permanen untuk instance yang ingin Anda 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 penyimpanan dan Total penyimpanan database menurut database di dasbor akan membantu memantau progres pemindahan. Anda dapat melihat penyimpanan dalam konfigurasi sumber menurun secara bertahap, sementara penyimpanan dalam konfigurasi tujuan meningkat.

Google Cloud console

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

    Buka Dasbor

    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 drop-down Setelan dasbor. Kemudian pilih JSON, lalu Editor JSON.
  5. Di panel JSON Editor, salin konten file move-instance-dashboard.json yang Anda download dan tempelkan di editor.
  6. Untuk menerapkan perubahan pada dasbor, klik Terapkan perubahan. Jika Anda tidak ingin menggunakan dasbor ini, kembali ke halaman Ringkasan Dasbor.
  7. Setelah dasbor dibuat, klik Tambahkan Filter. Kemudian, pilih project_id atau instance_id untuk memantau progres pemindahan instance.

gcloud CLI

  1. Download file move-instance-dashboard.json. 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 informasi selengkapnya, lihat referensi gcloud monitoring dashboards create

Cara membatalkan pemindahan instance

Anda hanya dapat membatalkan pemindahan instance yang masih dalam proses. 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 dimulainya pemindahan. Hal ini karena data harus dipindahkan kembali ke konfigurasi instance sumber.

Perintah ini memerlukan ID 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 ingin Anda 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