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": "SQLSERVER_2019_STANDARD" }
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": "SQLSERVER_2019_STANDARD" }
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": "SQLSERVER_2019_STANDARD" }
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": "SQLSERVER_2019_STANDARD" }
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.
Menerapkan perubahan
Untuk menerapkan konfigurasi Terraform di project Google Cloud, selesaikan langkah-langkah di bagian berikut.
Menyiapkan Cloud Shell
- Luncurkan Cloud Shell.
-
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).
-
Di Cloud Shell, buat direktori dan file baru di dalam direktori tersebut. Nama file harus memiliki
ekstensi
.tf
—misalnyamain.tf
. Dalam tutorial ini, file ini disebut sebagaimain.tf
.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
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.
- Tinjau dan ubah contoh parameter untuk diterapkan pada lingkungan Anda.
- Simpan perubahan Anda.
-
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
-
Tinjau konfigurasi dan pastikan resource yang akan dibuat atau
diupdate oleh Terraform sesuai yang Anda inginkan:
terraform plan
Koreksi konfigurasi jika diperlukan.
-
Terapkan konfigurasi Terraform dengan menjalankan perintah berikut dan memasukkan
yes
pada prompt:terraform apply
Tunggu hingga Terraform menampilkan pesan "Apply complete!".
- 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:
- Untuk menonaktifkan perlindungan penghapusan, di file konfigurasi Terraform Anda, tetapkan
argumen
deletion_protection
kefalse
.deletion_protection = "false"
- Terapkan konfigurasi Terraform dengan menjalankan perintah berikut dan
memasukkan
yes
pada prompt:terraform apply
-
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.
Menerapkan perubahan
Untuk menerapkan konfigurasi Terraform di project Google Cloud, selesaikan langkah-langkah di bagian berikut.
Menyiapkan Cloud Shell
- Luncurkan Cloud Shell.
-
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).
-
Di Cloud Shell, buat direktori dan file baru di dalam direktori tersebut. Nama file harus memiliki
ekstensi
.tf
—misalnyamain.tf
. Dalam tutorial ini, file ini disebut sebagaimain.tf
.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
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.
- Tinjau dan ubah contoh parameter untuk diterapkan pada lingkungan Anda.
- Simpan perubahan Anda.
-
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
-
Tinjau konfigurasi dan pastikan resource yang akan dibuat atau
diupdate oleh Terraform sesuai yang Anda inginkan:
terraform plan
Koreksi konfigurasi jika diperlukan.
-
Terapkan konfigurasi Terraform dengan menjalankan perintah berikut dan memasukkan
yes
pada prompt:terraform apply
Tunggu hingga Terraform menampilkan pesan "Apply complete!".
- 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:
- Untuk menonaktifkan perlindungan penghapusan, di file konfigurasi Terraform Anda, tetapkan
argumen
deletion_protection
kefalse
.deletion_protection = "false"
- Terapkan konfigurasi Terraform dengan menjalankan perintah berikut dan
memasukkan
yes
pada prompt:terraform apply
-
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
- Lihat log operasi instance.
- Baca FAQ Pemeliharaan.
- Pelajari lebih lanjut replikasi di Cloud SQL.