Nếu bạn nào đang làm Database Administrator cho Oracle database, giờ chuyển sang PostgreSQL sẽ thấy hơi hụt hẫng ở khâu backup dữ liệu.

Công cụ backup RMAN của Oracle phải gọi là quá xịn xò, gần như mình không có nhu cầu phải dùng đến công cụ của một hãng thứ 3 khác. Trong khi đó, PostgreSQL cũng cung cấp sẵn cho chúng ta một công cụ backup là pg_basebackup, nhưng nó đơn sơ quá!

Trong bài viết này, mình sẽ giới thiệu cho các bạn cách cài đặt công cụ backup dành cho  PostgreSQL, mà mình thấy ưng ý nhất với các tiêu chí:

   Trải nghiệm gần như như RMAN của Oracle

   Có đầy đủ các kiểu backup (full, incremental)

   Đáp ứng tốt về mặt hiệu năng.

Đó là pgBackRest.


   Download và cài đặt pgBackRest

Đầu tiên bạn cần phải dùng yum cài đặt pgbackrest đã

# yum install -y pgbackrest

Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: centos-hcm.viettelidc.com.vn
 * epel: download.nus.edu.sg
 * extras: centos-hcm.viettelidc.com.vn
 * updates: centos-hcm.viettelidc.com.vn
Resolving Dependencies
--> Running transaction check
---> Package pgbackrest.x86_64 0:2.33-1.rhel7 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

==================================================================================================================================================================================================================
 Package                                            Arch                                           Version                                              Repository                                           Size
==================================================================================================================================================================================================================
Installing:
 pgbackrest                                         x86_64                                         2.33-1.rhel7                                         pgdg-common                                         322 k

Transaction Summary
==================================================================================================================================================================================================================
Install  1 Package

Total download size: 322 k
Installed size: 861 k
Downloading packages:
pgbackrest-2.33-1.rhel7.x86_64.rpm                                                                                                                                                         | 322 kB  00:00:02     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : pgbackrest-2.33-1.rhel7.x86_64                                                                                                                                                                 1/1 
  Verifying  : pgbackrest-2.33-1.rhel7.x86_64                                                                                                                                                                 1/1 

Installed:
  pgbackrest.x86_64 0:2.33-1.rhel7                                                                                                                                                                                

Complete!

Kiểm tra lại xem đã cài đặt thành công chưa:

su - postgres
$ pgbackrest info
No stanzas exist in the repository.

   Cấu hình pgBackRest

Đầu tiên chúng ta chỉnh sửa file cấu hình /etc/pgbackrest.conf

Backup lại file cấu hình cũ

cp /etc/pgbackrest.conf /etc/pgbackrest.conf.bk

Sửa lại nội dung file /etc/pgbackrest.conf như sau:

vi /etc/pgbackrest.conf
[global]
repo1-path=/var/lib/pgsql/13/backups
log-level-console=info
log-level-file=debug
start-fast=y

[test_stanza]
pg1-path=/var/lib/pgsql/13/data
repo1-retention-full=1

Để tôi giải thích một chút:

   Trong pgBackRest, nó có 1 khái niệm gọi là stanza. Đó là nơi chúng ta sẽ đặt bản backup vào (Khái niệm này giống với Fast recovery area trong Oracle). Có thể định nghĩa được nhiều stanza.

   Các tham số nằm sau [global] là các tham số áp dụng cho toàn bộ stanza.

   repo1-path: Là địa chỉ đặt các stanza.

   log-level-console và log-level_file: Là các tham số quy định mức độ hiển thị thông tin khi chạy pgBackRest

   start-fast=y : Trước khi chạy backup, tiến trình checkpoint sẽ được gọi, để backup được nhanh hơn.

   Mỗi stanza sẽ có những tham số tùy chọn riêng (trong ví dụ bên trên tên của stanza tôi đặt là test_stanza, bạn có thể đặt bất cứ tên gì khác tùy thích)

   pg1-path: Là data directory của PostgreSQL.

   repo1-retention-full: Là số các bản backup full gần nhất được giữ lại. Những bản cũ hơn sẽ bị xóa đi.

Ok, tiếp theo chúng ta sẽ cấu hình các tham số trong Database.


   Cấu hình tham số trong Database

Đầu tiên, bạn cần đưa database về chế độ Archive mode trước đã. Bạn có thể tham khảo cách làm tại bài viết sau:

Đọc thêm  Cấu hình chức năng archive mode trong PostgreSQL

Bạn sửa các tham số như sau:

alter system set archive_command='pgbackrest --stanza=test_stanza archive-push %p';
alter system set max_wal_senders = 3;
alter system set wal_level = replica;

Sau đó reload lại tham số của PostgreSQL

pg_ctl reload
Đọc thêm  Cấu hình tham số trong PostgreSQL

   Tạo mới một Stanza

su - postgres

$ pgbackrest --stanza=test_stanza stanza-create

2021-05-22 17:07:25.651 P00   INFO: stanza-create command begin 2.33: --exec-id=20450-c9fbd327 --log-level-console=info --log-level-file=debug --pg1-path=/var/lib/pgsql/13/data --repo1-path=/var/lib/pgsql/13/backups --stanza=test_stanza
2021-05-22 17:07:26.263 P00   INFO: stanza-create for stanza 'test_stanza' on repo1
2021-05-22 17:07:26.276 P00   INFO: stanza-create command end: completed successfully (626ms)

Start stanza:

$ pgbackrest --stanza=test_stanza start

2021-05-22 17:08:52.489 P00   INFO: start command begin 2.33: --exec-id=20745-de40d07f --log-level-console=info --log-level-file=debug --stanza=test_stanza
WARN: stop file does not exist for stanza test_stanza
2021-05-22 17:08:52.489 P00   INFO: start command end: completed successfully (2ms)

Kiểm tra lại:

$ pgbackrest --stanza=test_stanza check
2021-05-22 17:09:23.382 P00   INFO: check command begin 2.33: --exec-id=20781-131764aa --log-level-console=info --log-level-file=debug --pg1-path=/var/lib/pgsql/13/data --repo1-path=/var/lib/pgsql/13/backups --stanza=test_stanza
2021-05-22 17:09:24.008 P00   INFO: check repo1 configuration (primary)
2021-05-22 17:09:24.213 P00   INFO: check repo1 archive for WAL (primary)
2021-05-22 17:09:24.616 P00   INFO: WAL segment 00000001000004E300000048 successfully archived to '/var/lib/pgsql/13/backups/archive/test_stanza/13-1/00000001000004E3/00000001000004E300000048-01fa5bb31bbcd02e320e889fafaed2d7870f2276.gz' on repo1
2021-05-22 17:09:24.617 P00   INFO: check command end: completed successfully (1237ms)

   Backup database bằng pgBackRest

Bây giờ tôi sẽ thử backup database bằng pgBackRest nhé.

Đầu tiên là Backup full:

$ pgbackrest --stanza=test_stanza --log-level-console=info --type=full backup

Kết quả:

 

Tiếp theo là Backup incremental:

$ pgbackrest --stanza=test_stanza --log-level-console=info --type=diff backup

Kết quả:

 

Kiểm tra lại các bản backup:

pgbackrest info

Như vậy là Ok rồi đó

Nguồn: https://dangxuanduy.com/

Xin cho tôi được biết, bạn cảm thấy bài viết này như thế nào? Ý kiến của bạn sẽ giúp tôi nâng cao chất lượng bài viết của mình.

    Hãy chia sẻ bài viết này nếu bạn thấy có ích nhé
    0 0 votes
    Article Rating
    Subscribe
    Notify of
    guest
    0 Comments
    Inline Feedbacks
    View all comments