Point-in-Time Recovery (PITR) trong PostgreSQL là một phương pháp phục hồi cơ sở dữ liệu cho phép bạn khôi phục trạng thái của cơ sở dữ liệu đến một thời điểm cụ thể trong quá khứ. Điều này rất hữu ích trong các tình huống như:
PITR sử dụng hai thành phần chính:
Đây là bản sao toàn bộ dữ liệu của cơ sở dữ liệu tại một thời điểm nhất định. Bạn có thể thực hiện bản sao lưu bằng cách sử dụng lệnh pg_basebackup
hoặc thông qua các phương pháp sao lưu khác.
pg_basebackup -D /path/to/backup -Ft -z -P
PostgreSQL sử dụng WAL để ghi lại mọi thay đổi đối với cơ sở dữ liệu. WAL giúp đảm bảo tính toàn vẹn dữ liệu và cho phép phục hồi đến một thời điểm cụ thể.
wal_level = replica archive_mode = on archive_command = 'cp %p /path/to/archive/%f'
Để thực hiện PITR, bạn cần thực hiện các bước sau:
Đảm bảo rằng bạn đã bật ghi nhận WAL trong tệp cấu hình postgresql.conf
.
Thực hiện một bản sao lưu cơ sở dữ liệu bằng lệnh pg_basebackup
.
pg_basebackup -D /path/to/backup -Ft -z -P
Đảm bảo rằng bạn lưu trữ các tệp WAL mới được tạo ra sau khi thực hiện bản sao lưu.
Khi cần phục hồi, bạn sẽ cần khôi phục bản sao lưu vào thư mục dữ liệu của PostgreSQL và thêm tệp recovery.conf
với nội dung chỉ định thời điểm phục hồi.
restore_command = 'cp /path/to/archive/%f %p' recovery_target_time = 'YYYY-MM-DD HH:MM:SS' # Thời điểm cụ thể bạn muốn phục hồi
Khởi động lại PostgreSQL, và hệ thống sẽ tự động phục hồi đến thời điểm đã chỉ định.
Point-in-Time Recovery (PITR) là một công cụ mạnh mẽ trong PostgreSQL cho phép bạn phục hồi dữ liệu đến một thời điểm cụ thể. Bằng cách kết hợp giữa bản sao lưu và ghi nhận WAL, PITR cung cấp một giải pháp linh hoạt cho việc khôi phục dữ liệu trong các tình huống khẩn cấp. Tuy nhiên, nó đòi hỏi sự cấu hình chính xác và quản lý tài nguyên hiệu quả để đảm bảo hoạt động tốt.