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

Barman 2.11:barman-cloud-restore và barman-cloud-wal-restore

Nhờ các tiện ích mới barman-cloud-restorebarman-cloud-wal-restore được giới thiệu trong Barman 2.11 , hiện có thể thực hiện khôi phục phiên bản PostgreSQL bằng bản sao lưu đầy đủ đã thực thi trước đó bằng barman-cloud-wal-archivebarman-cloud-backup các lệnh. Hãy cùng nhau khám phá cách thực hiện điều này trong bài viết sau.


Điều đáng chú ý là trong Barman 2.11, tất cả các tiện ích đám mây dành cho Barman hiện nằm trong một gói riêng có tên là barman-cli-cloud .

Yêu cầu

1. barman-cli-cloud gói hàng
2. Một phiên bản PostgreSQL
3. Nhóm AWS S3
4. Máy ảo thứ hai nơi thực hiện khôi phục

Trong bài viết này, chúng tôi sẽ kiểm tra barman-cli-cloud các chức năng trong máy ảo với Debian Buster và PostgreSQL 12. Để thực hiện đúng các hướng dẫn trong bài viết này, chúng tôi cũng giả sử bạn có:

  • đã định cấu hình Postgres để lưu trữ các tệp WAL vào một nhóm S3 hiện có bằng cách sử dụng barman-cloud-wal-archive
  • đã thực hiện một bản sao lưu và gửi nó đến cùng một nhóm S3 thông qua barman-cloud-backup

Bạn có thể dễ dàng đạt được điều này bằng cách làm theo các hướng dẫn có trong các bài viết blog trước đây:

  • Đám mây Barman - Phần 1:Lưu trữ WAL
  • Đám mây Barman - Phần 2:Sao lưu đám mây

Thiết lập máy chủ khôi phục

Do đó, chúng tôi có một nhóm S3 trên AWS có tên là barman-s3-test vốn đã chứa các tệp WAL và bản sao lưu được lưu trữ qua barman-cloud-wal-archivebarman-cloud-backup , bây giờ chúng ta cần định cấu hình đúng một máy chủ sẽ là máy chủ để khôi phục phiên bản PostgreSQL.

1. Cài đặt PostgreSQL 12 từ kho lưu trữ PGDG chính thức

2. Cài đặt kho lưu trữ Công cộng 2ndQuadrant

3. Cài đặt barman-cli-cloud gói:

 [email protected]:~ # apt [email protected]:~ # apt install barman-cli-cloud 

4. Cài đặt awscli gói:

 [email protected]:~ # apt install awscli 

5. Định cấu hình thông tin đăng nhập AWS bằng công cụ awscli với tư cách là người dùng postgres:

 [email protected]:~ $ aws config --profile barman-cloudAWS ID khóa truy cập [Không có]:AKI ***************** Khóa truy cập bí mật AWS [Không có ]:**************************************** Tên vùng mặc định [Không có]:eu -west-1 Định dạng đầu ra mặc định [Không có]:json 

Thực hiện quy trình khôi phục

Bây giờ máy chủ khôi phục đã được định cấu hình chính xác, chúng tôi đã sẵn sàng để bắt đầu quy trình khôi phục.

Barman 2.11 giới thiệu barman-cloud-backup-list lệnh cho phép bạn truy xuất thông tin về các bản sao lưu được thực hiện bằng barman-cloud-backup :

 [email protected]:~ $ barman-cloud-backup-list \ --profile barman-cloud \ s3:// barman-s3-test pg12 Thời gian kết thúc ID dự phòng Bắt đầu Wal20200713T120856 2020-07-13 12:09:05 00000001000000000000000C 

Bây giờ chúng tôi đã sẵn sàng để thực hiện khôi phục bằng cách sử dụng barman-cloud-restore lệnh:

 [email protected]:~ $ barman-cloud-restore \ --profile barman-cloud \ s3:// barman-s3-test \ pg12 20200713T120856 \ / var / lib / postgresql / 12 / main /  

Khi quá trình khôi phục kết thúc thành công, chúng tôi có thể kiểm tra nội dung thư mục PGDATA:

 [email protected]:~ $ ls / var / lib / postgresql / 12 / main / PG_VERSION toàn cầu pg_hba.conf pg_multixact pg_serial pg_stat_tmp pg_twophase postgresql.auto.confbackup_label pg_subident_screen pgbase pgbase_commit_shotphat pg_replslot pg_stat pg_tblspc pg_xact 

Bây giờ, để đảm bảo rằng quá trình khôi phục hoạt động bình thường, chúng ta cần khởi động phiên bản PostgreSQL đã phục hồi và xác minh rằng mọi thứ hoạt động như mong đợi. Quá trình này yêu cầu một số bước bổ sung.

Đầu tiên, vì chúng ta đang sử dụng hệ thống Debian, chúng ta cần sao chép các tệp chứa cấu hình PostgreSQL dưới /etc/postgresql/12/main/ thư mục:

 [email protected]:~ $ cp /var/lib/postgresql/12/main/postgresql.conf /etc/postgresql/12/main/[email protected]:~$ cp / var / lib / postgresql /12/main/pg_hba.conf /etc/postgresql/12/main/[email protected]:~$ cp /var/lib/postgresql/12/main/pg_ident.conf / etc / postgresql / 12 / main / 

Thứ hai, tạo recovery.signal tệp:

 [email protected]:~ $ touch /var/lib/postgresql/12/main/recovery.signal 

Sau đó, tắt archive_command để ngăn phiên bản đã khôi phục ghi trong cùng một nhóm với phiên bản gốc:

 [email protected]:~ $ echo \ "archive_command ='cd.' \">> /etc/postgresql/12/main/postgresql.conf 

Sau đó, bạn cần định cấu hình PostgreSQL để truy xuất tệp WAL của dòng thời gian mới nhất có sẵn từ nhóm S3 bằng cách sử dụng barman-cloud-wal-restore trong restore_command :

 [email protected]:~ $ echo \ "restore_command ='barman-cloud-wal-restore --profile barman-cloud s3:// barman-s3-test pg12% f% p' \">> / etc/postgresql/12/main/[email protected]:~ $ echo \ "recovery_target_timeline ='new' \">> /etc/postgresql/12/main/postgresql.conf 

QUAN TRỌNG :Trước khi tiếp tục, hãy đảm bảo rằng phiên bản PostgreSQL không chạy và thư mục đích (dữ liệu PostgreSQL mặc định) trống.

Cuối cùng, chúng tôi đã sẵn sàng để bắt đầu phiên bản mới được phục hồi:

 [email protected]:~ # systemctl khởi động lại [email protected] 

Tuyệt quá! Như chúng ta có thể thấy từ nhật ký PostgreSQL, các tệp WAL được khôi phục từ nhóm S3 và phiên bản đã được khởi động chính xác:

 [email protected]:~ $ less /var/log/postgresql/postgresql-12-main.log...2020-07-13 12:43:25.093 UTC [9458] LOG:bắt đầu PostgreSQL 12.3 (Debian 12.3-1.pgdg100 + 1) trên x86_64-pc-linux-gnu, được biên dịch bởi gcc (Debian 8.3.0-6) 8.3.0, 64-bit2020-07-13 12:43:25.093 UTC [9458] ĐĂNG NHẬP:nghe trên địa chỉ IPv4 "127.0.0.1", cổng 54322020-07-13 12:43:25.095 UTC [9458] LOG:nghe trên Unix socket "/var/run/postgresql/.s.PGSQL.5432"2020-07- 13 12:43:25.111 UTC [9459] LOG:hệ thống cơ sở dữ liệu bị gián đoạn; lần cuối được biết đến vào lúc 2020-07-13 12:08:56 UTC2020-07-13 12:43:25.508 UTC [9459] LOG:bắt đầu khôi phục kho lưu trữ 2020-07-13 12:43:26.010 UTC [9459] LOG:nhật ký đã khôi phục tệp "00000001000000000000000C" từ kho lưu trữ2020-07-13 12:43:26.052 UTC [9459] LOG:làm lại bắt đầu lúc 0 / C0000282020-07-13 12:43:26.054 UTC [9459] LOG:trạng thái khôi phục nhất quán đạt được ở 0 / C0001382020 -07-13 12:43:26.054 UTC [9458] LOG:hệ thống cơ sở dữ liệu sẵn sàng chấp nhận các kết nối chỉ đọc2020-07-13 12:43:26.469 UTC [9459] LOG:khôi phục tệp nhật ký "00000001000000000000000D" từ kho lưu trữ2020-07- 13 12:43:26.823 UTC [9459] LOG:thực hiện lại lúc 0 / D0001B02020-07-13 12:43:27.242 UTC [9459] LOG:khôi phục tệp nhật ký "00000001000000000000000D" từ kho lưu trữ2020-07-13 12:43:27.592 UTC [9459] LOG:ID dòng thời gian mới đã chọn:22020-07-13 12:43:27.644 UTC [9459] LOG:khôi phục lưu trữ hoàn tất2020-07-13 12:43:27.979 UTC [9458] LOG:hệ thống cơ sở dữ liệu đã sẵn sàng chấp nhận kết nối 

Kết luận

Như thường lệ với bất kỳ bản phát hành mới nào của Barman, chúng tôi khuyên mọi người nên cập nhật hệ thống của họ lên phiên bản mới nhất. Danh sách đầy đủ các thay đổi và sửa lỗi có sẵn tại đây.

Xin lưu ý rằng nếu bạn đang sử dụng barman-cloud-wal-archive hoặc barman-cloud-backup được cài đặt qua gói RPM / Apt và bạn đang nâng cấp hệ thống của mình, bạn phải cài đặt barman-cli-cloud bưu kiện. Điều này là do, với bản phát hành Barman 2.11, tất cả các công cụ liên quan đến đám mây đều là một phần của barman-cli-cloud gói như đã giải thích ở đầu bài viết.

Các phiên bản tiếp theo của Barman có thể cải thiện khả năng sử dụng và khả năng tự động hóa của lệnh khôi phục, ví dụ:bằng cách chuẩn bị một recovery.conf hoặc recovery.signal giống như Barman thực sự làm.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kết nối với cơ sở dữ liệu PostgreSQL trên vùng chứa Docker

  2. Division (/) không đưa ra câu trả lời của tôi trong postgresql

  3. Vị trí cột id trong Postgresql có quan trọng không?

  4. Postgres:CHÈN nếu chưa tồn tại

  5. Xuất Bảng AWS Postgres RDS sang AWS S3