Pencadangan basis data memainkan peran penting dalam merancang strategi pemulihan bencana yang efektif untuk basis data produksi. Administrator Basis Data dan Arsitek harus terus berupaya merancang strategi pencadangan yang optimal dan efektif untuk basis data kritis misi waktu nyata dan selanjutnya memastikan SLA Pemulihan Bencana terpenuhi. Sesuai pengalaman saya, ini tidak mudah dan dapat memakan waktu berhari-hari hingga berminggu-minggu untuk mencapai strategi pencadangan yang sempurna. Hanya saja tidak menulis skrip yang bagus untuk membuat cadangan basis data dan memastikannya berfungsi. Ada beberapa faktor yang perlu dipertimbangkan, mari kita lihat mereka:
- Ukuran basis data: Ukuran database memainkan peran penting ketika merancang strategi backup. Sebenarnya, ini adalah salah satu faktor inti yang mendefinisikan
- Waktu yang dibutuhkan oleh pencadangan
- Pemuatan pada komponen infrastruktur seperti Disk, Jaringan, CPU, dll.
- Jumlah penyimpanan cadangan yang diperlukan dan biaya yang diperlukan
- Jika database dihosting di cloud, maka, biaya penyimpanan cadangan bergantung pada jumlah penyimpanan yang diperlukan
- Selain itu, ukuran database memengaruhi RTO
- Infrastruktur: Strategi pencadangan sangat bergantung pada infrastruktur database. Prosedur pencadangan akan berbeda untuk database yang dihosting di server fisik di pusat data lokal dibandingkan dengan yang dihosting di cloud.
- Lokasi Cadangan: Ke mana perginya backup? Umumnya, cadangan akan ditempatkan di lokasi yang jauh, misalnya pada tape atau penyimpanan khusus cloud seperti AWS S3.
- Alat Cadangan: Identifikasi alat yang optimal untuk melakukan pencadangan basis data online yang berpotensi memastikan pencadangan yang konsisten telah diambil.
Strategi backup database yang baik harus memastikan RTO (Recovery Time Objective) dan RPO (Recovery Point Objective) terpenuhi yang pada gilirannya membantu mencapai tujuan Disaster Recovery. Pencadangan tingkat sistem file dapat dilakukan pada Database PostgreSQL dengan beberapa cara. Di blog ini, fokus saya adalah pada alat bernama Barman yang populer digunakan untuk melakukan Pencadangan Basis Data PostgreSQL.
Barman (manajer pencadangan dan pemulihan) adalah alat sumber terbuka berbasis Python yang dikembangkan oleh pengembang di Kuadran ke-2. Alat ini dikembangkan untuk mencapai strategi pencadangan basis data tingkat perusahaan untuk basis data produksi PostgreSQL yang sangat penting. Fitur dan karakteristiknya mirip dengan RMAN Oracle. Menurut pendapat saya, bartender adalah salah satu opsi terbaik untuk database PostgreSQL dan dapat memberikan beberapa manfaat dari perspektif operasi kepada DBA dan insinyur Infrastruktur.
Mari kita lihat beberapa kemampuan Barman:
Saya akan mulai dengan gambaran umum konfigurasi dan kemudian membuat daftar jenis pencadangan yang dapat dilakukan
Secara teknis, barman-cli adalah alat berbasis python dan memiliki dua file konfigurasi yang berbeda untuk ditangani. Satu file yang merupakan konfigurasi sebenarnya untuk database yang akan dicadangkan berada dalam nama “/etc/barman.d” sebagai
Contoh isi file /etc/barman.conf ditunjukkan di bawah ini
[barman]
barman_user = barman ---------> barman user who performs backup/recovery of database
configuration_files_directory = /etc/barman.d -----> location for DB configuration files
barman_home = /dbbackups/barman ---> barman home directory
log_file = /dbbackups/barman/logs/barman.log ---> barman log file location
log_level = INFO -----> level of logging for barman operations
compression = gzip -----> backups must be compressed
Pemasangan Barman
Mari kita lihat prosedur pemasangan bartender -
Menginstal dari sumbernya
Unduh bartender dari https://www.pgbarman.org/
Buka tar / unzip penginstal dan jalankan perintah berikut sebagai pengguna root -
[[email protected] barman-2.4]# ./setup.py install
/usr/lib64/python2.7/distutils/dist.py:267: UserWarning: Unknown distribution option: 'setup_requires'
warnings.warn(msg)
/usr/lib64/python2.7/distutils/dist.py:267: UserWarning: Unknown distribution option: 'install_requires'
warnings.warn(msg)
/usr/lib64/python2.7/distutils/dist.py:267: UserWarning: Unknown distribution option: 'tests_require'
warnings.warn(msg)
running install
running build
running build_py
creating build
creating build/lib
creating build/lib/barman
copying barman/utils.py -> build/lib/barman
copying barman/fs.py -> build/lib/barman
copying barman/retention_policies.py -> build/lib/barman
copying barman/diagnose.py -> build/lib/barman
copying barman/backup.py -> build/lib/barman
copying barman/recovery_executor.py -> build/lib/barman
copying barman/backup_executor.py -> build/lib/barman
copying barman/config.py -> build/lib/barman
copying barman/process.py -> build/lib/barman
copying barman/output.py -> build/lib/barman
copying barman/__init__.py -> build/lib/barman
copying barman/remote_status.py -> build/lib/barman
copying barman/xlog.py -> build/lib/barman
copying barman/lockfile.py -> build/lib/barman
copying barman/postgres.py -> build/lib/barman
copying barman/server.py -> build/lib/barman
copying barman/cli.py -> build/lib/barman
copying barman/version.py -> build/lib/barman
copying barman/compression.py -> build/lib/barman
copying barman/wal_archiver.py -> build/lib/barman
copying barman/infofile.py -> build/lib/barman
copying barman/exceptions.py -> build/lib/barman
copying barman/hooks.py -> build/lib/barman
copying barman/copy_controller.py -> build/lib/barman
copying barman/command_wrappers.py -> build/lib/barman
running build_scripts
creating build/scripts-2.7
copying and adjusting bin/barman -> build/scripts-2.7
changing mode of build/scripts-2.7/barman from 644 to 755
running install_lib
creating /usr/lib/python2.7/site-packages/barman
copying build/lib/barman/utils.py -> /usr/lib/python2.7/site-packages/barman
copying build/lib/barman/fs.py -> /usr/lib/python2.7/site-packages/barman
copying build/lib/barman/retention_policies.py -> /usr/lib/python2.7/site-packages/barman
copying build/lib/barman/diagnose.py -> /usr/lib/python2.7/site-packages/barman
copying build/lib/barman/backup.py -> /usr/lib/python2.7/site-packages/barman
copying build/lib/barman/recovery_executor.py -> /usr/lib/python2.7/site-packages/barman
copying build/lib/barman/backup_executor.py -> /usr/lib/python2.7/site-packages/barman
copying build/lib/barman/config.py -> /usr/lib/python2.7/site-packages/barman
copying build/lib/barman/process.py -> /usr/lib/python2.7/site-packages/barman
copying build/lib/barman/output.py -> /usr/lib/python2.7/site-packages/barman
copying build/lib/barman/__init__.py -> /usr/lib/python2.7/site-packages/barman
copying build/lib/barman/remote_status.py -> /usr/lib/python2.7/site-packages/barman
copying build/lib/barman/xlog.py -> /usr/lib/python2.7/site-packages/barman
copying build/lib/barman/lockfile.py -> /usr/lib/python2.7/site-packages/barman
copying build/lib/barman/postgres.py -> /usr/lib/python2.7/site-packages/barman
copying build/lib/barman/server.py -> /usr/lib/python2.7/site-packages/barman
copying build/lib/barman/cli.py -> /usr/lib/python2.7/site-packages/barman
copying build/lib/barman/version.py -> /usr/lib/python2.7/site-packages/barman
copying build/lib/barman/compression.py -> /usr/lib/python2.7/site-packages/barman
copying build/lib/barman/wal_archiver.py -> /usr/lib/python2.7/site-packages/barman
copying build/lib/barman/infofile.py -> /usr/lib/python2.7/site-packages/barman
copying build/lib/barman/exceptions.py -> /usr/lib/python2.7/site-packages/barman
copying build/lib/barman/hooks.py -> /usr/lib/python2.7/site-packages/barman
copying build/lib/barman/copy_controller.py -> /usr/lib/python2.7/site-packages/barman
copying build/lib/barman/command_wrappers.py -> /usr/lib/python2.7/site-packages/barman
byte-compiling /usr/lib/python2.7/site-packages/barman/utils.py to utils.pyc
byte-compiling /usr/lib/python2.7/site-packages/barman/fs.py to fs.pyc
byte-compiling /usr/lib/python2.7/site-packages/barman/retention_policies.py to retention_policies.pyc
byte-compiling /usr/lib/python2.7/site-packages/barman/diagnose.py to diagnose.pyc
byte-compiling /usr/lib/python2.7/site-packages/barman/backup.py to backup.pyc
byte-compiling /usr/lib/python2.7/site-packages/barman/recovery_executor.py to recovery_executor.pyc
byte-compiling /usr/lib/python2.7/site-packages/barman/backup_executor.py to backup_executor.pyc
byte-compiling /usr/lib/python2.7/site-packages/barman/config.py to config.pyc
byte-compiling /usr/lib/python2.7/site-packages/barman/process.py to process.pyc
byte-compiling /usr/lib/python2.7/site-packages/barman/output.py to output.pyc
byte-compiling /usr/lib/python2.7/site-packages/barman/__init__.py to __init__.pyc
byte-compiling /usr/lib/python2.7/site-packages/barman/remote_status.py to remote_status.pyc
byte-compiling /usr/lib/python2.7/site-packages/barman/xlog.py to xlog.pyc
byte-compiling /usr/lib/python2.7/site-packages/barman/lockfile.py to lockfile.pyc
byte-compiling /usr/lib/python2.7/site-packages/barman/postgres.py to postgres.pyc
byte-compiling /usr/lib/python2.7/site-packages/barman/server.py to server.pyc
byte-compiling /usr/lib/python2.7/site-packages/barman/cli.py to cli.pyc
byte-compiling /usr/lib/python2.7/site-packages/barman/version.py to version.pyc
byte-compiling /usr/lib/python2.7/site-packages/barman/compression.py to compression.pyc
byte-compiling /usr/lib/python2.7/site-packages/barman/wal_archiver.py to wal_archiver.pyc
byte-compiling /usr/lib/python2.7/site-packages/barman/infofile.py to infofile.pyc
byte-compiling /usr/lib/python2.7/site-packages/barman/exceptions.py to exceptions.pyc
byte-compiling /usr/lib/python2.7/site-packages/barman/hooks.py to hooks.pyc
byte-compiling /usr/lib/python2.7/site-packages/barman/copy_controller.py to copy_controller.pyc
byte-compiling /usr/lib/python2.7/site-packages/barman/command_wrappers.py to command_wrappers.pyc
running install_scripts
copying build/scripts-2.7/barman -> /usr/bin
changing mode of /usr/bin/barman to 755
running install_data
copying doc/barman.1 -> /usr/share/man/man1
copying doc/barman.5 -> /usr/share/man/man5
running install_egg_info
Writing /usr/lib/python2.7/site-packages/barman-2.4-py2.7.egg-info
Menginstal dari repo
Instalasi juga dapat dilakukan melalui yum sebagai berikut
[[email protected]~]$ yum install barman
Mari kita lihat berbagai jenis cadangan yang didukung oleh bartender
Cadangan Panas Fisik
Barman mendukung Pencadangan Panas Fisik yang berarti, pencadangan online file data fisik dan file log transaksi dari database menggunakan metodologi rsync yang juga dapat dalam bentuk terkompresi.
Mari kita lihat langkah-langkah dan perintah untuk melakukan backup RSYNC menggunakan bartender
#1 File konfigurasi database PostgreSQL untuk bartender
[pgdb]
description="Main PostgreSQL server"
conninfo=host=pgserver user=postgres dbname=postgres
ssh_command=ssh [email protected]
archiver=on
backup_method = rsync
“pgdb” adalah pengidentifikasi Database Postgres untuk bartender dan nama file konfigurasi harus
Parameter backup_method menentukan jenis cadangan yang akan diambil. Dalam hal ini backup_method adalah rsync.
Catatan:Agar perintah cadangan energik berhasil, otentikasi ssh tanpa sandi harus dikonfigurasi antara server energik dan server postgres.
#2 parameter file postgresql.conf
wal_level=replica
archive_mode=on
archive_command=’rsync to <ARCHIVE LOCATION>’
Perintah cadangan Barman
#3 Periksa apakah bartender siap melakukan backup
[[email protected] pgdb]$ barman check pgdb
Server pgdb:
PostgreSQL: OK
is_superuser: OK
wal_level: OK
directories: OK
retention policy settings: OK
backup maximum age: OK (no last_backup_maximum_age provided)
compression settings: OK
failed backups: OK (there are 0 failed backups)
minimum redundancy requirements: OK (have 4 backups, expected at least 0)
ssh: OK (PostgreSQL server)
not in recovery: OK
archive_mode: OK
archive_command: OK
continuous archiving: OK
archiver errors: OK
Output di atas mengatakan semuanya "OK" untuk melanjutkan pencadangan yang berarti, Anda baik untuk mengambil cadangan.
Misalnya, output di bawah ini mengatakan cadangan tidak dapat diambil karena menurut bartender SSH tidak berfungsi -
[[email protected] ~]$ barman check pgdb
Server pgdb:
PostgreSQL: OK
is_superuser: OK
wal_level: OK
directories: OK
retention policy settings: OK
backup maximum age: OK (no last_backup_maximum_age provided)
compression settings: OK
failed backups: OK (there are 0 failed backups)
minimum redundancy requirements: OK (have 0 backups, expected at least 0)
ssh: FAILED (Connection failed using '[email protected] -o BatchMode=yes -o StrictHostKeyChecking=no' return code 127)
not in recovery: OK
archive_mode: OK
archive_command: OK
continuous archiving: OK
archiver errors: OK
#4 Lakukan backup Database
[[email protected] ~]$ barman backup pgdb
Starting backup using rsync-exclusive method for server pgdb in /dbbackup/barman_backups/pgdb/base/20180816T153846
Backup start at LSN: 0/1C000028 (00000001000000000000001C, 00000028)
This is the first backup for server pgdb
WAL segments preceding the current backup have been found:
00000001000000000000000B from server pgdb has been removed
00000001000000000000000C from server pgdb has been removed
00000001000000000000000D from server pgdb has been removed
00000001000000000000000E from server pgdb has been removed
00000001000000000000000F from server pgdb has been removed
000000010000000000000010 from server pgdb has been removed
000000010000000000000011 from server pgdb has been removed
000000010000000000000012 from server pgdb has been removed
000000010000000000000013 from server pgdb has been removed
000000010000000000000014 from server pgdb has been removed
000000010000000000000015 from server pgdb has been removed
000000010000000000000016 from server pgdb has been removed
Starting backup copy via rsync/SSH for 20180816T153846
Copy done (time: 1 second)
This is the first backup for server pgdb
Asking PostgreSQL server to finalize the backup.
Backup size: 21.8 MiB
Backup end at LSN: 0/1C0000F8 (00000001000000000000001C, 000000F8)
Backup completed (start time: 2018-08-16 15:38:46.668492, elapsed time: 1 second)
Processing xlog segments from file archival for pgdb
000000010000000000000016
000000010000000000000017
000000010000000000000018
000000010000000000000019
00000001000000000000001A
00000001000000000000001B
00000001000000000000001C
00000001000000000000001C.00000028.backup
Untuk memahami apakah perintah cadangan energik akan berhasil, perintah di bawah ini membantu -
Pencadangan Tambahan
Kemampuan hebat lainnya dari Barman adalah kemampuan untuk mengambil cadangan tambahan. Ini berarti, hanya blok yang diubah sejak cadangan basis data lengkap terakhir yang dapat dicadangkan. Untuk database yang mengalami lebih sedikit perubahan data, mencadangkannya secara bertahap dapat mengurangi penggunaan sumber daya.
Itu sangat tergantung pada rsync dan hard-link. Di bawah ini adalah manfaat dari pencadangan tambahan –
- Secara signifikan mengurangi waktu pencadangan harian
- Volume data yang dicadangkan berkurang karena hanya blok data yang diubah yang akan dicadangkan, yang pada gilirannya mengurangi penggunaan sumber daya infrastruktur seperti bandwidth jaringan, ruang disk, I/O, dll.
- Jika Anda menginginkan RTO yang sangat baik, ini adalah fitur yang Anda cari
Perintah untuk pencadangan tambahan hampir sama. Pencadangan berikutnya setelah pencadangan pertama dilakukan dengan opsi backup_method=rsync akan menjadi cadangan tambahan dan pelayan bar menarik WAL menggunakan utilitas pg_recievexlog.
Pencadangan dan Pemulihan Basis Data Jarak Jauh
Kemampuan Barman ini menurut saya sangat bermanfaat bagi DBA. Hal pertama yang dicari DBA adalah menghindari penekanan sumber daya server basis data produksi sebanyak mungkin selama pencadangan dan melakukannya dari jarak jauh akan menjadi pilihan terbaik. Barman memanfaatkan pg_basebackup yang membuatnya jauh lebih mudah dalam membuat skrip dan mengotomatiskannya.
Secara umum, opsi yang tersedia secara tradisional untuk pencadangan otomatis adalah -
- pg_basebackup
- salinan tar
Dua opsi di atas melibatkan banyak pengembangan dan pengujian untuk memastikan strategi pencadangan yang efektif tersedia untuk memenuhi tuntutan SLA dan dapat menimbulkan tantangan bagi database besar dengan banyak ruang tabel.
Dengan Barman, ini cukup sederhana. Kemampuan luar biasa lainnya dari bartender adalah streaming WAL yang berkelanjutan. Mari kita lihat lebih detail.
Unduh Whitepaper Hari Ini Pengelolaan &Otomatisasi PostgreSQL dengan ClusterControlPelajari tentang apa yang perlu Anda ketahui untuk menerapkan, memantau, mengelola, dan menskalakan PostgreSQLUnduh WhitepaperStreaming Cadangan dengan streaming WAL berkelanjutan
Ini membuat bartender menonjol dibandingkan dengan alat lain di pasar. File WAL langsung dapat dialirkan secara terus menerus ke lokasi pencadangan jarak jauh menggunakan Barman. Inilah FITUR yang ingin diketahui oleh para DBA. Saya sangat bersemangat untuk mengetahui tentang ini. Sangat sulit atau hampir tidak mungkin untuk mencapai ini dengan skrip yang dibuat secara manual atau dengan kombinasi alat seperti pg_basebackup dan pg_receivewal. Dengan streaming WAL yang berkelanjutan, RPO yang lebih baik dapat dicapai. Jika strategi cadangan dirancang dengan cermat, tidak berlebihan untuk mengatakan bahwa hampir 0 RPO dapat dicapai.
Mari kita lihat langkah-langkahnya, perintah untuk melakukan streaming streaming barman backup
#1 perubahan parameter postgresql.conf
Berikut konfigurasi yang harus dilakukan di postgresql.conf
wal_level=replica
max_wal_senders = 2
max_replication_slots = 2
synchronous_standby_names = 'barman_receive_wal'
archive_mode=on
archive_command = 'rsync -a %p [email protected]:INCOMING_WAL_DIRECTORY/%f'
archive_timeout=3600 (should not be 0 or disabled)
#2 Buat Slot Replikasi menggunakan bartender
Slot replikasi penting untuk streaming backup. Jika streaming WAL berkelanjutan gagal karena alasan apa pun, semua WAL yang tidak streaming dapat disimpan di database postgres tanpa dihapus.
[[email protected] ~]$ barman receive-wal --create-slot pgdb
Creating physical replication slot 'barman' on server 'pgdb'
Replication slot 'barman' created
#3 Konfigurasi file konfigurasi server database untuk bartender
Pengidentifikasi basis data untuk bartender adalah "pgdb". File konfigurasi bernama pgdb.conf harus dibuat di /etc/barman.d/ lokasi dengan konten berikut
[pgdb]
description="Main PostgreSQL server"
conninfo=host=pgserver user=postgres dbname=postgres
streaming_conninfo=host=pgserver user=barman
backup_method=postgres
archiver=on
incoming_wals_directory=/dbbackups/barman_backups/pgdb/incoming
streaming_archiver=on
slot_name=barman
streaming_conninfo adalah parameter yang harus dikonfigurasi agar bartender melakukan backup streaming
backup_method harus dikonfigurasi ke "postgres" saat cadangan streaming akan diambil
streaming_archiver harus dikonfigurasi ke “on”
slot_name=barman Parameter ini harus dikonfigurasi ketika Anda membutuhkan bartender untuk menggunakan slot replikasi. Dalam hal ini nama slot replikasi adalah barman
Setelah konfigurasi selesai, lakukan pemeriksaan energik untuk memastikan backup streaming berjalan dengan sukses.
#4 Periksa apakah bartender menerima-wal berjalan dengan baik
Secara umum untuk barman pertama, accept-wal tidak langsung bekerja setelah perubahan konfigurasi, mungkin error dan perintah barman check mungkin menunjukkan hal berikut -
[[email protected] archive_status]$ barman check pgdb
Server pgdb:
PostgreSQL: OK
is_superuser: OK
PostgreSQL streaming: OK
wal_level: OK
directories: OK
retention policy settings: OK
backup maximum age: OK (no last_backup_maximum_age provided)
compression settings: OK
failed backups: OK (there are 0 failed backups)
minimum redundancy requirements: OK (have 0 backups, expected at least 0)
pg_basebackup: OK
pg_basebackup compatible: OK
pg_basebackup supports tablespaces mapping: OK
archive_mode: OK
archive_command: OK
continuous archiving: OK
pg_receivexlog: OK
pg_receivexlog compatible: OK
receive-wal running: FAILED (See the Barman log file for more details)
archiver errors: OK
Saat Anda menjalankan barman accept-wal, itu mungkin hang. Untuk membuat penerima-wal berfungsi dengan baik untuk pertama kalinya, perintah di bawah ini harus dijalankan.
[[email protected] arch_logs]$ barman cron
Starting WAL archiving for server pgdb
Starting streaming archiver for server pgdb
Sekarang, lakukan pemeriksaan energik lagi, seharusnya sudah bagus sekarang.
[[email protected] arch_logs]$ barman check pgdb
Server pgdb:
PostgreSQL: OK
is_superuser: OK
PostgreSQL streaming: OK
wal_level: OK
replication slot: OK
directories: OK
retention policy settings: OK
backup maximum age: OK (no last_backup_maximum_age provided)
compression settings: OK
failed backups: OK (there are 0 failed backups)
minimum redundancy requirements: OK (have 2 backups, expected at least 0)
pg_basebackup: OK
pg_basebackup compatible: OK
pg_basebackup supports tablespaces mapping: OK
archive_mode: OK
archive_command: OK
continuous archiving: OK
pg_receivexlog: OK
pg_receivexlog compatible: OK
receive-wal running: OK
archiver errors: OK
Jika Anda dapat melihat, status receiverxlog menunjukkan ok. Ini adalah salah satu masalah yang saya hadapi.
#5 Periksa apakah bartender siap melakukan backup
[[email protected] ~]$ barman check pgdb
Server pgdb:
PostgreSQL: OK
is_superuser: OK
PostgreSQL streaming: OK
wal_level: OK
replication slot: OK
directories: OK
retention policy settings: OK
backup maximum age: OK (no last_backup_maximum_age provided)
compression settings: OK
failed backups: OK (there are 0 failed backups)
minimum redundancy requirements: OK (have 4 backups, expected at least 0)
pg_basebackup: OK
pg_basebackup compatible: OK
pg_basebackup supports tablespaces mapping: OK
archive_mode: OK
archive_command: OK
continuous archiving: OK
pg_receivexlog: OK
pg_receivexlog compatible: OK
receive-wal running: OK
archiver errors: OK
#6 Periksa status streaming menggunakan bartender
[[email protected] pgdb]$ barman replication-status pgdb
Status of streaming clients for server 'pgdb':
Current LSN on master: 0/250008A8
Number of streaming clients: 1
1. #1 Sync WAL streamer
Application name: barman_receive_wal
Sync stage : 3/3 Remote write
Communication : TCP/IP
IP Address : 192.168.1.10 / Port: 52602 / Host: -
User name : barman
Current state : streaming (sync)
Replication slot: barman
WAL sender PID : 26592
Started at : 2018-08-16 16:03:21.422430+10:00
Sent LSN : 0/250008A8 (diff: 0 B)
Write LSN : 0/250008A8 (diff: 0 B)
Flush LSN : 0/250008A8 (diff: 0 B)
Status di atas berarti, bartender siap melakukan streaming backup. Lakukan pencadangan seperti yang ditunjukkan di bawah ini -
[[email protected] arch_logs]$ barman backup pgdb
Starting backup using postgres method for server pgdb in /dbbackup/barman_backups/pgdb/base/20180816T160710
Backup start at LSN: 0/1F000528 (00000001000000000000001F, 00000528)
Starting backup copy via pg_basebackup for 20180816T160710
Copy done (time: 1 second)
Finalising the backup.
Backup size: 21.9 MiB
Backup end at LSN: 0/21000000 (000000010000000000000020, 00000000)
Backup completed (start time: 2018-08-16 16:07:10.401526, elapsed time: 1 second)
Processing xlog segments from file archival for pgdb
00000001000000000000001F
000000010000000000000020
000000010000000000000020.00000028.backup
000000010000000000000021
Processing xlog segments from streaming for pgdb
00000001000000000000001F
000000010000000000000020
Cadangan Terpusat dan Terkatalogkan
Sangat bermanfaat untuk lingkungan yang menjalankan banyak database di beberapa server dalam lingkungan jaringan. Ini adalah salah satu fitur luar biasa dari Barman. Saya telah bekerja di lingkungan waktu nyata di mana saya harus mengelola, mengelola 100 basis data dan saya selalu merasa perlu untuk membuat cadangan basis data terpusat dan itulah sebabnya Oracle RMAN menjadi populer untuk strategi pencadangan basis data Oracle dan sekarang Barman mengisinya ruang untuk PostgreSQL. Dengan Barman, insinyur DBA, dan DevOps dapat bekerja untuk membangun server cadangan terpusat di mana cadangan Database untuk semua database dipelihara, divalidasi.
Cadangan yang dikatalogkan artinya, bartender memelihara repositori terpusat di mana status semua cadangan dipertahankan. Anda dapat memeriksa cadangan yang tersedia untuk database tertentu seperti yang ditunjukkan di bawah ini -
[[email protected] ~]$ barman list-backup pgdb
pgdb 20180816T160924 - Thu Aug 16 16:09:25 2018 - Size: 22.0 MiB - WAL Size: 135.7 KiB
pgdb 20180816T160710 - Thu Aug 16 16:07:11 2018 - Size: 21.9 MiB - WAL Size: 105.8 KiB
pgdb 20180816T153913 - Thu Aug 16 15:39:15 2018 - Size: 21.9 MiB - WAL Size: 54.2 KiB
pgdb 20180816T153846 - Thu Aug 16 15:38:48 2018 - Size: 21.9 MiB - WAL Size: 53.0 KiB
Kebijakan Retensi Cadangan
Kebijakan retensi dapat didefinisikan untuk backup database. Cadangan dapat dianggap usang setelah jangka waktu tertentu dan cadangan usang dapat dihapus dari waktu ke waktu.
Ada opsi dalam file konfigurasi untuk memastikan cadangan dipertahankan dan menjadi usang ketika periode penyimpanan melebihi -
Parameter pertama yang harus dikonfigurasi adalah minimum_redundancy . Selalu konfigurasikan minimum_redundancy ke>0 untuk memastikan cadangan tidak terhapus secara tidak sengaja.
Contoh:minimum_redundancy =1
- kebijakan_retensi parameter akan menentukan berapa lama cadangan dasar harus dipertahankan untuk memastikan SLA pemulihan bencana terpenuhi.
- wal_retention_policy parameter akan menentukan berapa lama cadangan wal harus disimpan. Ini untuk memastikan RPO yang diharapkan terpenuhi.
Kebijakan retensi dan redundansi yang ada untuk server database dapat diperiksa menggunakan perintah barman check sebagai berikut
[[email protected] ~]$ barman check pgdb
Server pgdb:
PostgreSQL: OK
is_superuser: OK
PostgreSQL streaming: OK
wal_level: OK
replication slot: OK
directories: OK
retention policy settings: OK
backup maximum age: OK (no last_backup_maximum_age provided)
compression settings: OK
failed backups: OK (there are 0 failed backups)
minimum redundancy requirements: OK (have 4 backups, expected at least 0)
pg_basebackup: OK
pg_basebackup compatible: OK
pg_basebackup supports tablespaces mapping: OK
archive_mode: OK
archive_command: OK
continuous archiving: OK
pg_receivexlog: OK
pg_receivexlog compatible: OK
receive-wal running: OK
archiver errors: OK
Pencadangan dan Pemulihan Paralel dapat dilakukan dengan memanfaatkan beberapa CPU yang benar-benar membuat pencadangan dan pemulihan selesai lebih cepat. Fitur ini bermanfaat untuk basis data yang sangat besar yang berukuran hingga TeraBytes.
Untuk menjalankan pencadangan secara paralel, tambahkan opsi berikut dalam file konfigurasi server database (yaitu file /etc/barman.d/pgdb.conf)-
parallel_jobs = 1
Saya dapat menyimpulkan dengan mengatakan bahwa bartender adalah alat kelas perusahaan yang berpotensi membantu DBA merancang strategi pemulihan bencana yang efektif.
Referensi terkait ClusterControl untuk PostgreSQLPelajari lebih lanjut Menggunakan pg_dump dan pg_dumpall untuk Mencadangkan PostgreSQLBaca blog Alat Pencadangan Teratas untuk PostgreSQLBaca blog Menjadi DBA PostgreSQL - Cadangan PostgreSQL Logis &FisikBaca blog