PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Làm cách nào để biết bản sao lưu PostgreSQL của tôi có tốt không?

Sao lưu là điều bắt buộc trong tất cả Kế hoạch khôi phục sau thảm họa. Nó có thể không phải lúc nào cũng đủ để đảm bảo Mục tiêu Điểm Khôi phục được chấp nhận, nhưng là một cách tiếp cận đầu tiên tốt. Vấn đề là điều gì sẽ xảy ra nếu trong trường hợp không thành công, bạn cần sử dụng bản sao lưu này và nó không thể sử dụng được vì một lý do nào đó? Có thể bạn không muốn rơi vào tình huống đó, vì vậy, trong blog này, chúng ta sẽ xem cách xác nhận xem bản sao lưu của bạn có tốt để sử dụng hay không.

Các loại Sao lưu PostgreSQL

Chúng ta hãy bắt đầu nói về các loại sao lưu khác nhau. Có nhiều loại khác nhau, nhưng nhìn chung, chúng ta có thể tách nó thành hai loại đơn giản:

  • Logic :Bản sao lưu được lưu trữ ở định dạng con người có thể đọc được như SQL.
  • Thể chất :Bản sao lưu chứa dữ liệu nhị phân.

Tại sao chúng ta lại đề cập đến vấn đề này? Bởi vì chúng tôi sẽ thấy rằng có một số kiểm tra mà chúng tôi có thể thực hiện đối với một loại chứ không phải đối với loại khác.

Kiểm tra Nhật ký sao lưu

Cách đầu tiên để xác nhận xem mọi thứ có ổn không là kiểm tra nhật ký sao lưu.

Lệnh đơn giản nhất để chạy bản sao lưu PostgreSQL có thể là:

$ pg_dumpall > /path/to/dump.sql

Nhưng, làm thế nào tôi có thể biết liệu có lỗi khi lệnh đang chạy hay không? Bạn chỉ có thể thêm để gửi kết quả đến một số tệp nhật ký cụ thể:

$ pg_dumpall > /path/to/dump.sql > /var/log/postgres/pg_dump.log

Vì vậy, bạn có thể thêm dòng này vào máy chủ cron để chạy hàng ngày:

30 0 * * * pg_dumpall > /path/to/dump.sql > /var/log/postgres/pg_dump.log

Và bạn nên theo dõi tệp nhật ký để tìm lỗi, chẳng hạn như thêm nó vào một số công cụ giám sát như Nagios.

Kiểm tra nhật ký không đủ để xác nhận rằng bản sao lưu sẽ hoạt động, vì ví dụ:nếu tệp sao lưu bị hỏng vì lý do nào đó, bạn có thể sẽ không thấy điều đó trong tệp nhật ký.

Kiểm tra Nội dung Sao lưu

Nếu bạn đang sử dụng bản sao lưu lôgic, bạn có thể xác minh nội dung của tệp sao lưu để xác nhận rằng bạn có tất cả cơ sở dữ liệu ở đó.

Bạn có thể liệt kê các cơ sở dữ liệu PostgreSQL hiện tại của mình bằng cách sử dụng, ví dụ:lệnh này:

$ psql -l | awk '{ print $1 }'| awk 'FNR > 3' |grep '^[a-zA-Z0-9]' |grep -v 'template0'

postgres

template1

world

Và kiểm tra xem bạn có cơ sở dữ liệu nào trong tệp sao lưu:

$ grep '^[\]connect' /path/to/dump.sql |awk '{print $2}'

template1

postgres

world

Vấn đề với việc kiểm tra này là bạn không kiểm tra kích thước hoặc dữ liệu, vì vậy có thể bạn bị mất dữ liệu nếu có một số lỗi khi thực hiện sao lưu.

Khôi phục để Kiểm tra bản sao lưu theo cách thủ công

Cách an toàn nhất để xác nhận xem bản sao lưu có hoạt động hay không là khôi phục nó và truy cập cơ sở dữ liệu.

Sau khi sao lưu xong, bạn có thể khôi phục thủ công trong máy chủ khác bằng cách sao chép tệp kết xuất và chạy, ví dụ:

$ psql -f /path/to/dump.sql postgres

Sau đó, bạn có thể truy cập nó và kiểm tra cơ sở dữ liệu:

$ psql

postgres=# \l

                                  List of databases

   Name    | Owner   | Encoding |   Collate | Ctype    | Access privileges

-----------+----------+----------+-------------+-------------+-----------------------

 postgres  | postgres | UTF8     | en_US.utf-8 | en_US.utf-8 |

 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

 world     | postgres | UTF8     | en_US.utf-8 | en_US.utf-8 |

(4 rows)

Tất nhiên, vấn đề với phương pháp này là bạn nên chạy nó theo cách thủ công hoặc tìm cách tự động hóa việc này, đây có thể là một công việc tốn nhiều thời gian.

Xác minh Sao lưu ClusterControl Tự động

Bây giờ, hãy xem cách ClusterControl có thể tự động hóa việc xác minh các bản sao lưu PostgreSQL và giúp tránh bất kỳ sự bất ngờ hoặc tác vụ thủ công nào.

Trong ClusterControl, chọn cụm của bạn và chuyển đến phần "Sao lưu", sau đó chọn "Tạo bản sao lưu".

Tính năng sao lưu tự động xác minh khả dụng cho các bản sao lưu đã lên lịch. Vì vậy, hãy chọn tùy chọn "Lên lịch sao lưu".

Khi lên lịch sao lưu, ngoài việc chọn các tùy chọn phổ biến như phương pháp hoặc bộ nhớ, bạn cũng cần chỉ định lịch trình / tần suất.

Trong bước tiếp theo, bạn có thể nén và mã hóa bản sao lưu của mình và chỉ định thời gian lưu giữ. Tại đây, bạn cũng có tính năng “Xác minh bản sao lưu”.

Để sử dụng tính năng này, bạn cần một máy chủ (hoặc máy ảo) chuyên dụng không phải là một phần của cụm.

ClusterControl sẽ cài đặt phần mềm và nó sẽ khôi phục bản sao lưu trong máy chủ này . Sau khi khôi phục, bạn có thể thấy biểu tượng xác minh trong phần ClusterControl Backup.

Kết luận

Như chúng tôi đã đề cập, sao lưu là bắt buộc trong bất kỳ môi trường nào, nhưng sao lưu không phải là bản sao lưu nếu bạn không thể sử dụng. Vì vậy, bạn nên đảm bảo rằng bản sao lưu của bạn hữu ích trong trường hợp một ngày nào đó bạn cần. Trong blog này, chúng tôi đã chỉ ra các cách khác nhau để kiểm tra bản sao lưu của bạn để tránh các sự cố khi bạn muốn khôi phục nó.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. psql:không thể kết nối với máy chủ:Kết nối bị từ chối Lỗi khi kết nối với cơ sở dữ liệu từ xa

  2. 2 cách trả về hàng có chứa ký tự không phải chữ và số trong PostgreSQL

  3. Kết nối với máy chủ postgresql từ xa trên amazon ec2

  4. Rails và PostgreSQL:Postgres vai trò không tồn tại

  5. Cách nâng cấp PostgreSQL 11 lên PostgreSQL 12 với Zero Downtime