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 WhitepaperpgBackRest
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.