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

Alat Cadangan Teratas untuk PostgreSQL

PostgreSQL memiliki reputasi kokoh sejak awal, dan selama bertahun-tahun telah mengumpulkan serangkaian fitur yang mengesankan. Namun ketenangan pikiran bahwa data di disk Anda sesuai dengan ACID — jika tidak dilengkapi dengan strategi pencadangan yang dipikirkan dengan matang — dapat dengan mudah dihancurkan.

Jenis Cadangan

Sebelum masuk ke alat yang tersedia, mari kita lihat jenis cadangan PostgreSQL yang tersedia dan apa karakteristiknya:

SQL dump (atau logis)

  • Tidak memblokir pembaca atau penulis.
  • Ditujukan untuk kumpulan data kecil karena dampak negatif pada beban sistem dan waktu yang lama diperlukan untuk operasi pencadangan dan pemulihan. Performa dapat ditingkatkan dengan tanda –no-sync, tetapi lihat halaman manual untuk risiko yang terkait dengan penonaktifan wait for write.
  • ANALISIS pasca-pemulihan diperlukan untuk mengoptimalkan statistik.
  • Objek global seperti peran dan ruang tabel hanya dapat dicadangkan menggunakan utilitas pg_dumpall. Perhatikan bahwa direktori tablespace harus dibuat secara manual sebelum memulai pemulihan.
  • Mendukung paralelisme dengan mengorbankan beban sistem yang meningkat. Baca man pg_dump untuk peringatan dan persyaratan khusus, mis. snapshot yang disinkronkan.
  • Dumps dapat dimuat dalam versi PostgreSQL yang lebih baru, atau bahkan arsitektur mesin lain, namun tidak dijamin kompatibel dengan versi utama sehingga beberapa pengeditan manual dari file dump mungkin diperlukan.

Sistem file (atau fisik)

  • Mengharuskan database dimatikan.
  • Lebih cepat dari pencadangan logis.
  • Termasuk data cluster.
  • Hanya dapat dipulihkan pada versi utama PostgreSQL yang sama.

Pengarsipan berkelanjutan (atau Pemulihan Titik Dalam Waktu atau PITR)

  • Cocok untuk database yang sangat besar di mana backup logis atau fisik akan memakan waktu terlalu lama.
  • Beberapa direktori di dalam direktori data dapat dikecualikan untuk mempercepat proses.

Snapshot

  • Memerlukan dukungan sistem operasi — misalnya LVM bekerja cukup baik yang juga dikonfirmasi oleh NetBackup untuk Agen PostgreSQL.
  • Cocok untuk aplikasi di mana direktori data dan database harus sinkron mis. aplikasi LAMP, asalkan kedua snapshot disinkronkan.
  • Tidak disarankan bila file database disimpan di beberapa sistem file (harus memotret semua sistem file secara bersamaan).

Awan

Semua penyedia cloud menerapkan pencadangan dalam penawaran PostgreSQL mereka. Pencadangan logis dapat dilakukan seperti biasa, sementara pencadangan fisik dan PITR tersedia melalui penawaran layanan cloud karena akses ke penyimpanan data tidak tersedia (lihat misalnya Amazon Aurora untuk PostgreSQL). Oleh karena itu, mencadangkan PostgreSQL di cloud perlu menjadi topik untuk blog lain.

Basis agen

  • Memerlukan agen yang diinstal pada target.
  • Dapat melakukan pencadangan tingkat blok mis. COMMVAULT (penginstalan hanya didukung pada Windows).

Fitur

Meskipun PostgreSQL menyediakan alat yang diperlukan untuk melakukan pencadangan logis, fisik, dan PITR, aplikasi pencadangan khusus mengandalkan PostgreSQL asli dan alat sistem operasi untuk memenuhi kebutuhan penerapan strategi pencadangan yang membahas poin-poin berikut:

  • otomatisasi
  • frekuensi
  • masa retensi
  • integritas
  • kemudahan penggunaan

Selain itu, alat pencadangan PostgreSQL mencoba menyediakan fitur umum untuk alat pencadangan umum seperti:

  • pencadangan tambahan untuk menghemat ruang penyimpanan
  • katalog cadangan
  • kemampuan untuk menyimpan cadangan di tempat atau di awan
  • pemberitahuan dan pemberitahuan
  • pelaporan komprehensif
  • kontrol akses
  • enkripsi
  • antarmuka grafis dan dasbor
  • cadangan host jarak jauh
  • throughput adaptif untuk meminimalkan beban pada target
  • menangani beberapa host secara paralel
  • orkestrasi pencadangan mis. rantai pekerjaan
  • API REST

Penyiapan Lab

Untuk latihan ini saya telah menyiapkan host perintah-dan-kontrol tempat saya akan menginstal alat pencadangan, yang juga menjalankan dua instans PostgreSQL — 9.6 dan 10 — diinstal dari repositori PGDG:

[[email protected] ~]# ps -o user,pid,ppid,args --forest -U postgres
USER       PID  PPID COMMAND
postgres  4535     1 /usr/pgsql-10/bin/postmaster -D /var/lib/pgsql/10/data/
postgres  4538  4535  \_ postgres: logger process
postgres  4540  4535  \_ postgres: checkpointer process
postgres  4541  4535  \_ postgres: writer process
postgres  4542  4535  \_ postgres: wal writer process
postgres  4543  4535  \_ postgres: autovacuum launcher process
postgres  4544  4535  \_ postgres: stats collector process
postgres  4545  4535  \_ postgres: bgworker: logical replication launcher
postgres  4481     1 /usr/pgsql-9.6/bin/postmaster -D /var/lib/pgsql/9.6/data/
postgres  4483  4481  \_ postgres: logger process
postgres  4485  4481  \_ postgres: checkpointer process
postgres  4486  4481  \_ postgres: writer process
postgres  4487  4481  \_ postgres: wal writer process
postgres  4488  4481  \_ postgres: autovacuum launcher process
postgres  4489  4481  \_ postgres: stats collector process

[[email protected] ~]# netstat -npeelt | grep :543
tcp   0  0  127.0.0.1:5432  0.0.0.0:*  LISTEN  26  79972  4481/postmaster
tcp   0  0  127.0.0.1:5433  0.0.0.0:*  LISTEN  26  81801  4535/postmaster
tcp6  0  0  ::1:5432        :::*       LISTEN  26  79971  4481/postmaster
tcp6  0  0  ::1:5433        :::*       LISTEN  26  81800  4535/postmaster

Saya juga telah menyiapkan dua instance PostgreSQL jarak jauh yang menjalankan versi yang sama 9.6 dan masing-masing 10:

[[email protected] ~]# ps -o user,pid,ppid,args --forest -U postgres
USER       PID  PPID COMMAND
postgres 10972     1 /usr/pgsql-9.6/bin/postmaster -D /var/lib/pgsql/9.6/data/
postgres 10975 10972  \_ postgres: logger process
postgres 10977 10972  \_ postgres: checkpointer process
postgres 10978 10972  \_ postgres: writer process
postgres 10979 10972  \_ postgres: wal writer process
postgres 10980 10972  \_ postgres: autovacuum launcher process
postgres 10981 10972  \_ postgres: stats collector process

[[email protected] ~]# netstat -npeelt | grep :5432
tcp   0  0  0.0.0.0:5432  0.0.0.0:*  LISTEN  26  34864  10972/postmaster
tcp6  0  0  :::5432       :::*       LISTEN  26  34865  10972/postmaster


[[email protected] ~]# ps -o user,pid,ppid,args --forest -U postgres
USER       PID  PPID COMMAND
postgres 10829     1 /usr/pgsql-10/bin/postmaster -D /var/lib/pgsql/10/data/
postgres 10831 10829  \_ postgres: logger process
postgres 10833 10829  \_ postgres: checkpointer process
postgres 10834 10829  \_ postgres: writer process
postgres 10835 10829  \_ postgres: wal writer process
postgres 10836 10829  \_ postgres: autovacuum launcher process
postgres 10837 10829  \_ postgres: stats collector process
postgres 10838 10829  \_ postgres: bgworker: logical replication launcher

[[email protected] ~]# netstat -npeelt | grep :5432
tcp   0  0  0.0.0.0:5432  0.0.0.0:*  LISTEN  26  34242  10829/postmaster
tcp6  0  0  :::5432       :::*       LISTEN  26  34243  10829/postmaster

Selanjutnya, gunakan pgbench untuk membuat kumpulan data:

pgbench=# \dt+
                          List of relations
 Schema |       Name       | Type  |  Owner   |  Size   | Description
--------+------------------+-------+----------+---------+-------------
 public | pgbench_accounts | table | postgres | 128 MB  |
 public | pgbench_branches | table | postgres | 40 kB   |
 public | pgbench_history  | table | postgres | 0 bytes |
 public | pgbench_tellers  | table | postgres | 40 kB   |
(4 rows)

Alat

Daftar alat pencadangan umum dapat ditemukan di PostgreSQL Wiki — bagian Cadangan. Saya telah menambah daftar dengan produk yang saya temui selama bertahun-tahun dan dari pencarian Internet baru-baru ini.

Amanda

Amanda berbasis agen, open source, dan mendukung PostgreSQL secara langsung melalui API ampgsql. Sampai tulisan ini dibuat, versi 3.5.1 tidak mendukung tablespace (lihat man ampgsql).

Zmanda menyediakan versi perusahaan yang juga open source, namun tidak langsung tersedia untuk diunduh sebagai percobaan.

Amanda memerlukan host cadangan khusus karena paket server dan klien saling mengecualikan:

[[email protected] ~]# rpm -qp --conflicts ./amanda-backup_client-3.5.1-1.rhel7.x86_64.rpm
amanda-backup_server
[[email protected] ~]# rpm -qp --conflicts ./amanda-backup_server-3.5.1-1.rhel7.x86_64.rpm
amanda-backup_client

Ikuti panduan konfigurasi dasar untuk menyiapkan server dan klien kemudian mengkonfigurasi API PostgreSQL.

Berikut perbedaan git dari lab saya:

  • Server:

    • menambah ruang cadangan server:

      --- a/etc/amanda/omiday/amanda.conf
      				+++ b/etc/amanda/omiday/amanda.conf
      				@@ -13,7 +13,7 @@ amrecover_changer "changer"
      
      				tapetype "TEST-TAPE"
      				define tapetype TEST-TAPE {
      				1.  length 100 mbytes
      				2.  length 500 mbytes
      					filemark 4 kbytes
      				}
      • tentukan target PostgreSQL (dan nonaktifkan cadangan sampel):

        --- a/etc/amanda/omiday/disklist
        +++ b/etc/amanda/omiday/disklist
        @@ -1,3 +1,2 @@
        -localhost /etc simple-gnutar-local
        +#localhost /etc simple-gnutar-local
        +10.1.9.243 /var/lib/pgsql/9.6/data dt_ampgsql
  • Klien:

    • konfigurasi:

      --- /dev/null
      +++ b/etc/amanda/omiday/amanda-client.conf
      @@ -0,0 +1,5 @@
      +property "PG-DATADIR" "/var/lib/pgsql/9.6/data"
      +property "PG-ARCHIVEDIR" "/var/lib/pgsql/9.6/archive"
      +property "PG-HOST" "/tmp"
      +property "PG-USER" "amandabackup"
      +property "PG-PASSFILE" "/etc/amanda/pg_passfile"
      • file otentikasi:

        --- /dev/null
        +++ b/etc/amanda/pg_passfile
        @@ -0,0 +1 @@
        +/tmp:*:*:amandabackup:pass
    • otorisasi server:

      --- a/var/lib/amanda/.amandahosts
      +++ b/var/lib/amanda/.amandahosts
      @@ -1,2 +1,3 @@
      localhost amandabackup amdump
      localhost.localdomain amandabackup amdump
      +10.1.9.231 amandabackup amdump
    • Otentikasi PostgreSQL:

      --- a/var/lib/pgsql/9.6/data/pg_hba.conf
      +++ b/var/lib/pgsql/9.6/data/pg_hba.conf
      @@ -79,7 +79,8 @@
      # "local" is for Unix domain socket connections only
      local   all             all                                     trust
      # IPv4 local connections:
      -host    all             all             127.0.0.1/32            ident
      +host    all             all             127.0.0.1/32            trust
      +host    all             amandabackup    10.1.9.243/32           trust
      # IPv6 local connections:
      host    all             all             ::1/128                 ident
      # Allow replication connections from localhost, by a user with the
    • Konfigurasi PostgreSQL:

      --- a/var/lib/pgsql/9.6/data/postgresql.conf
      +++ b/var/lib/pgsql/9.6/data/postgresql.conf
      @@ -178,6 +178,7 @@ dynamic_shared_memory_type = posix  # the default is the first option
      
      #wal_level = minimal                   # minimal, replica, or logical
                                             # (change requires restart)
      +wal_level = replica
      #fsync = on                            # flush data to disk for crash safety
                                                      # (turning this off can cause
                                                      # unrecoverable data corruption)
      @@ -215,10 +216,12 @@ dynamic_shared_memory_type = posix        # the default is the first option
      
      #archive_mode = off            # enables archiving; off, on, or always
                                    # (change requires restart)
      +archive_mode = on
      #archive_command = ''          # command to use to archive a logfile segment
                                    # placeholders: %p = path of file to archive
                                    #               %f = file name only
                                    # e.g. 'test ! -f /mnt/server/archivedir/%f && cp %p /mnt/server/archivedir/%f'
      +archive_command = 'test ! -f /var/lib/pgsql/9.6/archive/%f && cp %p /var/lib/pgsql/9.6/archive/%f'
      #archive_timeout = 0           # force a logfile segment switch after this
                                    # number of seconds; 0 disables

Setelah menyelesaikan konfigurasi di atas, jalankan pencadangan:

[[email protected] ~]$ amdump omiday

Dan verifikasi:

[[email protected] ~]$ amreport omiday
Hostname: cc
Org     : omiday
Config  : omiday
Date    : April 14, 2018

These dumps were to tape MyData01.
The next tape Amanda expects to use is: MyData02.


STATISTICS:
                        Total       Full      Incr.   Level:#
                        --------   --------   --------  --------
Estimate Time (hrs:min)     0:00
Run Time (hrs:min)          0:00
Dump Time (hrs:min)         0:00       0:00       0:00
Output Size (meg)            0.1        0.0        0.1
Original Size (meg)         16.0        0.0       16.0
Avg Compressed Size (%)      0.5        --         0.5
DLEs Dumped                    1          0          1  1:1
Avg Dump Rate (k/s)         33.7        --        33.7

Tape Time (hrs:min)         0:00       0:00       0:00
Tape Size (meg)              0.1        0.0        0.1
Tape Used (%)                0.0        0.0        0.0
DLEs Taped                     1          0          1  1:1
Parts Taped                    1          0          1  1:1
Avg Tp Write Rate (k/s)    830.0        --       830.0


USAGE BY TAPE:
Label                 Time         Size      %  DLEs Parts
MyData01              0:00          83K    0.0     1     1


NOTES:
planner: tapecycle (3) <= runspercycle (3)
planner: Last full dump of 10.1.9.243:/var/lib/pgsql/9.6/data on tape MyData04 overwritten in 3 runs.
taper: tape MyData01 kb 83 fm 1 [OK]


DUMP SUMMARY:
                                                               DUMPER STATS   TAPER STATS
HOSTNAME     DISK                    L ORIG-KB  OUT-KB  COMP%  MMM:SS   KB/s MMM:SS   KB/s
-------------------------------------- ---------------------- -------------- -------------
10.1.9.243   /var/lib/pgsql/9.6/data 1   16416      83    0.5    0:02   33.7   0:00  830.0

(brought to you by Amanda version 3.5.1)

Memulihkan dari cadangan melibatkan lebih banyak langkah manual seperti yang dijelaskan di bagian pemulihan.

Menurut FAQ Amanda Enterprise, peningkatan berikut akan berlaku untuk contoh PostgreSQL kami:

  • konsol manajemen untuk otomatisasi pencadangan, kebijakan penyimpanan, dan jadwal
  • cadangkan ke penyimpanan cloud Amazon S3

Petugas Bar

Barman adalah solusi pemulihan bencana untuk PostgreSQL yang dikelola oleh 2ndQuadrant. Ini dirancang untuk mengelola cadangan untuk beberapa database dan memiliki kemampuan untuk memulihkan ke titik waktu sebelumnya menggunakan fitur PITR dari PostgreSQL.

Sekilas fitur Barman:

  • menangani beberapa target
  • dukungan untuk berbagai versi PostgreSQL
  • tanpa kehilangan data
  • streaming dan/atau pengarsipan standar WAL
  • pemulihan lokal atau jarak jauh
  • titik sederhana dalam pemulihan waktu

Seperti disebutkan dalam Barman Manual, dukungan untuk pencadangan tambahan, pekerjaan paralel, deduplikasi data, dan kompresi jaringan hanya tersedia saat menggunakan opsi rsync. Selain itu, streaming WAL dari standby menggunakan archive_command saat ini tidak didukung.

Setelah mengikuti petunjuk dalam manual untuk menyiapkan lingkungan, kami dapat memverifikasi:

-bash-4.2$ barman list-server
db1 - master
db2 - replica

-bash-4.2$ barman check db1
Server db1:
      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 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: OK
      archiver errors: OK

-bash-4.2$ barman check db2
Server db2:
      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 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: OK
      archiver errors: OK

Semuanya diperiksa dengan baik, jadi kami dapat menguji dengan mencadangkan kedua host:

-bash-4.2$ barman backup db1
Starting backup using postgres method for server db1 in /var/lib/barman/db1/base/20180414T091155
Backup start at LSN: 0/240001B0 (000000010000000000000024, 000001B0)
Starting backup copy via pg_basebackup for 20180414T091155
Copy done (time: 2 seconds)
Finalising the backup.
This is the first backup for server db1
WAL segments preceding the current backup have been found:
      000000010000000000000023 from server db1 has been removed
Backup size: 201.9 MiB
Backup end at LSN: 0/26000000 (000000010000000000000025, 00000000)
Backup completed (start time: 2018-04-14 09:11:55.783708, elapsed time: 2 seconds)
Processing xlog segments from file archival for db1
      000000010000000000000023
      000000010000000000000024
      000000010000000000000025.00000028.backup
Processing xlog segments from streaming for db1
      000000010000000000000024

-bash-4.2$ barman backup db2
Starting backup using postgres method for server db2 in /var/lib/barman/db2/base/20180414T091225
Backup start at LSN: 0/B0000D0 (00000001000000000000000B, 000000D0)
Starting backup copy via pg_basebackup for 20180414T091225
Copy done (time: 3 seconds)
Finalising the backup.
This is the first backup for server db2
WAL segments preceding the current backup have been found:
      000000010000000000000009 from server db2 has been removed
      00000001000000000000000A from server db2 has been removed
Backup size: 196.8 MiB
Backup end at LSN: 0/D000000 (00000001000000000000000C, 00000000)
Backup completed (start time: 2018-04-14 09:12:25.619005, elapsed time: 3 seconds)
Processing xlog segments from file archival for db2
      00000001000000000000000B
      00000001000000000000000C.00000028.backup
Processing xlog segments from streaming for db2
      00000001000000000000000B

Buat daftar katalog cadangan:

-bash-4.2$ barman list-backup all
db1 20180414T091155 - Sat Apr 14 09:11:58 2018 - Size: 217.9 MiB - WAL Size: 0 B
db2 20180414T091225 - Sat Apr 14 09:12:28 2018 - Size: 212.8 MiB - WAL Size: 0 B

Menampilkan konten untuk cadangan tertentu:

-bash-4.2$ barman list-files db1 20180414T091155 | head
/var/lib/barman/db1/base/20180414T091155/backup.info
/var/lib/barman/db1/base/20180414T091155/data/backup_label
/var/lib/barman/db1/base/20180414T091155/data/PG_VERSION
/var/lib/barman/db1/base/20180414T091155/data/postgresql.auto.conf
/var/lib/barman/db1/base/20180414T091155/data/pg_ident.conf
/var/lib/barman/db1/base/20180414T091155/data/postgresql.conf
/var/lib/barman/db1/base/20180414T091155/data/pg_hba.conf

Saat Barman dikonfigurasi untuk streaming WAL sinkron, kami dapat memverifikasi status replikasi:

-bash-4.2$ barman replication-status db1
Status of streaming clients for server 'db1':
Current LSN on master: 0/26000528
Number of streaming clients: 1

1. Async WAL streamer
   Application name: barman_receive_wal
   Sync stage      : 3/3 Remote write
   Communication   : TCP/IP
   IP Address      : 10.1.9.231 / Port: 37278 / Host: -
   User name       : streaming_barman
   Current state   : streaming (async)
   Replication slot: barman
   WAL sender PID  : 2046
   Started at      : 2018-04-14 09:04:03.019323+00:00
   Sent LSN   : 0/26000528 (diff: 0 B)
   Write LSN  : 0/26000528 (diff: 0 B)
   Flush LSN  : 0/26000000 (diff: -1.3 KiB)

Peningkatan lebih lanjut dapat ditambahkan menggunakan skrip kait yang disediakan.

Terakhir, untuk pecinta baris perintah, Barman hadir dengan penyelesaian TAB penuh.

Alat Pencadangan dan Pemulihan EDB (BART)

EDB BART adalah aplikasi berpemilik sumber tertutup yang disediakan oleh EnterpriseDB. Ini menggabungkan Pencadangan Tingkat Sistem File asli PostgreSQL dan PITR menjadi alat yang mudah digunakan yang menyediakan fitur berikut:

  • kebijakan retensi
  • pencadangan tambahan
  • pencadangan fisik yang lengkap, panas, dari beberapa Server Lanjutan Postgres Plus dan server database PostgreSQL
  • manajemen pencadangan dan pemulihan server database pada host lokal atau jarak jauh
  • katalog terpusat untuk data cadangan
  • menyimpan data cadangan dalam format terkompresi
  • verifikasi checksum

Sementara versi uji coba untuk versi terbaru v2.1 hanya dapat diperoleh melalui permintaan repo yum, artikel Pencadangan Data Menjadi Mudah dan panduan dokumentasi produk menawarkan beberapa informasi bagi mereka yang penasaran untuk mempelajari lebih lanjut.

Unduh Whitepaper Hari Ini Pengelolaan &Otomatisasi PostgreSQL dengan ClusterControlPelajari tentang apa yang perlu Anda ketahui untuk menerapkan, memantau, mengelola, dan menskalakan PostgreSQLUnduh Whitepaper

pgBackRest

pgBackRest mengimplementasikan cadangan sistem lengkap yang tidak bergantung pada tar dan rsync alat umum. Saat ini di-host dan disediakan oleh CrunchyData di bawah lisensi MIT. Lihat Pengakuan untuk detail tentang asal-usulnya.

Ia menawarkan semua fitur yang diharapkan dari alat sentris PostgreSQL:

  • throughput pencadangan/pemulihan tinggi
  • pencadangan penuh, inkremental, dan diferensial
  • kebijakan retensi
  • cadangkan dan pulihkan verifikasi integritas melalui checksum file dan integrasi dengan checksum halaman PostgreSQL.
  • kemampuan untuk melanjutkan pencadangan
  • kompresi streaming dan checksum
  • Dukungan penyimpanan cloud Amazon S3
  • Enkripsi

..dan banyak lagi. Lihat halaman proyek untuk detailnya.

Instalasi memerlukan sistem Linux/Unix 64-bit dan dijelaskan dalam panduan pengguna. Panduan ini juga memperkenalkan konsep utama kepada pembaca, sangat berguna bagi mereka yang baru mengenal PostgreSQL atau teknologi penyimpanan.

Meskipun panduan ini menggunakan contoh perintah untuk Debian/Ubuntu, pgBackRest tersedia di repositori yum PGDG, dan penginstal akan menarik semua dependensi:

Memasang:

pgbackrest       x86_64  2.01-1.rhel7     pgdg10  36k

Installing       for     dependencies:
perl-DBD-Pg      x86_64  2.19.3-4.el7     base    195k
perl-DBI         x86_64  1.627-4.el7      base    802k
perl-Digest-SHA  x86_64  1:5.85-4.el7     base    58k
perl-JSON-PP     noarch  2.27202-2.el7    base    55k
perl-Net-Daemon  noarch  0.48-5.el7       base    51k
perl-PlRPC       noarch  0.2020-14.el7    base    36k
perl-XML-LibXML  x86_64  1:2.0018-5.el7   base    373k
perl-version     x86_64  3:0.99.07-2.el7  base    84k

Mari kita siapkan dua cluster, pg96 dan pg10, masing-masing memiliki satu node:

  • node kontrol (“repositori” dalam panduan):

    [[email protected] ~]# cat /etc/pgbackrest.conf
    [global]
    repo1-path=/var/lib/pgbackrest
    repo1-retention-full=2
    start-fast=y
    
    [pg96]
    pg1-path=/var/lib/pgsql/9.6/data
    pg1-host=db1
    pg1-host-user=postgres
    
    [pg10]
    pg1-path=/var/lib/pgsql/10/data
    pg1-host=db2
    pg1-host-user=postgres
  • kelompok #1:

    [[email protected] ~]# cat /etc/pgbackrest.conf
    [global]
    log-level-file=detail
    repo1-host=repository
    
    [pg96]
    pg1-path=/var/lib/pgsql/9.6/data
  • kelompok #2:

    [[email protected] ~]# cat /etc/pgbackrest.conf
    [global]
    log-level-file=detail
    repo1-host=repository
    
    [pg10]
    pg1-path=/var/lib/pgsql/10/data

Selanjutnya, jalankan pencadangan dan tampilkan katalog pencadangan:

-bash-4.2$ pgbackrest --stanza=pg96 info
stanza: pg96
   status: ok

   db (current)
      wal archive min/max (9.6-1): 00000001000000000000003D / 00000001000000000000003D

      full backup: 20180414-120727F
            timestamp start/stop: 2018-04-14 12:07:27 / 2018-04-14 12:08:01
            wal start/stop: 00000001000000000000003D / 00000001000000000000003D
            database size: 185.6MB, backup size: 185.6MB
            repository size: 12.1MB, repository backup size: 12.1MB
-bash-4.2$ pgbackrest --stanza=pg10 info
stanza: pg10
   status: ok

   db (current)
      wal archive min/max (10-1): 000000010000000000000012 / 000000010000000000000012

      full backup: 20180414-120810F
            timestamp start/stop: 2018-04-14 12:08:10 / 2018-04-14 12:08:38
            wal start/stop: 000000010000000000000012 / 000000010000000000000012
            database size: 180.5MB, backup size: 180.5MB
            repository size: 11.6MB, repository backup size: 11.6MB

pgBackRest mendukung paralelisasi pencadangan dan pemulihan — mengikuti contoh dalam panduan ini, kami mendukung dengan satu CPU dan kemudian memperbarui konfigurasi untuk menggunakan 2 CPU:

--- a/etc/pgbackrest.conf
+++ b/etc/pgbackrest.conf
@@ -2,6 +2,7 @@
repo1-path=/var/lib/pgbackrest
repo1-retention-full=2
start-fast=y
+process-max=2

[pg96]
pg1-host=db1

Hasilnya:

-bash-4.2$ pgbackrest --stanza=pg96 info
stanza: pg96
    status: ok

    db (current)
        wal archive min/max (9.6-1): 00000001000000000000003D / 000000010000000000000041

        full backup: 20180414-120727F
            timestamp start/stop: 2018-04-14 12:07:27 / 2018-04-14 12:08:01
            wal start/stop: 00000001000000000000003D / 00000001000000000000003D
            database size: 185.6MB, backup size: 185.6MB
            repository size: 12.1MB, repository backup size: 12.1MB

        incr backup: 20180414-120727F_20180414-121434I
            timestamp start/stop: 2018-04-14 12:14:34 / 2018-04-14 12:14:52
            wal start/stop: 00000001000000000000003F / 00000001000000000000003F
            database size: 185.6MB, backup size: 8.2KB
            repository size: 12.1MB, repository backup size: 431B
            backup reference list: 20180414-120727F

        incr backup: 20180414-120727F_20180414-121853I
            timestamp start/stop: 2018-04-14 12:18:53 / 2018-04-14 12:19:08
            wal start/stop: 000000010000000000000041 / 000000010000000000000041
            database size: 185.6MB, backup size: 8.2KB
            repository size: 12.1MB, repository backup size: 429B
            backup reference list: 20180414-120727F

Dengan 2 CPU, pencadangan berjalan hampir 20% lebih cepat yang dapat membuat perbedaan besar saat dijalankan dengan kumpulan data besar.

Kesimpulan

Alat pencadangan sentris PostgreSQL menawarkan, seperti yang diharapkan, lebih banyak opsi daripada alat tujuan umum. Sebagian besar alat pencadangan PostgreSQL menawarkan fungsionalitas inti yang sama, tetapi penerapannya memperkenalkan batasan yang hanya dapat ditemukan dengan mengikuti dokumentasi dengan cermat untuk menguji coba produk.

Selain itu, ClusterControl menawarkan serangkaian fitur pencadangan dan pemulihan yang dapat Anda gunakan sebagai bagian dari penyiapan manajemen basis data 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. Saya ingin mengambil data dari nama tabel yang berbeda menggunakan fungsi postgresql

  2. cara memperbaiki OperationalError:(psycopg2.OperationalError) server menutup koneksi secara tidak terduga

  3. Menghancurkan DB Postgres di Heroku

  4. Pencadangan &Pemulihan PostgreSQL 9.0

  5. Tidak dapat mendekripsi menggunakan pgcrypto dari AES-256-CBC tetapi AES-128-CBC tidak masalah