PENGARSIPAN WAL POSTGRESQL
PostgreSQL dilengkapi dengan alat yang Anda perlukan untuk melakukan pencadangan, pencadangan tambahan/berkelanjutan, dan melakukan pemulihan tepat waktu dari pencadangan. Pengarsipan file WAL adalah operasi mendasar yang memfasilitasi fitur-fitur ini. Baca terus untuk mengetahui lebih lanjut tentang semua ini.
APA ITU WAL?
WAL adalah kependekan dari Write Ahead Log .
WAL digunakan di hampir semua sistem RDBMS modern untuk menyediakan transaksi yang tahan lama dan bersifat atomik. Sederhananya, setiap transaksi yang dilakukan pada database pertama-tama ditulis sebagai file WAL, kemudian diterapkan ke file data tabel sebenarnya pada disk. File WAL sangat berurutan. Hal ini menjadikan urutan file WAL sebagai "log pemutaran ulang" perubahan.
Konsepnya mirip dengan AOF Redis, binlog MySQL, dan oplog MongoDB.
Jadi, apakah itu file sebenarnya? Ya. Mereka tinggal di $PGDATA/pg_xlog
, di mana $PGDATA
direktori datanya, seperti /var/lib/postgresql/9.6/main
. Itu adalah file biner, masing-masing 16MB.
Bukankah jumlahnya akan terus menumpuk? Mereka akan melakukannya, jika Anda tidak memberi tahu Postgres kapan harus membersihkannya. Anda dapat membatasi file-file ini berdasarkan nomor ( wal_keep_segments
) dan/atau ukuran total ( max_wal_size
).
PENGARSIPAN WAL
Saat Anda terus memodifikasi data dalam database di server, file WAL terus dibuat (dan dibuang setelah beberapa saat).
Jika Anda menyimpan salinan setiap file WAL yang dihasilkan, Anda dapat memutar ulang seluruh rangkaian perubahan ke server lain. Melakukan ini secara real-time lebih dikenal dengan replikasi. Anda dapat membaca lebih lanjut tentang replikasi PostgreSQL di sini .
Menyimpan semua file WAL yang dihasilkan ke lokasi offline yang aman pada dasarnya menjadi cadangan tambahan .
[Catatan tambahan: Secara teknis, ada satu urutan file WAL untuk satu contoh server PostgreSQL yang sedang berjalan. File WAL akan berisi semua perubahan di seluruh database yang dikelola oleh instance tersebut.]
Dalam istilah PostgreSQL, menyalin file WAL yang dihasilkan disebut pengarsipan , dan membuat server membaca file WAL dan menerapkannya disebut memulihkan .
KOMANDO ARSIP
Karena PostgreSQL tidak tahu bagaimana Anda ingin mengarsipkan file WAL, Anda harus menyediakan skrip. PostgreSQL akan memanggil skrip ini ketika setiap file WAL siap untuk diarsipkan. Skrip harus memprosesnya (biasanya menyalinnya ke lokasi yang aman) dan melaporkan apakah berhasil, melalui kode keluar (yaitu, keluar 0 dari skrip Anda setelah berhasil diselesaikan).
Setelah skrip berhasil memproses file WAL, server bebas menghapus atau mendaur ulangnya jika dirasa perlu.
Skrip diatur menggunakan archive_command
pengaturan konfigurasi. ( dokumen ). Berikut beberapa contohnya:
Saat menulis skrip Anda sendiri, ingatlah beberapa hal:
- Jika skrip gagal, skrip akan dipanggil lagi, berulang kali, hingga berhasil. Tidak ada penundaan antara fitur percobaan ulang atau penghentian setelah N percobaan ulang.
- File berukuran 16MB, dan biasanya dikompres dengan baik.
- Script akan dipanggil secara berurutan, tidak ada paralelisme.
- Praktik terbaiknya adalah tidak menimpa file tujuan jika ada.
- Anda harus memperlakukan file yang diberikan PostgreSQL sebagai file hanya-baca. Jika Anda ingin mengompresnya, pastikan untuk tidak mengubah aslinya.
- Script akan dipanggil sebagai user
postgres
. Pastikan pengguna ini memiliki izin baca/tulis yang diperlukan untuk direktori yang relevan.
TINGKAT WAL
Secara default, file WAL hanya berisi informasi yang diperlukan untuk memulihkan dari kerusakan atau penghentian segera. Ini adalah minimal
tingkat WAL.
Level berikutnya adalah archive
(atau replica
di versi 9.6 ke atas). Menyetel tingkat WAL ke archive
atau lebih tinggi akan membuat server menyertakan informasi yang cukup untuk memungkinkan pengarsipan (dan pemulihan) file WAL.
Level setelahnya dipanggil hot_standy
(juga dipetakan ke replica
versi 9.6 dan lebih tinggi), dan mencakup informasi yang diperlukan untuk menjalankan kueri read-only di server siaga.
Dengan level terakhir logical
, dimungkinkan untuk mengekstrak set perubahan logis dari WAL.
Level WAL adalah pengaturan konfigurasi yang disebut wal_level
. Untuk kebutuhan kita, kita perlu menyetelnya ke setidaknya archive
. PostgreSQL akan menolak untuk memulai jika Anda meminta pengarsipan tetapi wal_level
kurang dari ini.
BATAS WAKTU ARSIP HABIS
Jika server PostgreSQL Anda mengalami hari yang tenang dengan tingkat transaksi yang rendah, mungkin perlu beberapa saat untuk mengisi satu file WAL lengkap. Namun dari sudut pandang operasional, biasanya merupakan ide bagus untuk memiliki setidaknya satu file WAL yang dicadangkan setiap X menit (atau jam atau hari, sesuai dengan pengaturan Anda).
Pengaturan ini archive_timeout
dapat digunakan untuk memberitahu PostgreSQL untuk menghasilkan setidaknya satu file WAL setiap durasi “archive_timeout”, meskipun kosong.
MENGONTROL FILE WAL
PostgreSQL menawarkan beberapa tuas untuk mengontrol jumlah file WAL yang ada di pg_xlog
direktori.
Pengaturan min_wal_size
dan max_wal_size
batasan tempat pada ukuran total file WAL. Memiliki batas minimum memungkinkan daur ulang file lama (namanya diubah terlebih dahulu). Batas atas adalah batas lunak, karena server hanya dapat menghapus file yang berhasil diarsipkan dengan aman.
Dapat wal_keep_segments
digunakan untuk menetapkan batas minimum jumlah file WAL dalam format pg_xlog
. Hal ini terutama untuk memungkinkan server siaga yang lambat atau terputus-putus.
PENGATURAN ARSIP
Terakhir, ada archive_mode
pengaturan, yang tentunya harus diatur on
agar pengarsipan dapat berfungsi. Berikut adalah pengaturan penting untuk pengarsipan, yang dirangkum:
MEMULIHKAN WAL
Memulihkan WAL biasanya dilakukan dalam konteks memulihkan dari cadangan, melakukan pemulihan point-in-time (PITR) atau replikasi streaming. Agak terlalu luas untuk dibahas dalam postingan blog yang sama ini, jadi kami hanya perlu melakukan ini sebagai postingan lainnya – pantau terus!
Anda dapat membaca tentang replikasi streaming di postingan blog kami yang lain yang berjudul “ Semua Tentang Replikasi Streaming PostgreSQL ”.
PEMANTAUAN PENGARSIPAN WAL
PostgreSQL menyediakan pengumpul statistik yang dapat ditanyakan untuk memeriksa status pengarsipan WAL. Secara khusus Anda dapat menggunakan pg_stat_archiver
untuk melihat jumlah keberhasilan dan kegagalan WAL.
Dengan OpsDash , Anda dapat dengan cepat mulai memantau server PostgreSQL Anda, dan mendapatkan wawasan instan tentang metrik kinerja dan kesehatan utama termasuk pengarsipan WAL.
Menambahkan peringatan berbasis ambang batas ke metrik jumlah kegagalan arsip adalah cara cepat dan mudah untuk mengetahui pekerjaan arsip yang gagal sebelum menjadi tidak terkendali dan file WAL menghabiskan ruang disk server Anda.
LEBIH LANJUT TENTANG POSTGRESQL
- Menggunakan Pencarian Teks Lengkap PostgreSQL Dengan Golang
- Semua Tentang Replikasi Streaming PostgreSQL
- Pemantauan PostgreSQL dengan OpsDash
BARU DISINI?
OpsDash adalah solusi pemantauan server, pemantauan layanan, dan pemantauan basis data untuk memantau MySQL, PostgreSQL, MongoDB, memcache, Redis, Apache, Nginx, URL HTTP, Elasticsearch, dan banyak lagi. Ini menyediakan dasbor yang cerdas dan dapat disesuaikan serta peringatan bebas spam melalui email, HipChat, Slack, PagerDuty, dan PushBullet.
OpsDash tersedia sebagai solusi lokal yang dihosting sendiri dan sebagai solusi SaaS. Pilih yang tepat untuk Anda!
Tertarik untuk menghosting sendiri? Mulai Gratis hari ini!
Lebih suka SaaS? Daftar untuk versi beta!
Tidak ada komentar:
Posting Komentar