Pemeliharaan mandiri

Halaman ini menjelaskan pemeliharaan mandiri, yang memungkinkan Anda menerima update pemeliharaan pada instance di luar alur normal pemeliharaan terjadwal.

Ringkasan

Cloud SQL secara rutin merilis peningkatan software seperti patch untuk kerentanan yang diketahui, melalui versi pemeliharaan baru. Meskipun Cloud SQL menjadwalkan update pemeliharaan setiap beberapa bulan sekali untuk memastikan bahwa Anda memiliki versi pemeliharaan terbaru, sebaiknya gunakan pemeliharaan mandiri jika:

  • Anda memerlukan update lebih cepat daripada peristiwa pemeliharaan terjadwal berikutnya.
  • Anda ingin mengikuti versi pemeliharaan terbaru setelah melewati peristiwa pemeliharaan terjadwal terbaru.

Anda tidak perlu mengupdate ke versi terbaru secara manual. Anda dapat mengizinkan Cloud SQL mengupdate versi pemeliharaan secara otomatis selama peristiwa pemeliharaan terjadwal berikutnya.

Mengelola pemeliharaan di semua replika baca dari instance utama

Saat Anda melakukan pemeliharaan mandiri pada instance utama yang memiliki replika baca, Cloud SQL akan otomatis menerapkan update pemeliharaan ke semua replika bacanya. Jika Anda memiliki lebih dari tiga instance replika baca, instance akan dibagi menjadi beberapa grup dan diupdate secara paralel. Sebagai langkah terakhir, update pemeliharaan diterapkan ke instance utama.

Jika perlu, Anda tetap dapat melakukan pemeliharaan mandiri pada satu replika baca. Namun, untuk memastikan bahwa semua instance replika baca dan instance utama beroperasi pada versi pemeliharaan yang sama, sebaiknya Anda melakukan pemeliharaan mandiri pada semua replika baca instance utama secara bersamaan.

Untuk mengupdate satu instance replika baca, tentukan instance replika baca tersebut saat Anda melakukan pemeliharaan mandiri.

Sebelum memulai

Sebelum melakukan pemeliharaan mandiri, periksa versi pemeliharaan saat ini terlebih dahulu. Kemudian, Anda dapat menentukan versi pemeliharaan target yang diinginkan untuk diupdate dan mengupdate instance ke versi tersebut. Jika Anda menggunakan replika baca, update semua replika baca instance utama ke versi tersebut.

Untuk melihat versi pemeliharaan instance saat ini, gunakan prosedur berikut:

gcloud

Sebelum menjalankan perintah gcloud berikut, lakukan penggantian berikut:

  • INSTANCE_ID: Instance yang akan dikueri
gcloud sql instances describe INSTANCE_ID
  

Versi pemeliharaan yang diinstal di instance ditunjukkan di samping atribut maintenanceVersion.

REST v1

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • PROJECT_ID: ID atau nomor project project Google Cloud yang berisi instance
  • INSTANCE_NAME: nama instance yang Anda konfigurasi untuk ketersediaan tinggi

Metode HTTP dan URL:

GET https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME

Untuk mengirim permintaan, perluas salah satu opsi berikut:

Anda akan melihat respons JSON yang mirip seperti berikut:

{
  "kind": "sql#instance",
  "state": "RUNNABLE",
  "databaseVersion": "POSTGRES_13"
}

Cari item maintenanceVersion di bagian DatabaseInstance respons.

REST v1beta4

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • PROJECT_ID: ID atau nomor project project Google Cloud yang berisi instance
  • INSTANCE_NAME: nama instance yang Anda konfigurasi untuk ketersediaan tinggi

Metode HTTP dan URL:

GET https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_NAME

Untuk mengirim permintaan, perluas salah satu opsi berikut:

Anda akan melihat respons JSON yang mirip seperti berikut:

{
  "kind": "sql#instance",
  "state": "RUNNABLE",
  "databaseVersion": "POSTGRES_13"
}

Cari item maintenanceVersion di bagian DatabaseInstance respons.

Menentukan versi pemeliharaan target

Gunakan metode berikut untuk melihat versi pemeliharaan yang dapat Anda pilih sebagai target. Anda tidak dapat mengupdate ke versi lama dari versi pemeliharaan saat ini.

gcloud

Sebelum menjalankan perintah gcloud berikut, lakukan penggantian berikut:

  • INSTANCE_ID: Instance yang akan dikueri
gcloud sql instances describe INSTANCE_ID
  

Versi pemeliharaan yang tersedia ditunjukkan di samping atribut availableMaintenanceVersions.

REST v1

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • PROJECT_ID: ID atau nomor project project Google Cloud yang berisi instance
  • INSTANCE_NAME: nama instance yang Anda konfigurasi untuk ketersediaan tinggi

Metode HTTP dan URL:

GET https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME

Untuk mengirim permintaan, perluas salah satu opsi berikut:

Anda akan melihat respons JSON yang mirip seperti berikut:

{
  "kind": "sql#instance",
  "state": "RUNNABLE",
  "databaseVersion": "POSTGRES_13"
}

Cari item availableMaintenanceVersions di bagian DatabaseInstance respons.

REST v1beta4

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • PROJECT_ID: ID atau nomor project project Google Cloud yang berisi instance
  • INSTANCE_NAME: nama instance yang Anda konfigurasi untuk ketersediaan tinggi

Metode HTTP dan URL:

GET https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_NAME

Untuk mengirim permintaan, perluas salah satu opsi berikut:

Anda akan melihat respons JSON yang mirip seperti berikut:

{
  "kind": "sql#instance",
  "state": "RUNNABLE",
  "databaseVersion": "POSTGRES_13"
}

Cari item availableMaintenanceVersions di bagian DatabaseInstance respons.

Mengupdate semua replika baca dari instance utama ke versi pemeliharaan target

Untuk melakukan update pemeliharaan pada semua instance replika baca dari instance utama, gunakan prosedur berikut.

gcloud

Sebelum menggunakan perintah gcloud berikut, lakukan penggantian berikut:

  • PRIMARY_INSTANCE_ID: ID instance utama
  • MAINTENANCE_VERSION: Versi pemeliharaan Cloud SQL yang akan diterapkan
gcloud sql instances patch PRIMARY_INSTANCE_ID \
   --maintenance-version=MAINTENANCE_VERSION
  

Pada perintah konfirmasi, ketik Y untuk melanjutkan, atau ketikkan N untuk membatalkan.

Jika Anda memilih Y, proses update akan menerapkan versi pemeliharaan yang ditentukan ke semua replika baca terlebih dahulu sebelum mengupdate instance utama. Setiap instance replika baca yang telah diupdate ke versi pemeliharaan target akan dilewati.

Jika Anda memilih N, tidak ada instance yang diupdate.

Setelah pembaruan replika baca dan instance utama selesai, pesan yang mirip dengan berikut akan muncul:

  Patching Cloud SQL instance....done.
  Patching Cloud SQL instance....done.
  Patching Cloud SQL instance....done.
  Updated [https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/PRIMARY_INSTANCE_ID]
  

Terraform

Untuk membuat instance, gunakan resource Terraform.

resource "google_sql_database_instance" "postgres_ssm_instance_name" {
  name                = "postgres-ssm-instance-name"
  region              = "asia-northeast1"
  database_version    = "POSTGRES_14"
  maintenance_version = "POSTGRES_14_4.R20220710.01_07"
  settings {
    tier = "db-f1-micro"
  }
  # set `deletion_protection` to true, will ensure that one cannot accidentally delete this instance by
  # use of Terraform whereas `deletion_protection_enabled` flag protects this instance at the GCP level.
  deletion_protection = false
}

Menerapkan perubahan

Untuk menerapkan konfigurasi Terraform di project Google Cloud, selesaikan langkah-langkah di bagian berikut.

Menyiapkan Cloud Shell

  1. Luncurkan Cloud Shell.
  2. Tetapkan project Google Cloud default tempat Anda ingin menerapkan konfigurasi Terraform.

    Anda hanya perlu menjalankan perintah ini sekali per project, dan dapat dijalankan di direktori mana pun.

    export GOOGLE_CLOUD_PROJECT=PROJECT_ID

    Variabel lingkungan akan diganti jika Anda menetapkan nilai eksplisit dalam file konfigurasi Terraform.

Menyiapkan direktori

Setiap file konfigurasi Terraform harus memiliki direktorinya sendiri (juga disebut modul root).

  1. Di Cloud Shell, buat direktori dan file baru di dalam direktori tersebut. Nama file harus memiliki ekstensi .tf—misalnya main.tf. Dalam tutorial ini, file ini disebut sebagai main.tf.
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. Jika mengikuti tutorial, Anda dapat menyalin kode contoh di setiap bagian atau langkah.

    Salin kode contoh ke dalam main.tf yang baru dibuat.

    Atau, salin kode dari GitHub. Tindakan ini direkomendasikan jika cuplikan Terraform adalah bagian dari solusi menyeluruh.

  3. Tinjau dan ubah contoh parameter untuk diterapkan pada lingkungan Anda.
  4. Simpan perubahan Anda.
  5. Lakukan inisialisasi Terraform. Anda hanya perlu melakukan ini sekali per direktori.
    terraform init

    Secara opsional, untuk menggunakan versi penyedia Google terbaru, sertakan opsi -upgrade:

    terraform init -upgrade

Menerapkan perubahan

  1. Tinjau konfigurasi dan pastikan resource yang akan dibuat atau diupdate oleh Terraform sesuai yang Anda inginkan:
    terraform plan

    Koreksi konfigurasi jika diperlukan.

  2. Terapkan konfigurasi Terraform dengan menjalankan perintah berikut dan memasukkan yes pada prompt:
    terraform apply

    Tunggu hingga Terraform menampilkan pesan "Apply complete!".

  3. Buka project Google Cloud Anda untuk melihat hasilnya. Di Konsol Google Cloud, buka resource Anda di UI untuk memastikan bahwa Terraform telah membuat atau mengupdatenya.

Menghapus perubahan

Untuk menghapus perubahan Anda, lakukan langkah-langkah berikut:

  1. Untuk menonaktifkan perlindungan penghapusan, di file konfigurasi Terraform Anda, tetapkan argumen deletion_protection ke false.
    deletion_protection =  "false"
  2. Terapkan konfigurasi Terraform dengan menjalankan perintah berikut dan memasukkan yes pada prompt:
    terraform apply
  1. Hapus resource yang sebelumnya diterapkan dengan konfigurasi Terraform Anda dengan menjalankan perintah berikut dan memasukkan yes pada prompt:

    terraform destroy

REST v1

Sebelum menggunakan salah satu dari data permintaan, lakukan penggantian berikut:

  • PROJECT_ID: ID project
  • PROJECT_ID: ID instance instance utama
  • MAINTENANCE_VERSION: Versi pemeliharaan software Cloud SQL yang akan diterapkan

Metode HTTP dan URL:

PATCH https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID

Meminta isi JSON:

{
  "maintenanceVersion": "MAINTENANCE_VERSION"
}

Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:

Anda akan melihat respons JSON seperti berikut:

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2020-01-16T02:32:12.281Z",
  "startTime": "08:00",
  "endTime": "08:01",
  "operationType": UPDATE,
  "name": "OPERATION_ID",
  "targetId": "PRIMARY_INSTANCE_ID",
  "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID",
  "targetProject": "PROJECT_ID"
}

REST v1beta4

Sebelum menggunakan salah satu dari data permintaan, lakukan penggantian berikut:

  • PROJECT_ID: ID project
  • INSTANCE_ID: ID instance instance utama
  • MAINTENANCE_VERSION: Versi pemeliharaan software Cloud SQL yang akan diterapkan

Metode HTTP dan URL:

PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID

Meminta isi JSON:

{
  "maintenanceVersion": "MAINTENANCE_VERSION"
}

Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:

Anda akan melihat respons JSON seperti berikut:

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2020-01-16T02:32:12.281Z",
  "startTime": "08:00",
  "endTime": "08:01",
  "operationType": UPDATE,
  "name": "OPERATION_ID",
  "targetId": "INSTANCE_ID",
  "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/operations/OPERATION_ID",
  "targetProject": "PROJECT_ID"
}

Mengupdate satu instance ke versi pemeliharaan target

Untuk melakukan update pemeliharaan pada satu instance, gunakan prosedur berikut. Jika perlu, Anda dapat menggunakan prosedur ini untuk memperbarui satu instance replika baca.

gcloud

Sebelum menggunakan perintah gcloud berikut, lakukan penggantian berikut:

  • INSTANCE_ID: ID instance. Instance ini dapat berupa instance replika baca.
  • MAINTENANCE_VERSION: Versi pemeliharaan Cloud SQL yang akan diterapkan
  gcloud sql instances patch INSTANCE_ID \
     --maintenance-version=MAINTENANCE_VERSION
  

Jika Anda menentukan replika baca, perintah untuk konfirmasi akan muncul. Ketik Y untuk melanjutkan atau N untuk membatalkan.

  • Jika Anda memilih Y, proses update akan menerapkan versi pemeliharaan yang ditentukan hanya ke replika baca yang ditentukan.
  • Jika Anda memilih N, tidak ada instance yang diupdate.

Setelah update instance selesai, pesan yang mirip dengan berikut akan muncul:

  Patching Cloud SQL instance....done.
  Updated [https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID]
  

Terraform

Untuk membuat instance, gunakan resource Terraform.

resource "google_sql_database_instance" "postgres_ssm_instance_name" {
  name                = "postgres-ssm-instance-name"
  region              = "asia-northeast1"
  database_version    = "POSTGRES_14"
  maintenance_version = "POSTGRES_14_4.R20220710.01_07"
  settings {
    tier = "db-f1-micro"
  }
  # set `deletion_protection` to true, will ensure that one cannot accidentally delete this instance by
  # use of Terraform whereas `deletion_protection_enabled` flag protects this instance at the GCP level.
  deletion_protection = false
}

Menerapkan perubahan

Untuk menerapkan konfigurasi Terraform di project Google Cloud, selesaikan langkah-langkah di bagian berikut.

Menyiapkan Cloud Shell

  1. Luncurkan Cloud Shell.
  2. Tetapkan project Google Cloud default tempat Anda ingin menerapkan konfigurasi Terraform.

    Anda hanya perlu menjalankan perintah ini sekali per project, dan dapat dijalankan di direktori mana pun.

    export GOOGLE_CLOUD_PROJECT=PROJECT_ID

    Variabel lingkungan akan diganti jika Anda menetapkan nilai eksplisit dalam file konfigurasi Terraform.

Menyiapkan direktori

Setiap file konfigurasi Terraform harus memiliki direktorinya sendiri (juga disebut modul root).

  1. Di Cloud Shell, buat direktori dan file baru di dalam direktori tersebut. Nama file harus memiliki ekstensi .tf—misalnya main.tf. Dalam tutorial ini, file ini disebut sebagai main.tf.
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. Jika mengikuti tutorial, Anda dapat menyalin kode contoh di setiap bagian atau langkah.

    Salin kode contoh ke dalam main.tf yang baru dibuat.

    Atau, salin kode dari GitHub. Tindakan ini direkomendasikan jika cuplikan Terraform adalah bagian dari solusi menyeluruh.

  3. Tinjau dan ubah contoh parameter untuk diterapkan pada lingkungan Anda.
  4. Simpan perubahan Anda.
  5. Lakukan inisialisasi Terraform. Anda hanya perlu melakukan ini sekali per direktori.
    terraform init

    Secara opsional, untuk menggunakan versi penyedia Google terbaru, sertakan opsi -upgrade:

    terraform init -upgrade

Menerapkan perubahan

  1. Tinjau konfigurasi dan pastikan resource yang akan dibuat atau diupdate oleh Terraform sesuai yang Anda inginkan:
    terraform plan

    Koreksi konfigurasi jika diperlukan.

  2. Terapkan konfigurasi Terraform dengan menjalankan perintah berikut dan memasukkan yes pada prompt:
    terraform apply

    Tunggu hingga Terraform menampilkan pesan "Apply complete!".

  3. Buka project Google Cloud Anda untuk melihat hasilnya. Di Konsol Google Cloud, buka resource Anda di UI untuk memastikan bahwa Terraform telah membuat atau mengupdatenya.

Menghapus perubahan

Untuk menghapus perubahan Anda, lakukan langkah-langkah berikut:

  1. Untuk menonaktifkan perlindungan penghapusan, di file konfigurasi Terraform Anda, tetapkan argumen deletion_protection ke false.
    deletion_protection =  "false"
  2. Terapkan konfigurasi Terraform dengan menjalankan perintah berikut dan memasukkan yes pada prompt:
    terraform apply
  1. Hapus resource yang sebelumnya diterapkan dengan konfigurasi Terraform Anda dengan menjalankan perintah berikut dan memasukkan yes pada prompt:

    terraform destroy

REST v1

Sebelum menggunakan salah satu dari data permintaan, lakukan penggantian berikut:

  • PROJECT_ID: ID project
  • PROJECT_ID: ID instance, yang dapat berupa instance replika baca
  • MAINTENANCE_VERSION: Versi pemeliharaan software Cloud SQL yang akan diterapkan

Metode HTTP dan URL:

PATCH https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID

Meminta isi JSON:

{
  "maintenanceVersion": "MAINTENANCE_VERSION"
}

Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:

Anda akan melihat respons JSON seperti berikut:

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2020-01-16T02:32:12.281Z",
  "startTime": "08:00",
  "endTime": "08:01",
  "operationType": UPDATE,
  "name": "OPERATION_ID",
  "targetId": "PRIMARY_INSTANCE_ID",
  "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID",
  "targetProject": "PROJECT_ID"
}

REST v1beta4

Sebelum menggunakan salah satu dari data permintaan, lakukan penggantian berikut:

  • PROJECT_ID: ID project
  • INSTANCE_ID: ID instance, yang dapat berupa instance replika baca
  • MAINTENANCE_VERSION: Versi pemeliharaan software Cloud SQL yang akan diterapkan

Metode HTTP dan URL:

PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID

Meminta isi JSON:

{
  "maintenanceVersion": "MAINTENANCE_VERSION"
}

Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:

Anda akan melihat respons JSON seperti berikut:

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2020-01-16T02:32:12.281Z",
  "startTime": "08:00",
  "endTime": "08:01",
  "operationType": UPDATE,
  "name": "OPERATION_ID",
  "targetId": "INSTANCE_ID",
  "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/operations/OPERATION_ID",
  "targetProject": "PROJECT_ID"
}

Memecahkan masalah

Masalah Pemecahan masalah
Tidak dapat menerapkan update pemeliharaan ke instance yang dihentikan. Untuk mengatasinya, mulai instance sebelum Anda melakukan update pemeliharaan mandiri.
Karena perbedaan versi utama database, update pemeliharaan gagal.

Anda tidak dapat menggunakan pemeliharaan mandiri untuk mengupgrade versi utama database instance.

Untuk mengupgrade versi utama instance, gunakan salah satu prosedur berikut:

Langkah selanjutnya