Mengonfigurasi pemulihan point-in-time (PITR)

Pemulihan point-in-time (PITR) memungkinkan Anda memulihkan instance Cloud SQL ke titik waktu tertentu. Hal ini membantu Anda memulihkan data yang hilang dan mengembalikan perubahan atau kerusakan yang tidak diinginkan.

PITR memerlukan pencadangan otomatis. Anda dapat mengonfigurasi PITR pada instance yang ada dengan mengaktifkan atau menonaktifkan fitur, menyesuaikan retensi log transaksi, dan mengalihkan penyimpanan log transaksi ke Cloud Storage.

Sebelum memulai

Sebelum memulai, tinjau hal berikut:

  • Jika Anda mengaktifkan PITR pada instance yang ada, instance tersebut akan dimulai ulang.
  • PITR diaktifkan secara default saat Anda membuat instance edisi Cloud SQL Enterprise di konsol Google Cloud . Jika Anda menggunakan gcloud CLI, Terraform, atau Cloud SQL Admin API dan ingin mengaktifkan fitur ini, Anda harus melakukannya secara manual.
  • PITR diaktifkan secara default saat Anda membuat instance edisi Cloud SQL Enterprise Plus, terlepas dari metode yang digunakan. Jika ingin menonaktifkan fitur ini, Anda harus melakukannya secara manual.
  • Pencadangan otomatis diaktifkan secara default saat Anda membuat instance di konsol Google Cloud . Jika Anda menggunakan gcloud CLI, Terraform, atau Cloud SQL Admin API dan ingin mengaktifkan fitur ini, Anda harus melakukannya secara manual.

Mengaktifkan PITR

Prosedur berikut memungkinkan PITR pada instance utama yang sudah ada.

Konsol

  1. Di konsol Google Cloud , buka halaman Instance Cloud SQL.

    Buka Instance Cloud SQL

  2. Buka menu tindakan lainnya Ikon tindakan lainnya. untuk instance yang ingin Anda aktifkan PITR, lalu klik Edit.
  3. Di bagian Sesuaikan instance Anda, luaskan bagian Perlindungan Data.
  4. Pilih kotak centang Aktifkan pemulihan point-in-time.
  5. Di kolom Days of logs, masukkan jumlah hari untuk menyimpan log, dari 1-35 untuk edisi Cloud SQL Enterprise Plus, atau 1-7 untuk edisi Cloud SQL Enterprise.
  6. Klik Simpan.

gcloud

  1. Tampilkan ringkasan instance:
    gcloud sql instances describe INSTANCE_NAME
  2. Jika Anda melihat enabled: false di bagian backupConfiguration, aktifkan pencadangan terjadwal:
    gcloud sql instances patch INSTANCE_NAME \
    --backup-start-time=HH:MM

    Tentukan parameter backup-start-time menggunakan waktu 24 jam dalam zona waktu UTC±00.

  3. Mengaktifkan PITR:
    gcloud sql instances patch INSTANCE_NAME \
    --enable-point-in-time-recovery

    Jika Anda mengaktifkan PITR pada instance utama, Anda juga dapat mengonfigurasi jumlah hari saat Anda ingin mempertahankan log transaksi dengan menambahkan parameter berikut:

    --retained-transaction-log-days=RETAINED_TRANSACTION_LOG_DAYS
  4. Konfirmasi perubahan Anda:
    gcloud sql instances describe INSTANCE_NAME

    Di bagian backupConfiguration, Anda akan melihat pointInTimeRecoveryEnabled: true jika perubahan berhasil.

Terraform

Untuk mengaktifkan PITR, gunakan resource Terraform.

resource "google_sql_database_instance" "postgres_instance_pitr" {
  name             = ""
  region           = "us-central1"
  database_version = "POSTGRES_14"
  settings {
    tier = "db-custom-2-7680"
    backup_configuration {
      enabled                        = true
      point_in_time_recovery_enabled = true
      start_time                     = "20:55"
      transaction_log_retention_days = "3"
    }
  }
  # 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 proteksi dari 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 data permintaan, lakukan penggantian berikut:

  • PROJECT_ID: ID atau nomor project dari project Google Cloud yang berisi instance
  • INSTANCE_NAME: nama instance utama atau replika baca yang Anda konfigurasi untuk ketersediaan tinggi
  • START_TIME: waktu (dalam jam dan menit)

Metode HTTP dan URL:

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

Meminta isi JSON:

{
  "settings":
  {
    "backupConfiguration":
    {
      "startTime": "START_TIME",
      "enabled": true,
      "pointInTimeRecoveryEnabled": true
    }
  }
}

Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:

Anda akan menerima respons JSON yang mirip dengan yang berikut ini:

REST v1beta4

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • PROJECT_ID: ID atau nomor project dari project Google Cloud yang berisi instance
  • INSTANCE_NAME: nama instance utama atau replika baca yang Anda konfigurasi untuk ketersediaan tinggi
  • START_TIME: waktu (dalam jam dan menit)

Metode HTTP dan URL:

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

Meminta isi JSON:

{
  "settings":
  {
    "backupConfiguration":
    {
      "startTime": "START_TIME",
      "enabled": true,
      "pointInTimeRecoveryEnabled": true
    }
  }
}

Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:

Anda akan menerima respons JSON yang mirip dengan yang berikut ini:

Menonaktifkan PITR

Konsol

  1. Di konsol Google Cloud , buka halaman Instance Cloud SQL.

    Buka Instance Cloud SQL

  2. Buka menu tindakan lainnya Ikon tindakan lainnya. untuk instance yang ingin Anda nonaktifkan, lalu pilih Edit.
  3. Di bagian Sesuaikan instance Anda, luaskan bagian Perlindungan Data.
  4. Hapus opsi Aktifkan pemulihan point-in-time.
  5. Klik Simpan.

gcloud

  1. Menonaktifkan pemulihan point-in-time:
    gcloud sql instances patch INSTANCE_NAME \
    --no-enable-point-in-time-recovery
  2. Konfirmasi perubahan Anda:
    gcloud sql instances describe INSTANCE_NAME

    Di bagian backupConfiguration, Anda akan melihat pointInTimeRecoveryEnabled: false jika perubahan berhasil.

REST v1

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

  • project-id: Project ID
  • instance-id: ID instance

Metode HTTP dan URL:

PATCH https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id

Meminta isi JSON:

{
  "settings":
  {
    "backupConfiguration":
    {
      "enabled": false,
      "pointInTimeRecoveryEnabled": false
    }
  }
}

Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:

Anda akan menerima respons JSON yang mirip dengan yang berikut ini:

REST v1beta4

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

  • project-id: Project ID
  • instance-id: ID instance

Metode HTTP dan URL:

PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id

Meminta isi JSON:

{
  "settings":
  {
    "backupConfiguration":
    {
      "enabled": false,
      "pointInTimeRecoveryEnabled": false
    }
  }
}

Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:

Anda akan menerima respons JSON yang mirip dengan yang berikut ini:

Menetapkan retensi log transaksi

Untuk menetapkan jumlah hari guna mempertahankan log write-ahead:

Konsol

  1. Di konsol Google Cloud , buka halaman Instance Cloud SQL.

    Buka Instance Cloud SQL

  2. Buka menu tindakan lainnya Ikon tindakan lainnya. untuk instance yang ingin Anda gunakan untuk menetapkan log transaksi, lalu pilih Edit.
  3. Di bagian Sesuaikan instance Anda, luaskan bagian Perlindungan Data.
  4. Di bagian Aktifkan pemulihan point-in-time, luaskan Opsi lanjutan.
  5. Masukkan jumlah hari untuk menyimpan log, dari 1-35 untuk edisi Cloud SQL Enterprise Plus atau 1-7 untuk edisi Cloud SQL Enterprise.
  6. Klik Simpan.

gcloud

Edit instance untuk menetapkan jumlah hari untuk mempertahankan log write-ahead.

Ganti kode berikut:

  • INSTANCE_NAME: Nama instance yang ingin Anda tetapkan log transaksinya.
  • DAYS_TO_RETAIN: Jumlah hari log transaksi yang perlu disimpan. Untuk edisi Cloud SQL Enterprise Plus, rentang yang valid adalah antara 1 hingga 35 hari, dengan default 14 hari. Untuk edisi Cloud SQL Enterprise, rentang yang valid adalah antara 1 hingga 7 hari, dengan default 7 hari.

    Jika Anda tidak menentukan nilai, Cloud SQL akan menggunakan nilai default. Hal ini hanya berlaku jika PITR diaktifkan. Menyimpan log transaksi dalam waktu yang lebih lama memerlukan ukuran penyimpanan yang lebih besar.

  gcloud sql instances patch INSTANCE_NAME 
--retained-transaction-log-days=DAYS_TO_RETAIN

REST v1

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • PROJECT_ID: project ID.
  • INSTANCE_ID: ID instance.
  • DAYS_TO_RETAIN: jumlah hari untuk menyimpan log transaksi. Untuk edisi Cloud SQL Enterprise Plus, rentang yang valid adalah antara 1 hingga 35 hari, dengan default 14 hari. Untuk edisi Cloud SQL Enterprise, rentang yang valid adalah antara 1 hingga 7 hari, dengan default 7 hari.

    Jika tidak ada nilai yang ditentukan, nilai default akan digunakan. Hal ini hanya berlaku jika PITR diaktifkan. Menyimpan log transaksi dalam waktu yang lebih lama memerlukan ukuran penyimpanan yang lebih besar.

Metode HTTP dan URL:

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

Meminta isi JSON:

{
  "settings":
  {
    "backupConfiguration":
    {
      "transactionLogRetentionDays": "DAYS_TO_RETAIN"
    }
  }
}

Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:

Anda akan menerima respons JSON yang mirip dengan yang berikut ini:

REST v1beta4

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • PROJECT_ID: project ID.
  • INSTANCE_ID: ID instance.
  • DAYS_TO_RETAIN: jumlah hari untuk menyimpan log transaksi. Untuk edisi Cloud SQL Enterprise Plus, rentang yang valid adalah antara 1 hingga 35 hari, dengan default 14 hari. Untuk edisi Cloud SQL Enterprise, rentang yang valid adalah antara 1 hingga 7 hari, dengan default 7 hari.

    Jika tidak ada nilai yang ditentukan, nilai default akan digunakan. Hal ini hanya berlaku jika PITR diaktifkan. Menyimpan log transaksi dalam waktu yang lebih lama memerlukan ukuran penyimpanan yang lebih besar.

Metode HTTP dan URL:

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

Meminta isi JSON:

{
  "settings":
  {
    "backupConfiguration":
    {
      "transactionLogRetentionDays": "DAYS_TO_RETAIN"
    }
  }
}

Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:

Anda akan menerima respons JSON yang mirip dengan yang berikut ini:

Memeriksa lokasi penyimpanan log transaksi yang digunakan untuk PITR

Anda dapat memeriksa tempat instance Cloud SQL menyimpan log transaksi yang digunakan untuk PITR.

gcloud

Untuk menentukan apakah instance Anda menyimpan log untuk PITR di disk atau Cloud Storage, gunakan perintah berikut:

   gcloud sql instances describe INSTANCE_NAME
   

Ganti INSTANCE_NAME dengan nama instance.

Untuk beberapa instance dalam project yang sama, Anda juga dapat memeriksa lokasi penyimpanan log transaksi. Untuk menentukan lokasi beberapa instance, gunakan perintah berikut:

   gcloud sql instances list --show-transactional-log-storage-state
   

Contoh respons:

NAME  DATABASE_VERSION LOCATION         TRANSACTIONAL_LOG_STORAGE_STATE
my_01 POSTGRES_12      us-central-1     DISK
my_02 POSTGRES_12      us-central-1     CLOUD_STORAGE
...
   

Dalam output perintah, kolom transactionalLogStorageState atau kolom TRANSACTIONAL_LOG_STORAGE_STATE memberikan informasi tentang tempat penyimpanan log transaksi untuk PITR untuk instance. Status penyimpanan log transaksi yang mungkin adalah sebagai berikut:

  • DISK: instance menyimpan log transaksi yang digunakan untuk PITR di disk. Jika Anda mengupgrade instance edisi Cloud SQL Enterprise ke edisi Cloud SQL Enterprise Plus, proses upgrade akan otomatis mengalihkan lokasi penyimpanan log ke Cloud Storage. Untuk mengetahui informasi selengkapnya, lihat Mengupgrade instance ke edisi Cloud SQL Enterprise Plus menggunakan upgrade langsung. Anda juga dapat memilih untuk beralih lokasi penyimpanan menggunakan gcloud CLI atau Cloud SQL Admin API tanpa mengupgrade edisi instance dan tanpa mengalami periode nonaktif. Untuk mengetahui informasi selengkapnya, lihat Mengalihkan penyimpanan log transaksi ke Cloud Storage.
  • SWITCHING_TO_CLOUD_STORAGE: instance sedang mengalihkan lokasi penyimpanan untuk log transaksi PITR ke Cloud Storage.
  • SWITCHED_TO_CLOUD_STORAGE: instance telah menyelesaikan pengalihan lokasi penyimpanan untuk log transaksi PITR dari disk ke Cloud Storage.
  • CLOUD_STORAGE: instance menyimpan log transaksi yang digunakan untuk PITR di Cloud Storage.

Mengalihkan penyimpanan log transaksi ke Cloud Storage

Jika instance Anda menyimpan log transaksi yang digunakan untuk PITR di disk, Anda dapat mengalihkan lokasi penyimpanan ke Cloud Storage tanpa menimbulkan periode nonaktif. Proses keseluruhan untuk mengalihkan lokasi penyimpanan memerlukan waktu sekitar durasi periode retensi log transaksi (hari) untuk diselesaikan. Segera setelah Anda memulai peralihan, log transaksi akan mulai bertambah di Cloud Storage. Selama operasi, Anda dapat memeriksa status keseluruhan proses menggunakan perintah di Memeriksa lokasi penyimpanan log transaksi yang digunakan untuk PITR.

Setelah keseluruhan proses beralih ke Cloud Storage selesai, Cloud SQL akan menggunakan log transaksi dari Cloud Storage untuk PITR.

gcloud

Untuk mengalihkan lokasi penyimpanan ke Cloud Storage, gunakan perintah berikut:

   gcloud sql instances patch INSTANCE_NAME \
      --switch-transaction-logs-to-cloud-storage
   

Ganti INSTANCE_NAME dengan nama instance. Instance harus berupa instance utama, bukan instance replika. Responsnya mirip dengan hal berikut ini:

The following message is used for the patch API method.
{"name": "INSTANCE_NAME", "project": "PROJECT_NAME", "switchTransactionalLogsToCloudStorageEnabled": "true"}

Patching Cloud SQL instance...done.
Updated
[https://sqladmin.prod.googleapis.com/v1/projects/PROJECT_NAME/instances/INSTANCE_NAME].
   

Jika perintah menampilkan error, lihat Memecahkan masalah peralihan ke Cloud Storage untuk mengetahui kemungkinan langkah berikutnya.

REST v1

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • PROJECT_ID: project ID.
  • INSTANCE_ID: ID instance. Instance harus berupa instance utama, bukan instance replika.

Metode HTTP dan URL:

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

Meminta isi JSON:

{
   "switchTransactionLogsToCloudStorageEnabled": true
}

Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:

Anda akan menerima respons JSON yang mirip dengan yang berikut ini:

Jika permintaan menampilkan error, lihat Memecahkan masalah peralihan ke Cloud Storage untuk mengetahui kemungkinan langkah berikutnya.

REST v1beta4

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • PROJECT_ID: project ID.
  • INSTANCE_ID: ID instance. Instance harus berupa instance utama, bukan instance replika.

Metode HTTP dan URL:

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

Meminta isi JSON:

{
   "switchTransactionLogsToCloudStorageEnabled": true
}

Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:

Anda akan menerima respons JSON yang mirip dengan yang berikut ini:

Jika permintaan menampilkan error, lihat Memecahkan masalah peralihan ke Cloud Storage untuk mengetahui kemungkinan langkah berikutnya.

Memecahkan masalah peralihan ke Cloud Storage

Tabel berikut mencantumkan kemungkinan error yang mungkin ditampilkan dengan kode INVALID REQUEST saat Anda mengalihkan lokasi penyimpanan log transaksi dari disk ke Cloud Storage.

Masalah Pemecahan masalah
Switching the storage location of the transaction logs used for PITR is not supported for instances with database type %s. Pastikan Anda menjalankan perintah gcloud CLI atau membuat permintaan API di instance Cloud SQL untuk MySQL atau Cloud SQL untuk PostgreSQL. Mengalihkan lokasi penyimpanan untuk log transaksi menggunakan gcloud CLI atau Cloud SQL Admin API tidak didukung untuk Cloud SQL untuk SQL Server.
PostgreSQL transactional logging is not enabled on this instance. PostgreSQL menggunakan write-ahead logging sebagai log transaksi untuk pemulihan point-in-time (PITR). Untuk mendukung PITR, PostgreSQL mengharuskan Anda mengaktifkan write-ahead logging pada instance. Untuk mengetahui informasi selengkapnya tentang cara mengaktifkan write-ahead logging, lihat Mengaktifkan PITR.
This instance is already storing transaction logs used for PITR in Cloud Storage Untuk memverifikasi lokasi penyimpanan log transaksi, jalankan perintah di Memeriksa lokasi penyimpanan log transaksi yang digunakan untuk PITR.
The instance is already switching transaction logs used for PITR from disk to Cloud Storage.

Tunggu hingga operasi pengalihan selesai.

Untuk memverifikasi status operasi dan lokasi penyimpanan log transaksi, jalankan perintah di Memeriksa lokasi penyimpanan log transaksi yang digunakan untuk PITR.

Langkah berikutnya