PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Cara Meminimalkan RPO untuk Database PostgreSQL Anda Menggunakan Point in Time Recovery

Dalam rencana pemulihan bencana, Tujuan Titik Pemulihan (RPO) Anda adalah parameter pemulihan utama yang menentukan berapa banyak data yang dapat Anda hilangkan. RPO terdaftar dalam waktu, dari detik hingga hari. Secara efektif, RPO secara langsung bergantung pada sistem cadangan Anda. Ini menandai usia data cadangan Anda yang harus Anda pulihkan untuk melanjutkan operasi normal.

Jika Anda melakukan pencadangan setiap malam pada pukul 10 malam. dan sistem database Anda tidak dapat diperbaiki lagi pada pukul 3 sore. hari berikutnya, Anda kehilangan semua yang diubah sejak pencadangan terakhir Anda. RPO Anda dalam konteks khusus ini adalah cadangan hari sebelumnya, yang berarti Anda dapat kehilangan perubahan senilai satu hari.

Diagram di bawah dari Whitepaper kami tentang Pemulihan Bencana mengilustrasikan konsep tersebut.

Untuk RPO yang lebih ketat, cadangan mungkin tidak cukup. Saat mencadangkan database, Anda sebenarnya mengambil snapshot data pada saat tertentu. Jadi ketika Anda memulihkan cadangan, Anda akan kehilangan perubahan yang terjadi antara cadangan terakhir dan kegagalan.

Di sinilah konsep Point In Time Recovery (PITR) masuk.

Apa itu PITR?

Point In Time Recovery (PITR), seperti namanya, melibatkan pemulihan database pada saat tertentu di masa lalu. Untuk dapat melakukan ini, kita perlu memulihkan cadangan, lalu menerapkan semua perubahan yang terjadi setelah pencadangan hingga tepat sebelum kegagalan.

Untuk PostgreSQL, perubahan disimpan di log WAL (untuk detail lebih lanjut tentang WAL dan data yang disimpannya, Anda dapat melihat blog ini).

Jadi ada dua hal yang perlu kita pastikan untuk dapat melakukan PITR:Cadangan dan WAL (kita perlu menyiapkan pengarsipan berkelanjutan untuk mereka).

Untuk melakukan PITR, kita perlu memulihkan cadangan dan kemudian menerapkan WAL.

Kapan Bisa Bermanfaat?

Anda dapat menggunakan strategi ini setiap kali Anda memulihkan dari masalah yang menyebabkan data rusak. Perlu diingat bahwa Anda mencoba meminimalkan kehilangan data, tetapi ada beberapa masalah yang dapat menyebabkan data tidak berguna lagi setelahnya.

Beberapa contohnya dapat berupa modifikasi data yang tidak direncanakan (DML atau DDL), kegagalan media, atau pemeliharaan basis data (seperti peningkatan) yang menyebabkan kerusakan data. Anda tidak akan dapat memulihkan perubahan data yang terjadi setelah masalah tersebut.

Misalkan pengguna telah salah melakukan DML, membuat data dari seluruh tabel menjadi salah diubah atau dihapus. Anda dapat melakukan PITR database di lokasi terpisah dan kemudian mengekspor konten tabel. Anda kemudian dapat memulihkan tabel tersebut ke database yang ada, secara efektif mengembalikan ke salinan tabel sebelum masalah terjadi.

Tentu saja, tidak selalu mungkin untuk memulihkan hanya sebagian dari basis data dengan cara ini, jadi dalam hal ini Anda perlu memulihkan semua basis data ke titik tertentu, dan akan mengalami kehilangan data minimal tetapi tidak dapat dihindari (Anda akan kehilangan perubahan apa pun yang terjadi setelah masalah terjadi).

Bagaimana cara menggunakannya dengan ClusterControl?

Di blog sebelumnya, kita bisa melihat bagaimana menerapkan PITR secara manual, sekarang mari kita lihat bagaimana menggunakan ClusterControl untuk melakukan tugas ini.

Mengaktifkan Pemulihan Titik Dalam Waktu

Untuk mengaktifkan fitur PITR kita harus mengaktifkan Pengarsipan WAL. Untuk ini kita bisa pergi ke ClusterControl -> Pilih PostgreSQL Cluster -> Node actions -> Enable WAL Archiving, atau masuk saja ke ClusterControl -> Pilih PostgreSQL Cluster -> Backup -> Settings dan aktifkan opsi “Enable Point-In-Time Recovery (WAL Archiving)” seperti yang akan kita lihat pada gambar berikut.

Kita harus ingat bahwa untuk mengaktifkan Pengarsipan WAL, kita harus me-restart database kita. ClusterControl dapat melakukan ini untuk kita juga.

Selain opsi umum untuk semua cadangan seperti "Direktori Cadangan" dan "Periode Retensi Cadangan", di sini kita juga dapat menentukan Periode Retensi WAL. Secara default adalah 0, yang berarti selamanya.

Untuk mengonfirmasi bahwa kami telah mengaktifkan Pengarsipan WAL, kami dapat memilih node Master kami di ClusterControl -> Pilih PostgreSQL Cluster -> Nodes, dan kami akan melihat pesan WAL Archiving Enabled, seperti yang dapat kita lihat pada gambar berikut.

Membuat Cadangan yang Kompatibel dengan Pemulihan Titik Dalam Waktu

Dengan mengaktifkan Pengarsipan WAL, seperti yang kita lihat di langkah sebelumnya, kita dapat membuat cadangan yang kompatibel dengan PITR. Untuk ini, buka ClusterControl -> Pilih PostgreSQL Cluster -> Backup -> Create Backup.

Kami dapat membuat cadangan baru atau mengonfigurasi yang dijadwalkan. Sebagai contoh, kami akan membuat satu cadangan secara instan.

Di sini kita harus memilih metode “pg_basebackup”, kompatibel dengan PITR, server dari mana cadangan akan diambil (agar kompatibel dengan PITR, harus master), dan di mana kita ingin menyimpan cadangan. Kami juga dapat mengunggah cadangan kami ke cloud (AWS, Google, atau Azure) dengan mengaktifkan tombol yang sesuai.

Kemudian kami menentukan penggunaan kompresi, enkripsi, dan penyimpanan cadangan kami.

Pada bagian backup, kita dapat melihat progres backup, dan informasi seperti metode, ukuran, lokasi, dan lainnya.

Pemulihan Titik Dalam Waktu dari cadangan

Setelah backup selesai, kita dapat mengembalikannya menggunakan fitur ClusterControl PITR. Untuk ini, di bagian backup kita (ClusterControl -> Pilih PostgreSQL Cluster -> Backup), kita bisa memilih "Restore Backup", atau langsung "Restore" pada backup yang ingin kita restore.

Di sini kita memilih cadangan mana yang ingin kita pulihkan dan dari direktori mana.

Kami membiarkan opsi "Pulihkan pada simpul" dipilih dan melanjutkan.

Sekarang kita harus memilih tempat untuk memulihkan cadangan kita dan mengaktifkan opsi PITR. Dengan menentukan waktu, itu akan menjadi waktu sampai kapan kita akan pulih. Perhatikan bahwa zona waktu UTC digunakan dan layanan PostgreSQL kami di master akan dimulai ulang.

Kami dapat memantau kemajuan pemulihan kami dari bagian Aktivitas di ClusterControl kami.

Kesimpulan

PITR adalah fitur yang dibutuhkan untuk memenuhi RPO yang ketat. Kita perlu mengaturnya dengan benar untuk memastikan rencana pemulihan bencana yang benar. ClusterControl menyediakan antarmuka yang mudah digunakan untuk membantu Anda mengimplementasikan PITR untuk database PostgreSQL Anda.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mengurangi parameter postgresql.conf, sekaligus

  2. Bagaimana cara menggunakan pg_stat_activity?

  3. mencetak nilai variabel di postgresql

  4. Cara mengkonfigurasi SELinux untuk PostgreSQL dan TimescaleDB

  5. Postgresql :Koneksi ditolak. Periksa apakah nama host dan port sudah benar dan postmaster menerima koneksi TCP/IP