Bài viết gốc đăng tải ngày 6 tháng 2 năm 2020 tại ObjectRocket.com/blog
Sao lưu định kỳ và khả năng khôi phục chúng là một mảnh ghép quan trọng trong quản trị hệ thống cơ sở dữ liệu. Tại ObjectRocket, một công ty Rackspace Technology, chúng tôi cung cấp cho bạn sao lưu hàng ngày với giữ 2 tuần theo mặc định trên tất cả sản phẩm cơ sở dữ liệu của chúng tôi.
Sản phẩm PostgreSQL® của chúng tôi thêm một bonus bao gồm archiving 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ữ dữ liệu. Chúng tôi thường gọi đây là Point-in-Time Recovery (PITR), và bài viết này hướng dẫn bạn cách nó hoạt động trên dịch vụ của chúng tôi.
Sao lưu không lo lắng
Một thành phần chính là quy trình sao lưu hoàn toàn tự động. Chi phí của tất cả instance bao gồm sao lưu hàng ngày, và chúng tôi giữ hai tuần sao lưu mọi lúc. Bạn có thể xem thời gian sao lưu và trạng thái của chúng trong bảng điều khiển hoặc bằng cách sử dụng giao diện người dùng (UI).
Nhiều tùy chọn khôi phục
Chúng tôi cung cấp một vài tùy chọn để khôi phục sao lưu:
- Khôi phục đến cập nhật WAL được lưu gần nhất.
- Khôi phục đến một base backup cụ thể.
- Khôi phục đến một thời điểm cụ thể.
Trong tất cả các trường hợp, chúng tôi khôi phục dữ liệu của bạn sang một instance PostgreSQL mới. Lúc này, lưu trữ instance phải lớn hơn hoặc bằng lưu trữ trên instance gốc. Chúng tôi gọi đây là database fork. Lý tưởng nhất, bạn nên khôi phục dữ liệu của mình sang một instance database mới và riêng biệt, để cả instance cũ và mới đều hoạt động cho đến khi bạn xóa một trong hai.
Lưu ý: Khôi phục hiện chỉ đượcExpose qua API của chúng tôi. Nếu bạn thoải mái với API, tuyệt vời. Nếu không, đội ngũ hỗ trợ của chúng tôi có thể giúp bạn qua quy trình. Chúng tôi có kế hoạch thêm khôi phục vào UI sớm.
Khôi phục đến thời gian mới nhất
Hãy phân tích một database đơn giản chỉ lưu timestamp và một sequence mỗi phút, cho phép chúng ta thấy vị trí backup. Nhìn nhanh vào database của chúng ta, chúng ta thấy timestamp cuối cùng là lúc 16:00:58 (UTC).
Nếu chúng ta muốn khôi phục đến dữ liệu mới nhất trong database này, chúng ta có thể làm điều đó bằng cách cung cấp instance id của instance nguồn cho lệnh tạo instance mới.
Sau khi chúng ta đã khôi phục instance, chúng ta có thể kết nối và kiểm tra timestamp cuối cùng.
Như bạn thấy, tất cả dữ liệu đều có, và chúng ta có một instance Postgres mới, được cập nhật hoàn toàn đến instance Postgres nguồn. Bạn có thể muốn sử dụng kịch bản này để tạo database 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 backup cụ thể
Tùy chọn thứ hai là khôi phục từ base backup. Khi liệt kê backup, mỗi cái có id riêng mà chúng ta có thể dùng để khôi phục:
Trong ví dụ backup trước, bạn thấy nó được thực hiện lúc 15:36:15 (UTC). Để khôi phục đến chính backup này, chỉ cần thêm backup id vào lệnh tạo.
Sau khi instance tải xong, chúng ta thấy backup có dữ liệu và timestamp từ trước thời gian backup 15:36:15.
Khôi phục đến một thời điểm cụ thể
Phương pháp cuối cùng chỉ cần chỉ định thời điểm bạn muốn khôi phục. Thực hiện bằng cách cung cấp source instance ID và thời gian khôi phục:
Ở đây, chúng ta muốn khôi phục đến 15:53:00. Sau khi khôi phục xong, bạn thấy dữ liệu chỉ tồn tại đến thời điểm đó.
Nếu bạn nhìn lại các hình trước, bạn có thể thấy chúng ta có một timestamp khác ở 15:53:00, nhưng timestamp đó xảy ra chỉ sau hơn .8 giây sau 15:53:00, nên instance sẽ không bao gồm nó. Bạn có thể đạt độ chi tiết cực cao với Point in Time recovery để nhắm đến một thời điểm và trạng thái trong database.
Tiếp theo là gì?
Tất cả chức năng backup và restore đó đã có sẵn cho bạn sử dụng hôm nay. Tuy nhiên, chúng tôi liên tục thêm nhiều tính năng và khả năng hơn. Hãy cho chúng tôi biết nếu bạn có bất kỳ yêu cầu nào.
Tìm hiểu thêm về Dịch Vụ Dữ Liệu của Rackspace.
Sử dụng tab Phản Hồi để đưa ra bình luận hoặc đặt câu hỏi. Bạn cũng có thể nhấp vào Sales Chat để trò chuyện ngay và bắt đầu cuộc hội thoại.
Nhấp vào đây để xem Điều Khoản Dịch Vụ Đám Mây Rackspace.