Mục lục

1. Giới thiệu pg_basebackup

pg_basebackup là một công cụ backup đơn giản được cung cấp bởi PostgreSQL. Trong bài này, tôi sẽ hướng dẫn các bạn sử dụng nó.

Đọc thêm  Cài đặt pgBackRest để backup PostgreSQL
Đọc thêm  Cấu hình chức năng archive mode trong PostgreSQL
Đọc thêm  Restore database PostgreSQL ở chế độ No Archive mode

 

2. Đặc điểm của pg_basebackup

  • pg_basebackup có thể chạy trong khi database cluster vẫn đang hoạt động. Nói cách khác, người dùng vẫn sử dụng PostgreSQL bình thường trong thời gian backup bằng pg_basebackup.
  • pg_basebackup tạo ra 1 bản copy cho tất cả các file trong data directory của database cluster.
  • Bản backup được tạo ra bởi pg_basebackup là consistent. Tức là trạng thái của các file trong bản backup là giống nhau, và cùng tại thời điểm thực hiện backup. Các bạn có thể đọc bài viết sau để hiểu rõ hơn khái niệm này.
Đọc thêm  Các thuật ngữ thường dùng trong chiến lược backup database
  • pg_basebackup chỉ có thể backup cho toàn bộ database cluster, chứ không backup cho từng database riêng lẻ được.
  • Bản backup do pg_basebackup không sử dụng cho các kiến trúc khác nhau được. Ví dụ: backup PostgreSQL từ Linux không restore cho Windows được

Tip: Để backup cho từng database riêng lẻ, bạn phải sử dụng pg_dump

Đọc thêm  Export Import dữ liệu bằng pg_dump trong PostgreSQL
  • pg_basebackup có thể được sử dụng để khôi phục dữ liệu theo phương thức Point-in-time Recovery
  • pg_basebackup sử dụng trong việc xây dựng các hệ thống replication của PostgreSQL (Log shipping hay Streaming Replication).

 

3. Bài toán

Tôi có một PostgreSQL Database cluster chạy phiên bản PostgreSQL 13 như sau:

postgres=# \l
                                        List of databases
      Name      |   Owner   | Encoding |   Collate   |    Ctype    |      Access privileges       
----------------+-----------+----------+-------------+-------------+------------------------------
 dwh            | postgres  | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =Tc/postgres                +
                |           |          |             |             | postgres=CTc/postgres       +
                |           |          |             |             | dwh_test=CTc/postgres
 postgres       | postgres  | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =Tc/postgres                +
                |           |          |             |             | postgres=CTc/postgres       +

 template0      | postgres  | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres                 +
                |           |          |             |             | postgres=CTc/postgres
 template1      | postgres  | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres                 +
                |           |          |             |             | postgres=CTc/postgres
(4 rows)

 

Tôi cần backup database cluster này để đề phòng trường hợp có sự cố xảy ra, có thể sử dụng bản backup này để khôi phục lại.

 

4. Các bước tiến hành

1. Backup PostgreSQL không nén

pg_basebackup -D /var/lib/pgsql/13/backup

Với câu lệnh backup như trên, toàn bộ file trong data directory (PGDATA) sẽ được copy vào thư mục backup.

Nếu bạn muốn hiển thị tiến trình backup đang đến đâu, hãy thêm option -P

pg_basebackup -D /var/lib/pgsql/13/backup -P

Chú ý: Rất nhiều bạn gặp lỗi này khi backup:

pg_basebackup: error: directory "..." exists but is not empty
pg_basebackup: removing contents of data directory "/var/lib/pgsql/13/backup"

Mình có làm 1 bài giải thích nguyên nhân và cách khắc phục tại đây:

Đọc thêm  pg_basebackup: error: directory exists but is not empty

2. Backup PostgreSQL và nén bản backup 

pg_basebackup -D /var/lib/pgsql/13/backup -Ft -z

Trong đó: Option -Ft để chỉ ra format lưu file backup là tar, -z để nén bản backup lại

3. Backup cả WAL file sinh ra trong quá trình backup

Để đảm bảo bản backup của các bạn chứa những file WAL được sinh ra trong quá trình backup, bạn có thể thêm option -Xf như sau:

pg_basebackup -D /var/lib/pgsql/13/backup -Ft -z -Xf

Với option này thời gian backup tuy sẽ kéo dài hơn, nhưng bản backup của bạn có thể đảm bảo việc khôi phục khi cần được.

Ở những bài viết sau, tôi sẽ hướng dẫn các bạn các cách để khôi phục lại database từ bản backup pg_basebackup

Đọc thêm  Restore database PostgreSQL ở chế độ No Archive mode
Đọc thêm  Restore Point in Time Recovery database PostgreSQL

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 2: ADMIN 1 + DATA GUARD

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é.

5 1 đánh giá
Article Rating
Theo dõi
Thông báo của
guest
0 Comments
Cũ nhất
Mới nhất Được bỏ phiếu nhiều nhất
Phản hồi nội tuyến
Xem tất cả bình luận
0
Rất thích suy nghĩ của bạn, hãy bình luận.x