Menggunakan pemulihan point-in-time (PITR)

Halaman ini menjelaskan cara menggunakan pemulihan point-in-time (PITR) untuk memulihkan instance Cloud SQL utama Anda.

Untuk mempelajari PITR lebih lanjut, lihat Pemulihan point-in-time (PITR).

Jika Anda membuat instance edisi Cloud SQL Enterprise Plus, PITR akan diaktifkan secara default, terlepas dari metode yang digunakan untuk pembuatan. Jika ingin menonaktifkan fitur ini, Anda harus melakukannya secara manual.

Jika Anda membuat instance edisi Cloud SQL Enterprise, PITR akan dinonaktifkan secara default, terlepas dari metode yang digunakan untuk pembuatan. Dalam hal ini, jika ingin mengaktifkan fitur, Anda harus melakukannya secara manual.

Penyimpanan log untuk PITR

Pada 31 Mei 2024, kami meluncurkan penyimpanan log transaksi untuk PITR di Cloud Storage. Sejak peluncuran ini, kondisi berikut berlaku:

  • Instance Cloud SQL yang mengaktifkan PITR yang dibuat sebelum tanggal ini digunakan untuk menyimpan log transaksi PITR di disk. Log transaksi PITR untuk sebagian besar instance ini telah dimigrasikan ke Cloud Storage. Untuk memverifikasi lokasi log untuk instance tertentu, lihat Memeriksa lokasi penyimpanan log transaksi yang digunakan untuk PITR.

  • Semua instance Cloud SQL yang dibuat dengan PITR diaktifkan pada atau setelah tanggal ini akan menyimpan log ini di Cloud Storage.

Log transaksi diperbarui secara rutin dan menggunakan ruang penyimpanan. Cloud SQL akan otomatis menghapus log transaksi dengan pencadangan otomatis terkait. Hal ini terjadi setelah nilai yang ditetapkan untuk parameter transactionLogRetentionDays terpenuhi. Untuk mengetahui informasi selengkapnya tentang parameter ini, lihat Log dan penggunaan disk.

Untuk instance yang hanya menyimpan log transaksi di disk, Anda dapat mengonfigurasi Cloud SQL untuk menyimpan log di Cloud Storage dengan menonaktifkan terlebih dahulu, lalu mengaktifkan kembali PITR. Anda tidak dapat memindahkan log dari Cloud Storage kembali ke disk.

Untuk memastikan log untuk instance Anda disimpan di Cloud Storage, bukan di disk, selesaikan tindakan berikut:

Log dan penggunaan disk

Untuk instance yang memiliki log transaksi yang disimpan di Cloud Storage, log tersebut akan disimpan di region yang sama dengan instance utama. Penyimpanan log ini (hingga 35 hari untuk edisi Cloud SQL Enterprise Plus dan tujuh hari untuk edisi Cloud SQL Enterprise, lama maksimum untuk PITR) tidak menghasilkan biaya tambahan per instance.

Cloud SQL membuat log transaksi secara rutin dan log ini menggunakan ruang penyimpanan. Cloud SQL menghapus log transaksi secara otomatis dengan cadangan otomatis yang terkait. Hal ini terjadi setelah nilai yang Anda tetapkan untuk parameter transactionLogRetentionDays terpenuhi. Parameter ini menentukan jumlah hari saat Cloud SQL menyimpan log transaksi. Untuk edisi Cloud SQL Enterprise Plus, Anda dapat menetapkan jumlah hari log transaksi yang disimpan dari 1 hingga 35, dan untuk edisi Cloud SQL Enterprise, Anda dapat menetapkan nilai ini dari 1 hingga 7.

Jika nilai untuk parameter ini tidak ditetapkan, periode retensi log transaksi default selama 14 hari akan ditetapkan untuk instance edisi Cloud SQL Enterprise Plus dan 7 hari untuk instance edisi Cloud SQL Enterprise. Untuk mengetahui informasi selengkapnya tentang cara menerapkan setelan ini, lihat Menetapkan retensi log transaksi.

Untuk mengetahui jumlah disk yang digunakan log transaksi, periksa metrik bytes_used_by_data_type untuk instance. Nilai untuk jenis data menampilkan ukuran log transaksi di disk. Untuk instance yang menyimpan log transaksi yang digunakan untuk PITR di disk, Cloud SQL akan menghapus data dari disk setiap hari untuk memenuhi setelan PITR transactionLogRetentionDays. Untuk informasi selengkapnya, lihat Retensi pencadangan otomatis.

Batasan

Batasan berikut terkait dengan instance Anda yang mengaktifkan PITR dan ukuran log transaksi di disk yang menyebabkan masalah pada instance Anda:

  • Anda dapat menonaktifkan PITR dan mengaktifkannya kembali untuk memastikan bahwa Cloud SQL menyimpan log di Cloud Storage di region yang sama dengan instance. Namun, Cloud SQL akan menghapus log yang ada sehingga Anda tidak dapat melakukan operasi PITR lebih awal dari waktu Anda mengaktifkan kembali PITR.
  • Anda dapat meningkatkan ukuran penyimpanan instance, tetapi peningkatan ukuran log transaksi dalam penggunaan disk mungkin bersifat sementara.
  • Untuk menghindari masalah penyimpanan yang tidak terduga, sebaiknya aktifkan peningkatan penyimpanan otomatis. Rekomendasi ini hanya berlaku jika instance Anda mengaktifkan PITR dan log Anda disimpan di disk.
  • Jika ingin menghapus log dan memulihkan penyimpanan, Anda dapat menonaktifkan PITR tanpa mengaktifkannya kembali. Namun, mengurangi penyimpanan yang digunakan tidak akan mengurangi ukuran disk yang disediakan untuk instance.
  • Log dihapus permanen sekali sehari, bukan terus-menerus. Menetapkan retensi log menjadi dua hari berarti setidaknya dua hari log, dan maksimal tiga hari log, akan dipertahankan. Sebaiknya tetapkan jumlah cadangan ke satu lebih dari jumlah hari retensi log.

    Misalnya, jika Anda menentukan 7 untuk nilai parameter transactionLogRetentionDays, maka untuk parameter backupRetentionSettings, tetapkan jumlah retainedBackups ke 8.

Untuk informasi selengkapnya tentang PITR, lihat Pemulihan point-in-time (PITR).

Model pemulihan database untuk PITR

Jika Anda mengaktifkan PITR pada instance, Cloud SQL akan otomatis menetapkan model pemulihan dari database yang ada dan database berikutnya ke model pemulihan penuh.

Untuk informasi selengkapnya tentang model pemulihan SQL Server, baca dokumentasi Microsoft.

Mengaktifkan PITR

Saat Anda membuat instance baru di konsol Google Cloud, setelan Pencadangan otomatis diaktifkan secara otomatis.

Prosedur berikut memungkinkan PITR pada instance utama yang ada.

  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 Customize your instance, luaskan bagian Data Protection.
  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.
  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.

Untuk mengaktifkan PITR, gunakan resource Terraform.

Mengaktifkan PITR untuk edisi Cloud SQL Enterprise Plus

Gunakan contoh kode Terraform berikut untuk membuat instance edisi Cloud SQL Enterprise Plus dengan PITR diaktifkan:
# Creates a SQL SERVER Enterprise Plus edition instance. Unless specified otherwise, PITR is enabled by default.
resource "google_sql_database_instance" "enterprise_plus" {
  name             = "sqlserver-enterprise-plus-instance-pitr"
  region           = "asia-northeast1"
  database_version = "SQLSERVER_2019_ENTERPRISE"
  root_password    = "INSERT-PASSWORD-HERE"
  settings {
    tier    = "db-perf-optimized-N-2"
    edition = "ENTERPRISE_PLUS"
    backup_configuration {
      enabled = true
    }
  }
  # Setting the `deletion_protection` flag to true ensures you can't accidentally delete the instance
  # using Terraform. Setting the `deletion_protection_enabled` flag to true protects the instance at the
  # Google Cloud level.
  deletion_protection = false
}

Mengaktifkan PITR untuk edisi Cloud SQL Enterprise

Gunakan contoh kode Terraform berikut untuk membuat instance edisi Cloud SQL Enterprise dengan PITR yang diaktifkan:
# Creates a SQL SERVER Enterprise edition instance with PITR enabled. Unless specified otherwise,
# PITR is disabled by default.
resource "google_sql_database_instance" "enterprise" {
  name             = "sqlserver-enterprise-instance-pitr"
  region           = "asia-northeast1"
  database_version = "SQLSERVER_2019_ENTERPRISE"
  root_password    = "INSERT-PASSWORD-HERE"
  settings {
    tier    = "db-custom-4-26624"
    edition = "ENTERPRISE"
    backup_configuration {
      enabled                        = true
      point_in_time_recovery_enabled = true
    }
  }
  # Setting the `deletion_protection` flag to true ensures you can't accidentally delete the instance
  # using Terraform. Setting the `deletion_protection_enabled` flag to true protects the instance at the
  # Google Cloud 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

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 replika utama atau baca yang Anda konfigurasikan 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:

Simpan isi permintaan dalam file bernama request.json, dan jalankan perintah berikut:

curl -X PATCH \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME"

Simpan isi permintaan dalam file bernama request.json, dan jalankan perintah berikut:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method PATCH `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME" | Select-Object -Expand Content

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

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2020-01-21T22:43:37.981Z",
  "operationType": "UPDATE",
  "name": "OPERATION_ID",
  "targetId": "INSTANCE_NAME",
  "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID",
  "targetProject": "PROJECT_ID"
}

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 replika utama atau baca yang Anda konfigurasikan 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:

Simpan isi permintaan dalam file bernama request.json, dan jalankan perintah berikut:

curl -X PATCH \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_NAME"

Simpan isi permintaan dalam file bernama request.json, dan jalankan perintah berikut:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method PATCH `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_NAME" | Select-Object -Expand Content

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

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_NAME",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2020-01-21T22:43:37.981Z",
  "operationType": "UPDATE",
  "name": "OPERATION_ID",
  "targetId": "INSTANCE_NAME",
  "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/operations/OPERATION_ID",
  "targetProject": "PROJECT_ID"
}

Melakukan PITR

  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 pulihkan, lalu klik Create clone.
  3. Secara opsional, di halaman Create a clone, perbarui ID clone baru tersebut.
  4. Pilih Clone dari titik waktu sebelumnya.
  5. Masukkan waktu PITR.
  6. Pilih All database, atau tentukan nama database.
    Jika Anda menentukan nama database, hanya satu nama yang dapat dipilih. Secara default, PITR ditujukan untuk semua database.
  7. Klik Buat clone.

Membuat clone menggunakan PITR.

Ganti kode berikut:

  • SOURCE_INSTANCE_NAME - Nama instance tempat Anda memulihkan.
  • NEW_INSTANCE_NAME - Nama untuk clone.
  • TIMESTAMP - Zona waktu UTC untuk instance sumber dalam format RFC 3339. Misalnya, 2012-11-15T16:19:00.094Z.
gcloud sql instances clone SOURCE_INSTANCE_NAME \
NEW_INSTANCE_NAME \
--point-in-time 'TIMESTAMP'

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

  • project-id: ID project
  • target-instance-id: ID instance target
  • source-instance-id: ID instance sumber
  • restore-timestamp Point-in-time untuk memulihkan

Dalam permintaan JSON, Anda dapat menentukan hingga satu nama database tertentu sebagai berikut: "databaseNames": "my-database"

Metode HTTP dan URL:

POST https://sqladmin.googleapis.com/v1/projects/project-id/instances/source-instance-id/clone

Meminta isi JSON:

{
  "cloneContext":
  {
    "kind": "sql#cloneContext",
    "destinationInstanceName": "target-instance-id",
    "pointInTime": "restore-timestamp"
  }
}

Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:

Simpan isi permintaan dalam file bernama request.json, dan jalankan perintah berikut:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://sqladmin.googleapis.com/v1/projects/project-id/instances/source-instance-id/clone"

Simpan isi permintaan dalam file bernama request.json, dan jalankan perintah berikut:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://sqladmin.googleapis.com/v1/projects/project-id/instances/source-instance-id/clone" | Select-Object -Expand Content

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

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/v1/projects/project-id/instances/target-instance-id",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2020-01-21T22:43:37.981Z",
  "operationType": "CREATE",
  "name": "operation-id",
  "targetId": "target-instance-id",
  "selfLink": "https://sqladmin.googleapis.com/v1/projects/project-id/operations/operation-id",
  "targetProject": "project-id"
}

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

  • project-id: ID project
  • target-instance-id: ID instance target
  • source-instance-id: ID instance sumber
  • restore-timestamp Point-in-time untuk memulihkan

Dalam permintaan JSON, Anda dapat menentukan hingga satu nama database tertentu sebagai berikut: "databaseNames": "my-database"

Metode HTTP dan URL:

POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/source-instance-id/clone

Meminta isi JSON:

{
  "cloneContext":
  {
    "kind": "sql#cloneContext",
    "destinationInstanceName": "target-instance-id",
    "pointInTime": "restore-timestamp"
  }
}

Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:

Simpan isi permintaan dalam file bernama request.json, dan jalankan perintah berikut:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/source-instance-id/clone"

Simpan isi permintaan dalam file bernama request.json, dan jalankan perintah berikut:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/source-instance-id/clone" | Select-Object -Expand Content

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

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/target-instance-id",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2020-01-21T22:43:37.981Z",
  "operationType": "CREATE",
  "name": "operation-id",
  "targetId": "target-instance-id",
  "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/operations/operation-id",
  "targetProject": "project-id"
}

Menonaktifkan PITR

  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 bawah Customize your instance, luaskan bagian Data Protection.
  4. Hapus opsi Aktifkan pemulihan point-in-time.
  5. Klik Simpan.
  1. Nonaktifkan 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.

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

  • project-id: ID project
  • 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:

Simpan isi permintaan dalam file bernama request.json, dan jalankan perintah berikut:

curl -X PATCH \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id"

Simpan isi permintaan dalam file bernama request.json, dan jalankan perintah berikut:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method PATCH `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id" | Select-Object -Expand Content

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

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2020-01-21T22:43:37.981Z",
  "operationType": "UPDATE",
  "name": "operation-id",
  "targetId": "instance-id",
  "selfLink": "https://sqladmin.googleapis.com/v1/projects/project-id/operations/operation-id",
  "targetProject": "project-id"
}

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

  • project-id: ID project
  • 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:

Simpan isi permintaan dalam file bernama request.json, dan jalankan perintah berikut:

curl -X PATCH \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id"

Simpan isi permintaan dalam file bernama request.json, dan jalankan perintah berikut:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method PATCH `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id" | Select-Object -Expand Content

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

{
  "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-21T22:43:37.981Z",
  "operationType": "UPDATE",
  "name": "operation-id",
  "targetId": "instance-id",
  "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/operations/operation-id",
  "targetProject": "project-id"
}

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 SQLSERVER_2019_STANDARD  us-central-1   DISK
my_02 SQLSERVER_2019_STANDARD  us-central-1   CLOUD_STORAGE
...
   

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

  • DISK: instance menyimpan log transaksi yang digunakan untuk PITR di disk.
  • CLOUD_STORAGE: instance menyimpan log transaksi yang digunakan untuk PITR di Cloud Storage.

Menetapkan retensi log transaksi

Untuk menetapkan jumlah hari guna menyimpan log transaksi:

  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 bawah Customize your instance, luaskan bagian Data Protection.
  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.

Edit instance untuk menetapkan jumlah hari yang diperlukan untuk menyimpan log transaksi.

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

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:

Simpan isi permintaan dalam file bernama request.json, dan jalankan perintah berikut:

curl -X PATCH \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID"

Simpan isi permintaan dalam file bernama request.json, dan jalankan perintah berikut:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method PATCH `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID" | Select-Object -Expand Content

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

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2020-01-21T22:43:37.981Z",
  "operationType": "UPDATE",
  "name": "OPERATION_ID",
  "targetId": "INSTANCE_ID",
  "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID",
  "targetProject": "PROJECT_ID"
}

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:

Simpan isi permintaan dalam file bernama request.json, dan jalankan perintah berikut:

curl -X PATCH \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID"

Simpan isi permintaan dalam file bernama request.json, dan jalankan perintah berikut:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method PATCH `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID" | Select-Object -Expand Content

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

{
  "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-21T22:43:37.981Z",
  "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

argument --point-in-time: Failed to parse date/time:
Unknown string format: 2021-0928T30:54:03.094;
received: 2021-0928T30:54:03.094Z

ATAU

Invalid value at 'body.clone_context.point_in_time'
(type.googleapis.com/google.protobuf.Timestamp), Field 'pointInTime',
Invalid time format: Failed to parse input,

Stempel waktu yang Anda berikan tidak valid.

HTTP Error 400: Successful backup required for carrying out the operation was not found.

ATAU

Successful backup required for carrying out the operation was not found. or Time where no backups can be found.

Stempel waktu yang Anda berikan adalah untuk waktu saat cadangan atau saat koordinat binlog tidak dapat ditemukan.

Langkah berikutnya