PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Các công cụ sao lưu hàng đầu cho PostgreSQL

PostgreSQL nổi tiếng là vững chắc ngay từ những ngày đầu thành lập, và qua nhiều năm đã tích lũy được một loạt các tính năng ấn tượng. Tuy nhiên, hãy yên tâm rằng dữ liệu trên đĩa của bạn tuân thủ ACID - nếu không được bổ sung bởi một chiến lược sao lưu có suy nghĩ tốt tương đương - có thể dễ dàng bị phá hủy.

Các loại sao lưu

Trước khi đi sâu vào các công cụ có sẵn, hãy xem các loại sao lưu PostgreSQL có sẵn và đặc điểm của chúng là gì:

SQL kết xuất (hoặc lôgic)

  • Không chặn người đọc hoặc người viết.
  • Hướng tới các tập hợp dữ liệu nhỏ vì tác động tiêu cực đến tải hệ thống và thời gian dài cần thiết cho cả hoạt động sao lưu và khôi phục. Hiệu suất có thể được tăng lên với cờ –no-sync, nhưng hãy tham khảo trang man để biết các rủi ro liên quan đến việc tắt tính năng chờ ghi.
  • Cần có PHÂN TÍCH sau khôi phục để tối ưu hóa số liệu thống kê.
  • Các đối tượng toàn cục như vai trò và không gian bảng chỉ có thể được sao lưu bằng tiện ích pg_dumpall. Lưu ý rằng các thư mục vùng bảng phải được tạo theo cách thủ công trước khi bắt đầu khôi phục.
  • Hỗ trợ song song với chi phí tăng tải hệ thống. Đọc man pg_dump để biết những lưu ý và yêu cầu đặc biệt của nó, ví dụ:ảnh chụp nhanh được đồng bộ hóa.
  • Kết xuất có thể được tải trong các phiên bản PostgreSQL mới hơn hoặc thậm chí là một kiến ​​trúc máy khác, tuy nhiên chúng không được đảm bảo là tương thích ngược giữa các phiên bản chính vì vậy có thể phải chỉnh sửa thủ công một số tệp kết xuất.

Hệ thống tệp (hoặc vật lý)

  • Yêu cầu đóng cơ sở dữ liệu.
  • Nhanh hơn so với sao lưu lôgic.
  • Bao gồm dữ liệu cụm.
  • Chỉ có thể được khôi phục trên cùng một phiên bản chính của PostgreSQL.

Lưu trữ liên tục (hoặc Khôi phục thời gian hoặc PITR)

  • Thích hợp cho các cơ sở dữ liệu rất lớn, nơi quá trình sao lưu lôgic hoặc vật lý sẽ mất quá nhiều thời gian.
  • Có thể loại trừ một số thư mục bên trong thư mục dữ liệu để tăng tốc quá trình.

Ảnh chụp nhanh

  • Yêu cầu hỗ trợ hệ điều hành - ví dụ:LVM hoạt động khá tốt, điều này cũng được NetBackup xác nhận cho PostgreSQL Agent.
  • Thích hợp cho các ứng dụng mà cả thư mục dữ liệu và cơ sở dữ liệu phải được đồng bộ hóa, ví dụ:Các ứng dụng LAMP, với điều kiện là hai ảnh chụp nhanh được đồng bộ hóa.
  • Không nên sử dụng khi các tệp cơ sở dữ liệu được lưu trữ trên nhiều hệ thống tệp (phải chụp nhanh tất cả các hệ thống tệp đồng thời).

Đám mây

Tất cả các nhà cung cấp đám mây đều triển khai sao lưu trong dịch vụ PostgreSQL của họ. Sao lưu logic có thể được thực hiện như bình thường, trong khi sao lưu vật lý và PITR có sẵn thông qua các dịch vụ đám mây vì không có quyền truy cập vào kho dữ liệu (xem ví dụ:Amazon Aurora cho PostgreSQL). Do đó, sao lưu PostgreSQL trên đám mây sẽ cần phải là một chủ đề cho blog khác.

Cơ sở đại lý

  • Yêu cầu một tác nhân được cài đặt trên các mục tiêu.
  • Có thể thực hiện sao lưu cấp khối, ví dụ:COMMVAULT (chỉ hỗ trợ cài đặt trên Windows).

Tính năng

Trong khi PostgreSQL cung cấp các công cụ cần thiết để thực hiện sao lưu lôgic, vật lý và PITR, các ứng dụng sao lưu chuyên dụng dựa trên PostgreSQL gốc và các công cụ hệ điều hành để đáp ứng nhu cầu thực hiện chiến lược sao lưu giải quyết các điểm sau:

  • tự động hóa
  • tần số
  • khoảng thời gian lưu giữ
  • tính toàn vẹn
  • dễ sử dụng

Ngoài ra, các công cụ sao lưu PostgreSQL cố gắng cung cấp các tính năng phổ biến cho các công cụ sao lưu thông thường như:

  • sao lưu gia tăng để tiết kiệm dung lượng lưu trữ
  • danh mục dự phòng
  • khả năng lưu trữ các bản sao lưu tại trụ sở hoặc trên đám mây
  • cảnh báo và thông báo
  • báo cáo toàn diện
  • kiểm soát truy cập
  • mã hóa
  • giao diện đồ họa và trang tổng quan
  • bản sao lưu của các máy chủ từ xa
  • thông lượng thích ứng để giảm thiểu tải cho các mục tiêu
  • xử lý song song nhiều máy chủ lưu trữ
  • điều phối dự phòng, ví dụ:chuỗi công việc
  • API REST

Thiết lập phòng thí nghiệm

Đối với bài tập này, tôi đã thiết lập một máy chủ lưu trữ lệnh và điều khiển mà tôi sẽ cài đặt các công cụ sao lưu, máy chủ này cũng chạy hai phiên bản PostgreSQL - 9.6 và 10 - được cài đặt từ kho lưu trữ 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

Tôi cũng đã thiết lập hai phiên bản PostgreSQL từ xa chạy cùng phiên bản 9.6 và tương ứng là 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

Tiếp theo, sử dụng pgbench để tạo tập dữ liệu:

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)

Công cụ

Bạn có thể tìm thấy danh sách các công cụ sao lưu phổ biến trong phần PostgreSQL Wiki - Backup. Tôi đã tăng cường danh sách với các sản phẩm mà tôi đã xem qua nhiều năm và từ một tìm kiếm trên Internet gần đây.

Amanda

Amanda là dựa trên tác nhân, mã nguồn mở và hỗ trợ PostgreSQL ngay lập tức thông qua API ampgsql. Theo văn bản này, phiên bản 3.5.1 không hỗ trợ không gian bảng (xem man ampgsql).

Zmanda cung cấp phiên bản doanh nghiệp cũng là mã nguồn mở, tuy nhiên không có sẵn trực tiếp để tải xuống dưới dạng dùng thử.

Amanda yêu cầu một máy chủ dự phòng chuyên dụng vì các gói máy chủ và máy khách loại trừ nhau:

[[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

Làm theo hướng dẫn cấu hình cơ bản để thiết lập máy chủ và máy khách, sau đó định cấu hình API PostgreSQL.

Đây là một git khác với phòng thí nghiệm của tôi:

  • Máy chủ:

    • tăng không gian sao lưu của máy chủ:

      --- 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
      				}
      • xác định đích PostgreSQL (và tắt sao lưu mẫu):

        --- 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
  • Khách hàng:

    • cấu hình:

      --- /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"
      • tệp xác thực:

        --- /dev/null
        +++ b/etc/amanda/pg_passfile
        @@ -0,0 +1 @@
        +/tmp:*:*:amandabackup:pass
    • ủy quyền cho máy chủ:

      --- 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
    • Xác thực 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
    • Cấu hình 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

Sau khi hoàn tất cấu hình trên, hãy chạy sao lưu:

[[email protected] ~]$ amdump omiday

Và xác minh:

[[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)

Khôi phục từ bản sao lưu bao gồm nhiều bước thủ công hơn như được giải thích trong phần khôi phục.

Theo Câu hỏi thường gặp về Doanh nghiệp Amanda, cải tiến sau sẽ áp dụng cho ví dụ PostgreSQL của chúng tôi:

  • bảng điều khiển quản lý để tự động hóa các chính sách sao lưu, lưu giữ và lịch trình
  • sao lưu vào bộ nhớ đám mây Amazon S3

Barman

Barman là một giải pháp khôi phục sau thảm họa cho PostgreSQL do 2ndQuadrant duy trì. Nó được thiết kế để quản lý các bản sao lưu cho nhiều cơ sở dữ liệu và có khả năng khôi phục về thời điểm trước đó bằng cách sử dụng tính năng PITR của PostgreSQL.

Sơ lược về các tính năng của Barman:

  • xử lý nhiều mục tiêu
  • hỗ trợ cho các phiên bản PostgreSQL khác nhau
  • không mất dữ liệu
  • phát trực tuyến và / hoặc lưu trữ tiêu chuẩn của WALs
  • khôi phục cục bộ hoặc từ xa
  • thời gian khôi phục được đơn giản hóa

Như đã lưu ý trong Hướng dẫn sử dụng Barman, hỗ trợ sao lưu gia tăng, công việc song song, sao lưu dữ liệu và nén mạng chỉ khả dụng khi sử dụng tùy chọn rsync. Ngoài ra, phát trực tuyến WAL từ chế độ chờ bằng archive_command hiện không được hỗ trợ.

Sau khi làm theo các hướng dẫn trong sổ tay hướng dẫn thiết lập môi trường, chúng tôi có thể xác minh:

-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

Mọi thứ đều kiểm tra OK, vì vậy chúng tôi có thể kiểm tra bằng cách sao lưu hai máy chủ:

-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

Liệt kê danh mục sao lưu:

-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

Hiển thị nội dung cho một bản sao lưu cụ thể:

-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

Khi Barman được định cấu hình để phát trực tuyến WAL đồng bộ, chúng tôi có thể xác minh trạng thái sao chép:

-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)

Các cải tiến khác có thể được thêm vào bằng cách sử dụng các tập lệnh hook được cung cấp.

Cuối cùng, đối với những người yêu thích dòng lệnh, Barman đi kèm với hoàn thành TAB đầy đủ.

Công cụ sao lưu và khôi phục EDB (BART)

EDB BART là một ứng dụng độc quyền mã nguồn đóng được cung cấp bởi EnterpriseDB. Nó kết hợp Sao lưu cấp hệ thống tệp gốc PostgreSQL và PITR thành một công cụ dễ sử dụng cung cấp các tính năng sau:

  • chính sách lưu giữ
  • sao lưu gia tăng
  • bản sao lưu hoàn chỉnh, nóng, vật lý của nhiều máy chủ cơ sở dữ liệu Postgres Plus Advanced Server và PostgreSQL
  • quản lý sao lưu và phục hồi của máy chủ cơ sở dữ liệu trên máy chủ cục bộ hoặc máy chủ từ xa
  • danh mục tập trung cho dữ liệu sao lưu
  • lưu trữ dữ liệu sao lưu ở định dạng nén
  • xác minh tổng kiểm tra

Mặc dù chỉ có thể nhận được phiên bản dùng thử cho phiên bản mới nhất v2.1 thông qua yêu cầu repo yum, nhưng bài viết Data Backup Made Easy và hướng dẫn tài liệu sản phẩm cung cấp một số thông tin cho những ai tò mò muốn tìm hiểu thêm.

Tải xuống Báo cáo chính thức hôm nay Quản lý &Tự động hóa PostgreSQL với ClusterControlTìm hiểu về những điều bạn cần biết để triển khai, giám sát, quản lý và mở rộng PostgreSQLTải xuống Báo cáo chính thức

pgBackRest

pgBackRest triển khai một bản sao lưu toàn bộ hệ thống mà không dựa vào các công cụ phổ biến tar và rsync. Nó hiện được lưu trữ và cung cấp bởi CrunchyData theo giấy phép MIT. Xem phần Nhận biết để biết chi tiết về nguồn gốc của nó.

Nó cung cấp tất cả các tính năng mà người ta mong đợi từ một công cụ trung tâm của PostgreSQL:

  • thông lượng sao lưu / khôi phục cao
  • sao lưu đầy đủ, tăng dần và khác biệt
  • chính sách lưu giữ
  • sao lưu và khôi phục xác minh tính toàn vẹn thông qua tổng kiểm tra tệp và tích hợp với tổng kiểm tra trang PostgreSQL.
  • khả năng tiếp tục sao lưu
  • nén và tổng kiểm tra trực tuyến
  • Hỗ trợ lưu trữ đám mây Amazon S3
  • Mã hóa

..và nhiều hơn nữa. Tham khảo trang dự án để biết thêm chi tiết.

Việc cài đặt yêu cầu hệ thống Linux / Unix 64-bit và nó được nêu trong hướng dẫn sử dụng. Hướng dẫn này cũng giới thiệu cho người đọc các khái niệm chính, rất hữu ích cho những người mới sử dụng PostgreSQL hoặc công nghệ lưu trữ.

Mặc dù hướng dẫn sử dụng các ví dụ lệnh cho Debian / Ubuntu, pgBackRest có sẵn trong kho lưu trữ PGDG yum và trình cài đặt sẽ lấy tất cả các phụ thuộc:

Đang cài đặt:

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

Hãy thiết lập hai cụm, pg96 và pg10, mỗi cụm có một nút:

  • nút điều khiển (“kho lưu trữ” trong hướng dẫn):

    [[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
  • cụm số 1:

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

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

Tiếp theo, chạy sao lưu và hiển thị danh mục sao lưu:

-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 hỗ trợ song song sao lưu và khôi phục - theo ví dụ trong hướng dẫn, chúng tôi đang sao lưu bằng một CPU và sau đó cập nhật cấu hình để sử dụng 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

Kết quả:

-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

Với 2 CPU, bản sao lưu chạy nhanh hơn gần 20%, điều này có thể tạo ra sự khác biệt lớn khi chạy với tập dữ liệu lớn.

Kết luận

Các công cụ sao lưu tập trung vào PostgreSQL cung cấp, như mong đợi, nhiều tùy chọn hơn các công cụ mục đích chung. Hầu hết các công cụ sao lưu PostgreSQL đều cung cấp chức năng cốt lõi giống nhau, nhưng việc triển khai chúng đưa ra những hạn chế mà chỉ có thể được phát hiện bằng cách làm theo cẩn thận tài liệu để lái thử sản phẩm.

Ngoài ra, ClusterControl cung cấp một loạt các tính năng sao lưu và khôi phục mà bạn có thể sử dụng như một phần của thiết lập quản lý cơ sở dữ liệu của mình.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Giao dịch tự trị trong PostgreSQL 9.1

  2. Tại sao PostgreSQL hợp nhất người dùng và nhóm thành vai trò?

  3. Sử dụng PgBouncer Connection Pooler cho PostgreSQL với ClusterControl 1.8.2

  4. Làm cách nào để tùy chỉnh tệp cấu hình của hình ảnh PostgreSQL Docker chính thức?

  5. Cách trả về kết quả truy vấn dưới dạng danh sách được phân tách bằng dấu phẩy trong PostgreSQL