Nhờ các tiện ích mới barman-cloud-restore
và barman-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-archive
và barman-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-archive
và barman-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_xactBâ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.signalSau đó, 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.confSau đó, 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
trongrestore_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.confQUAN 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ốiKế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ặcbarman-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 đặtbarman-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ủabarman-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ặcrecovery.signal
giống như Barman thực sự làm.