Mục lục
1. Giới thiệu pgBackRest
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.
2. 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.
3. 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.
4. 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:
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
5. 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)
6. 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/
Hiện tại, tôi có tổ chức đều đặn các khóa học về quản trị Oracle Database, tôi sẽ để thông tin ở đây, để bạn nào quan tâm về lịch học cũng như chương trình học có thể theo dõi nhé.
KHOÁ DÀNH CHO NGƯỜI MỚI
KHÓA HỌC: QUẢN TRỊ ORACLE DATABASE THẬT LÀ ĐƠN GIẢN (ADMIN 1)
CÁC KHOÁ NÂNG CAO:
KHÓA HỌC ORACLE NÂNG CAO: QUẢN TRỊ KIẾN TRÚC MULTITENANT 12c
KHÓA HỌC ORACLE NÂNG CAO: QUẢN TRỊ HỆ THỐNG DATA GUARD
CÁC KHOÁ COMBO:
COMBO 1: ADMIN 1 + MULTITENANT 12c
COMBO 3: ADMIN 1 + MULTITENANT 12c + DATA GUARD
LỊCH HỌC:
Mời bạn xem tại đây: LỊCH HỌC CÁC LỚP ORACLE
ĐĂNG KÝ:
https://forms.gle/MtCAoRQFenP886y79
Hãy tham gia group “Kho tài liệu kiến thức database” để cùng học hỏi và chia sẻ nhé.