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 PITR.

Secara default, PITR diaktifkan saat Anda membuat instance edisi Cloud SQL Enterprise Plus, terlepas dari apakah Anda membuat instance dengan menggunakan Konsol Google Cloud, gcloud CLI, Terraform, atau Cloud SQL Admin API.

Jika Anda membuat instance edisi Cloud SQL Enterprise di Google Cloud Console, PITR akan diaktifkan secara default. Atau, jika Anda membuat instance menggunakan gcloud CLI, Terraform, atau Cloud SQL Admin API, Anda harus mengaktifkan PITR secara manual.

Penyimpanan log untuk PITR

Cloud SQL menggunakan log biner untuk PITR.

Pada 11 Agustus 2023, kami meluncurkan penyimpanan log transaksi untuk PITR di Cloud Storage. Sejak peluncuran ini, kondisi berikut akan berlaku:

  • Semua instance Cloud SQL edisi Enterprise Plus menyimpan log biner mereka yang digunakan untuk PITR di Cloud Storage. Hanya instance edisi Cloud SQL Enterprise Plus yang Anda upgrade dari edisi Cloud SQL Enterprise sebelum 1 April 2024 dan telah mengaktifkan PITR sebelum 11 Agustus 2023 yang akan terus menyimpan log untuk PITR pada disk.
  • Instance Cloud SQL Enterprise yang dibuat dengan PITR yang diaktifkan sebelum 11 Agustus 2023 akan terus menyimpan log-nya untuk PITR di disk.
  • Jika Anda mengupgrade instance edisi Cloud SQL Enterprise setelah 1 April 2024 yang menyimpan log transaksi untuk PITR pada disk ke edisi Cloud SQL Enterprise Plus, proses upgrade akan mengalihkan lokasi penyimpanan log transaksi yang digunakan untuk PITR ke Cloud Storage untuk Anda. Untuk mengetahui informasi selengkapnya, baca Mengupgrade instance ke edisi Cloud SQL Enterprise Plus dengan menggunakan upgrade bawaan.
  • Semua instance Cloud SQL Enterprise edisi yang Anda buat dengan PITR yang diaktifkan setelah 11 Agustus 2023 menyimpan log yang digunakan untuk PITR di Cloud Storage.

Untuk informasi lebih lanjut tentang cara memeriksa lokasi penyimpanan log transaksi yang digunakan untuk PITR, lihat Memeriksa lokasi penyimpanan log transaksi yang digunakan untuk PITR.

Untuk instance yang hanya menyimpan log biner di disk, Anda juga dapat memindahkan log dari disk ke Cloud Storage dengan menonaktifkan terlebih dahulu lalu mengaktifkan kembali PITR.

Periode retensi catatan

Cloud SQL menyimpan log transaksi di Cloud Storage hingga nilai yang ditetapkan dalam setelan konfigurasi PITR transactionLogRetentionDays. Nilai ini dapat berkisar dari 1 hingga 35 hari untuk edisi Cloud SQL Enterprise Plus dan 1 hingga 7 hari untuk edisi Cloud SQL Enterprise. Jika nilai untuk parameter ini tidak ditetapkan, periode retensi log transaksi default adalah 14 hari untuk instance edisi Cloud SQL Enterprise Plus dan 7 hari untuk instance edisi Cloud SQL Enterprise. Untuk mengetahui informasi selengkapnya mengenai cara menetapkan hari retensi log transaksi, lihat artikel Menetapkan retensi log transaksi.

Meskipun instance menyimpan log biner yang digunakan untuk PITR di Cloud Storage, instance ini juga menyimpan lebih sedikit log biner duplikat pada disk untuk memungkinkan replikasi log ke Cloud Storage. Secara default, saat Anda membuat instance dengan PITR yang diaktifkan, instance akan menyimpan log binernya untuk PITR di Cloud Storage. Cloud SQL juga menetapkan nilai flag expire_logs_days dan binlog_expire_logs_seconds ke nilai yang setara dengan satu hari secara otomatis. Ini berarti satu hari log pada {i>disk<i}.

Dengan mengurangi nilai setelan flag ini, Cloud SQL membantu Anda menghemat biaya penggunaan disk. Namun, jika Anda ingin log tambahan tersedia pada disk—misalnya, untuk menjelajahi log biner dengan utilitas mysqlbinlog— tingkatkan nilai tanda ini. Cloud SQL menyimpan log biner di disk selama minimum hari retensi log transaksi atau nilai yang ditetapkan untuk flag.

Untuk log biner yang digunakan untuk PITR yang disimpan di disk, Cloud SQL menyimpan log untuk nilai minimum yang ditetapkan untuk salah satu konfigurasi berikut:

  • Setelan konfigurasi pencadangan transactionLogRetentionDays
  • Flag expire_logs_days atau binlog_expire_logs_seconds

    Mengubah nilai flag ini dapat memengaruhi perilaku pemulihan PITR dan berapa hari log disimpan di disk. Sebaiknya jangan mengonfigurasi nilai salah satu tanda ini menjadi 0. Untuk mengetahui informasi selengkapnya tentang flag ini, lihat Mengonfigurasi flag database.

Untuk instance dengan kunci enkripsi yang dikelola pelanggan (CMEK), log biner dienkripsi menggunakan CMEK versi terbaru. Untuk melakukan pemulihan, semua versi kunci yang merupakan versi terbaru untuk jumlah hari yang Anda konfigurasi untuk parameter retained-transaction-log-days harus tersedia.

Log dan penggunaan disk

Log baru dibuat secara rutin dan menggunakan ruang penyimpanan. Log biner dihapus secara otomatis dengan pencadangan otomatis terkait, yang terjadi setelah nilai yang ditetapkan untuk transactionLogRetentionDays terpenuhi.

Untuk mengetahui jumlah disk yang sedang digunakan oleh log biner, periksa metrik bytes_used_by_data_type untuk instance tersebut. Nilai untuk jenis data binlog menampilkan ukuran binlog pada disk. Untuk instance yang menyimpan log transaksi yang digunakan untuk PITR pada disk, Cloud SQL menghapus permanen data dari disk setiap hari agar memenuhi setelan PITR transactionLogRetentionDays, seperti yang dijelaskan dalam Pencadangan otomatis dan retensi log transaksi. Namun, jika Anda menetapkan tanda expire_logs_days ke nilai yang lebih rendah dari hari retensi log transaksi, Cloud SQL dapat menghapus permanen log biner lebih cepat.

Jika ukuran log biner menyebabkan masalah pada instance Anda:

  • Periksa apakah instance Anda menyimpan log di disk atau tidak. Anda dapat memindahkan log yang digunakan untuk PITR dari disk ke Cloud Storage dengan menonaktifkan dan mengaktifkan kembali PITR. Operasi ini mengakibatkan periode nonaktif selama beberapa menit, tetapi mengosongkan kapasitas disk. Jika menggunakan edisi Cloud SQL Enterprise, Anda juga dapat mengupgrade ke edisi Cloud SQL Enterprise Plus untuk mengganti lokasi penyimpanan log PITR Anda.
  • Anda dapat meningkatkan ukuran penyimpanan instance. Namun, peningkatan ukuran log biner dalam penggunaan disk mungkin bersifat sementara.

  • Sebaiknya aktifkan peningkatan penyimpanan otomatis untuk menghindari masalah penyimpanan yang tidak terduga.

  • Jika ingin menghapus log dan memulihkan penyimpanan, Anda dapat menonaktifkan PITR tanpa mengaktifkannya kembali. Namun, mengurangi penyimpanan yang digunakan tidak akan memperkecil 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 untuk menjamin retensi log minimum pada hari tertentu.

Untuk informasi selengkapnya tentang PITR, lihat PITR.

Mengaktifkan PITR

Saat Anda membuat instance baru di konsol Google Cloud, baik Pencadangan otomatis dan Aktifkan pemulihan point-in-time akan diaktifkan secara otomatis.

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 PITRnya, lalu klik Edit.
  3. Di bagian Customize your instance, luaskan bagian Data Protection.
  4. Pilih kotak centang Aktifkan pemulihan point-in-time.
  5. Perluas Opsi lanjutan.
  6. Masukkan jumlah hari untuk menyimpan log, dari 1-35 untuk edisi Cloud SQL Enterprise Plus, atau 1-7 untuk edisi Cloud SQL Enterprise.
  7. Klik Save.

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. Aktifkan PITR:
    gcloud sql instances patch INSTANCE_NAME \
    --enable-bin-log

    Jika mengaktifkan PITR pada instance utama, Anda juga dapat mengonfigurasi jumlah hari untuk 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

    Pada bagian backupConfiguration, Anda akan melihat binaryLogEnabled: true jika perubahan berhasil.

Terraform

Untuk mengaktifkan PITR, gunakan resource Terraform.

resource "google_sql_database_instance" "default" {
  name             = "mysql-instance-pitr"
  region           = "asia-northeast1"
  database_version = "MYSQL_8_0"
  settings {
    tier = "db-f1-micro"
    backup_configuration {
      enabled                        = true
      binary_log_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 perlindungan penghapusan, di file konfigurasi Terraform Anda, tetapkan argumen deletion_protection ke false.
    deletion_protection =  "false"
  2. Terapkan konfigurasi Terraform terbaru dengan menjalankan perintah berikut dan memasukkan yes pada perintah:
    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 project Google Cloud yang berisi instance
  • INSTANCE_NAME: nama instance replika utama atau 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,
      "binaryLogEnabled": true
    }
  }
}

Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:

Anda akan melihat respons JSON seperti berikut:

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 replika utama atau baca yang Anda konfigurasi untuk ketersediaan tinggi
  • START_TIME: waktu (dalam jam dan menit)

Metode HTTP dan URL:

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

Meminta isi JSON:

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

Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:

Anda akan melihat respons JSON seperti berikut:

Melakukan PITR dengan menggunakan stempel waktu

Menggunakan stempel waktu adalah pendekatan yang direkomendasikan untuk melakukan PITR. Cloud SQL menggunakan utilitas mysqlbinlog untuk memulihkan instance hingga waktu tertentu. Untuk mengetahui informasi selengkapnya tentang utilitas mysqlbinlog, lihat Dokumentasi referensi MySQL.

Untuk menyelesaikan tugas berikut, Anda harus memiliki hal berikut:

  • Pencadangan dan logging biner diaktifkan untuk instance, dengan log biner berkelanjutan sejak pencadangan terakhir sebelum peristiwa yang ingin Anda pulihkan. Untuk informasi selengkapnya, lihat Mengaktifkan logging biner.
  • Stempel waktu untuk menentukan titik pemulihan. Peristiwa yang terjadi pada dan setelah stempel waktu ini tidak ditampilkan dalam instance baru.

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 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. Klik Create clone.

gcloud

Buat 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'

REST v1

Sebelum menggunakan salah satu 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 hingga

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:

Anda akan melihat respons JSON seperti berikut:

REST v1beta4

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 hingga

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:

Anda akan melihat respons JSON seperti berikut:

Nonaktifkan 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 bawah Customize your instance, luaskan bagian Data Protection.
  4. Hapus opsi Aktifkan pemulihan point-in-time.
  5. Klik Save.
  6. Di halaman Overview untuk instance, di bagian Configuration, setelan PITR dicantumkan sebagai dinonaktifkan.

gcloud

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

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

REST v1

Sebelum menggunakan salah satu 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,
      "binaryLogEnabled": false
    }
  }
}

Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:

Anda akan melihat respons JSON seperti berikut:

REST v1beta4

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,
      "binaryLogEnabled": false
    }
  }
}

Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:

Anda akan melihat respons JSON seperti berikut:

Memeriksa lokasi penyimpanan log transaksi yang digunakan untuk PITR

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

gcloud

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

   gcloud sql instances describe INSTANCE_NAME
   

Ganti INSTANCE_NAME dengan nama instance.

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

  • DISK: instance menyimpan log transaksi yang digunakan untuk PITR pada disk. Jika Anda mengupgrade instance edisi Cloud SQL Enterprise ke edisi Cloud SQL Enterprise Plus, proses upgrade juga akan mengalihkan lokasi penyimpanan log ke Cloud Storage. Untuk mengetahui informasi selengkapnya, lihat Mengupgrade instance ke edisi Cloud SQL Enterprise Plus dengan menggunakan upgrade bawaan.
  • SWITCHING_TO_CLOUD_STORAGE: instance 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.

Menetapkan retensi log transaksi

Untuk menetapkan jumlah hari untuk menyimpan log biner:

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 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 Save.

gcloud

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

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 dan 35 hari, dengan default 14 hari. Untuk edisi Cloud SQL Enterprise, rentang yang valid adalah antara 1 dan 7 hari, dengan default 7 hari. Jika tidak ada nilai yang ditentukan, nilai default akan digunakan. Hanya valid 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:

  • days-to-retain: Jumlah hari untuk menyimpan log transaksi, dari 1 hingga 7
  • 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":
    {
      "transactionLogRetentionDays": "days-to-retain"
    }
  }
}

Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:

Anda akan melihat respons JSON seperti berikut:

REST v1beta4

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • days-to-retain: Jumlah hari untuk menyimpan log transaksi, dari 1 hingga 7
  • 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":
    {
      "transactionLogRetentionDays": "days-to-retain"
    }
  }
}

Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:

Anda akan melihat respons JSON seperti berikut:

Melakukan PITR dengan menggunakan posisi log biner

Meskipun sebaiknya Anda melakukan PITR menggunakan stempel waktu seperti yang dijelaskan dalam Menjalankan PITR menggunakan stempel waktu, Anda juga dapat melakukan PITR dengan memberikan posisi log biner tertentu dalam file log biner.

Untuk mengetahui informasi selengkapnya tentang PITR yang menggunakan posisi log biner, baca Referensi MySQL, PITR Menggunakan Log Biner.

Sebelum memulai

Sebelum menyelesaikan tugas ini, Anda harus memiliki:

  • Pencadangan dan logging biner diaktifkan untuk instance, dengan log biner berkelanjutan sejak pencadangan terakhir sebelum peristiwa yang ingin Anda pulihkan. Untuk informasi selengkapnya, lihat Mengaktifkan logging biner.

  • Log biner harus tersedia di disk agar Anda dapat menelusurinya untuk menemukan peristiwa. Untuk memeriksa durasi retensi log biner di disk, lihat Periode retensi log. Anda tidak dapat menjelajahi log biner yang disimpan di Cloud Storage dengan utilitas mysqlbinlog.

  • Nama file log biner dan posisi peristiwa yang ingin Anda pulihkan (peristiwa tersebut dan semua peristiwa yang muncul setelah tidak tercermin dalam instance baru). Untuk informasi selengkapnya, lihat Mengidentifikasi posisi log biner.

    Setelah mengidentifikasi nama file dan posisi log biner, lakukan PITR menggunakan posisi peristiwa log biner.

Mengidentifikasi posisi pemulihan

  1. Gunakan klien MySQL untuk terhubung ke instance yang ingin Anda pulihkan.

    Untuk melakukannya, gunakan Cloud Shell atau mesin klien lokal Anda. Untuk informasi selengkapnya, lihat Opsi koneksi untuk aplikasi eksternal.

  2. Tampilkan file log biner untuk instance:

    SHOW BINARY LOGS;
    
  3. Tampilkan 100 peristiwa pertama dalam file log biner terbaru:

    SHOW BINLOG EVENTS IN '<BINARY_LOG_FILE>' LIMIT 100;
    

    Anda dapat menyesuaikan jumlah baris yang ditampilkan, tetapi tidak menampilkan semua peristiwa dalam file sampai Anda mengetahui ukuran file tersebut. Menampilkan banyak peristiwa dapat memengaruhi performa sistem.

  4. Jika peristiwa yang Anda cari tidak ditampilkan, gunakan posisi terakhir yang ditampilkan sebagai titik awal untuk menelusuri kumpulan peristiwa berikutnya:

    SHOW BINLOG EVENTS IN '<BINARY_LOG_FILE>' FROM <POSITION> LIMIT 100;
    
  5. Ketika Anda menemukan peristiwa yang menandai titik waktu yang ingin Anda pulihkan, catat posisinya (ditunjukkan sebagai Pos) dan nama file log biner.

    Nama file log biner dan posisi adalah nilai yang Anda gunakan untuk PITR.

Di bawah ini adalah beberapa contoh output dari perintah SHOW BINLOG EVENTS:

+------------------+-----+-------------+-----------+-------------+-----------------------------------------------------+
| Log_name         | Pos | Event_type  | Server_id | End_log_pos | Info                                                |
+------------------+-----+-------------+-----------+-------------+-----------------------------------------------------+
| mysql-bin.000011 |   4 | Format_desc |  88955285 |         120 | Server ver: 5.6.30-log, Binlog ver: 4               |
| mysql-bin.000011 | 120 | Query       |  88955285 |         211 | create database db1                                 |
| mysql-bin.000011 | 211 | Query       |  88955285 |         310 | use `db1`; CREATE TABLE t (c CHAR(20))              |
| mysql-bin.000011 | 310 | Query       |  88955285 |         381 | BEGIN                                               |
| mysql-bin.000011 | 381 | Table_map   |  88955285 |         426 | table_id: 18 (db1.t)                                |
| mysql-bin.000011 | 310 | Query       |  88955285 |         381 | BEGIN                                               |

| mysql-bin.000011 | 426 | Write_rows  |  88955285 |         464 | table_id: 18 flags: STMT_END_F                      |
| mysql-bin.000011 | 464 | Xid         |  88955285 |         495 | COMMIT /* xid=56 */                                 |
| mysql-bin.000011 | 495 | Query       |  88955285 |         566 | BEGIN                                               |
| mysql-bin.000011 | 566 | Table_map   |  88955285 |         611 | table_id: 18 (db1.t)                                |
| mysql-bin.000011 | 611 | Write_rows  |  88955285 |         649 | table_id: 18 flags: STMT_END_F                      |
| mysql-bin.000011 | 649 | Xid         |  88955285 |         680 | COMMIT /* xid=57 */                                 |
| mysql-bin.000011 | 680 | Query       |  88955285 |         751 | BEGIN                                               |
| mysql-bin.000011 | 751 | Table_map   |  88955285 |         796 | table_id: 18 (db1.t)                                |
| mysql-bin.000011 | 796 | Write_rows  |  88955285 |         834 | table_id: 18 flags: STMT_END_F                      |
| mysql-bin.000011 | 834 | Xid         |  88955285 |         865 | COMMIT /* xid=58 */                                 |
| mysql-bin.000011 | 865 | Query       |  88955285 |         977 | use `db1`; DROP TABLE `t` /* generated by server */ |
+------------------+-----+-------------+-----------+-------------+-----------------------------------------------------+
16 rows in set (0.04 sec)

Untuk memulihkan hingga pernyataan DROP TABLE, yang dicetak tebal di atas, Anda harus menggunakan "865" di "mysql-bin.000011" sebagai posisi pemulihan. Pernyataan DROP TABLE dan semua operasi setelahnya tidak tercermin dalam instance baru.

Melakukan PITR menggunakan posisi peristiwa log biner

gcloud

Gunakan perintah gcloud sql instances clone dengan tanda --bin-log-file-name dan --bin-log-position.

  1. Buat instance baru menggunakan nama file log biner dan posisi pemulihan.

    Ganti kode berikut:

    • SOURCE_INSTANCE_NAME: Nama instance tempat Anda memulihkan.
    • NEW_INSTANCE_NAME: Nama untuk clone.
    • BINLOG_FILE_NAME: Nama untuk log biner, seperti mysql-bin.187288.
    • POSITION: Posisi dalam log biner yang akan dipulihkan, seperti 50001356.
    gcloud sql instances clone SOURCE_INSTANCE_NAME \
    NEW_INSTANCE_NAME \
    --bin-log-file-name="BINLOG_FILE_NAME" \
    --bin-log-position=POSITION

    Misalnya, perintah gcloud sql instances clone mungkin terlihat mirip dengan yang berikut ini:

    gcloud sql instances clone instance1 \
    instance1-clone \
    --bin-log-file-name=mysql-bin.0000031 \
    --bin-log-position=107 \
  2. Gunakan ID operasi yang ditampilkan dari perintah clone untuk memeriksa status operasi pemulihan.
    gcloud sql operations describe OPERATION_ID

    Saat operasi sedang berlangsung, status RUNNING akan ditampilkan. Setelah operasi selesai, status DONE akan ditampilkan.

REST v1

Buat instance baru menggunakan nama file log biner dan posisi pemulihan yang telah Anda identifikasi:

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • project-id: ID project
  • target-instance-id: ID instance target
  • source-instance-id: ID instance sumber
  • binary-log-file-name Nama file log biner
  • binary-log-position Posisi dalam file log biner

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",
    "binLogCoordinates":
    {
      "kind": "sql#binLogCoordinates",
      "binLogFileName": "binary-log-file-name",
      "binLogPosition": "binary-log-position"
    }
  }
}

Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:

Anda akan melihat respons JSON seperti berikut:

REST v1beta4

Buat instance baru menggunakan nama file log biner dan posisi pemulihan yang telah Anda identifikasi:

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • project-id: ID project
  • target-instance-id: ID instance target
  • source-instance-id: ID instance sumber
  • binary-log-file-name Nama file log biner
  • binary-log-position Posisi dalam file log biner

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",
    "binLogCoordinates":
    {
      "kind": "sql#binLogCoordinates",
      "binLogFileName": "binary-log-file-name",
      "binLogPosition": "binary-log-position"
    }
  }
}

Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:

Anda akan melihat respons JSON seperti berikut:

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 selanjutnya