Giới Thiệu
Bài viết gốc được xuất bản vào ngày 6 tháng 2 năm 2020 tại ObjectRocket.com/blog.
Nhiệm vụ quản trị cơ sở dữ liệu bao gồm việc tạo và khôi phục bản sao lưu định kỳ, đây là thành phần quan trọng. ObjectRocket cung cấp bản sao lưu hàng ngày với thời gian giữ lại hai tuần và kích hoạt các bản sao lưu này theo mặc định trên tất cả sản phẩm cơ sở dữ liệu của chúng tôi.
Dịch vụ PostgreSQL® (Postgres) của ObjectRocket thêm một lợi thế: lưu trữ Write Ahead Log (WAL) và khả năng khôi phục đến bất kỳ thời điểm nào trong cửa sổ giữ lại.
Bài viết này hướng dẫn bạn quy trình khôi phục tại thời điểm (PITR) với Postgres trên dịch vụ ObjectRocket.
Bản Sao Lưu Không Phiền Toái
Quy trình sao lưu hoàn toàn tự động, bạn không cần làm gì cả. Chúng tôi bao gồm bản sao lưu hàng ngày trong chi phí của tất cả các instance, và giữ lại bản sao lưu hai tuần mọi lúc. Bạn có thể xem thời gian sao lưu và trạng thái của các bản sao trước đó trong bảng điều khiển hoặc bằng giao diện người dùng (UI), như hình sau:
Nhiều Tùy Chọn Khôi Phục
Khi gặp sự cố và muốn khôi phục bản sao lưu, chúng tôi cung cấp nhiều tùy chọn. Bạn có thể khôi phục từ các điểm sau:
- Cập nhật WAL gần nhất chúng tôi đã lưu trữ
- Một base backup cụ thể
- Một thời điểm cụ thể
Trong tất cả các trường hợp, hệ thống khôi phục dữ liệu của bạn sang một instance Postgres mới. Lúc này, dung lượng lưu trữ của instance phải lớn hơn hoặc bằng dung lượng lưu trữ trên instance gốc. Trong quy trình này, đôi khi được gọi là database fork, bạn khôi phục dữ liệu sang một instance cơ sở dữ liệu mới và riêng biệt. Vì vậy, cả instance cũ và mới đều hoạt động cho đến khi bạn xóa một trong hai.
Hiện tại, khôi phục chỉ được công khai qua API của chúng tôi. Bạn thoải mái sử dụng API này. Nếu không, đội ngũ Hỗ trợ của chúng tôi sẵn sàng giúp bạn thực hiện quy trình. Chúng tôi dự định thêm tính năng khôi phục vào UI trong tương lai rất gần.
Khôi Phục Đến Thời Gian Gần Nhất
Ví dụ này sử dụng một cơ sở dữ liệu đơn giản lưu trữ dấu thời gian và chuỗi mỗi phút để chúng ta có thể thấy điểm khôi phục.
Hình sau hiển thị cơ sở dữ liệu, bạn có thể thấy dấu thời gian cuối cùng là lúc 16:00:58 (UTC).
Để khôi phục đến dữ liệu mới nhất trong cơ sở dữ liệu này, cung cấp instance ID của instance nguồn cho lệnh tạo instance mới, như hình sau:
Sau khi khôi phục instance hoàn tất, kết nối và kiểm tra dấu thời gian cuối cùng.
Như bạn thấy, tất cả dữ liệu đều có đó, và instance Postgres mới đã hoàn toàn bắt kịp instance Postgres nguồn.
Bạn có thể muốn sử dụng kịch bản này để tạo cơ sở dữ liệu test từ dữ liệu hiện tại để thử nghiệm tính năng mới mà không rủi ro ảnh hưởng đến dữ liệu gốc.
Khôi Phục Đến Một Base Backup Cụ Thể
Để khôi phục từ base backup, bắt đầu bằng cách chọn một backup mục tiêu. Khi liệt kê các backup, lưu ý rằng mỗi backup có ID duy nhất để xác định. Trong hình sau, bạn có thể thấy hệ thống thực hiện backup lúc 15:36:15 (UTC):
Để khôi phục chính xác đến backup này, thêm backup ID vào lệnh tạo.
Sau khi instance tải xong, lưu ý rằng backup có dữ liệu và dấu thời gian từ trước thời gian backup 15:36:15.
Khôi Phục Đến Một Thời Điểm Cụ Thể
Để chỉ định thời gian bạn muốn khôi phục, cung cấp source instance ID và thời gian khôi phục, như hình sau:
Trong trường hợp này, tôi muốn khôi phục đến 15:53:00. Sau khi khôi phục hoàn tất, bạn có thể thấy dữ liệu chỉ tồn tại đến thời điểm đó.
Nếu nhìn lại các hình trước, bạn có thể nhận thấy chúng ta có một dấu thời gian khác tại 15:53:00, xảy ra chỉ sau 0.8 giây từ 15:53:00. Vì vậy nó không được bao gồm trong khôi phục này. Bạn có thể đạt độ chi tiết cực cao với PITR để nhắm mục tiêu thời gian và trạng thái trong cơ sở dữ liệu.
Kết Luận
Bạn có thể sử dụng tất cả chức năng khôi phục cơ sở dữ liệu này. Hãy nhớ rằng chúng tôi sẽ thêm المزيد tính năng và khả năng trong tương lai gần. Như luôn, chúng tôi sẽ cập nhật cho bạn, nhưng hãy cho chúng tôi biết nếu bạn có bất kỳ yêu cầu nào.