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

Menggunakan Barman untuk Mencadangkan PostgreSQL - Gambaran Umum

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 .conf dan file lain yang memiliki parameter terkait bartender (seperti lokasi backup barman, server bartender, file log, dll.) yang dikonfigurasi berada di “/etc” (/etc/barman.conf). File konfigurasi bartender memiliki konfigurasi parameter tipe MySQL.

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 .conf yang terletak di /etc/barman.d/. Ketika perintah backup barman dijalankan, bartender mencari bagian [pgdb] di file pgdb.conf.

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 -

  1. pg_basebackup
  2. 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 Whitepaper

Streaming 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

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Hitung persentase dari SUM() dalam kueri sql SELECT yang sama

  2. Postgres UNTUK LOOP

  3. Bagaimana Acosh() Bekerja di PostgreSQL

  4. Cara Menginstal PostgreSQL 12 di Ubuntu 20.04 DigitalOcean

  5. Bagaimana to_date() Bekerja di PostgreSQL