Snapshot có thể được hiểu đơn giản là một hình thức sao lưu dữ liệu tạm thời sử dụng cho nhiều mục đích, Vậy cụ thể snapshot cơ sở dữ liệu được định nghĩa như thế nào, hoạt động và sử dụng ra sao. Cùng Bizfly Cloud tìm hiểu trong bài phân tích chi tiết sau đây.
Snapshot của một cơ sở dữ liệu là gì?
Một snapshot cơ sở dữ liệu là một ảnh chụp nhanh dạng tĩnh, chỉ đọc (read-only) của một cơ sở dữ liệu SQL Server (cơ sở dữ liệu nguồn).
Trong đó,cho biết SQL Server viết đầy đủ là Structure Query Language server là một công cụ quản lý dữ liệu được sử dụng rộng rãi trong nhiều lĩnh vực khác nhau.
Snapshot cơ sở dữ liệu là một giao thức đông thời và nhất quán với cơ sở dữ liệu nguồn vào thời điểm tạo snapshot đó. Có nghĩa là ảnh chụp sanpshot tại thời điểm đó ghi lại một cách chính xác và đồng thời trạng thái của cơ sở dữ liệu nguồn được chụp. Một snapshot cơ sở dữ liệu luôn nằm trên cùng một cá thể máy chủ với cơ sở dữ liệu nguồn của nó. Khi cơ sở dữ liệu nguồn được cập nhật, snapshot cũng được cập nhật theo. Do đó, snapshot cơ sở dữ liệu càng dài thì khả năng sử dụng hết dung lượng đĩa sẵn có của nó càng nhiều.
Nhiều snapshot có thể tồn tại trên cùng một cơ sở dữ liệu nguồn cho trước. Mỗi snapshot cơ sở dữ liệu vẫn tồn tại cho đến khi bị chủ sở hữu cơ sở dữ liệu đó loại bỏ hoàn toàn.
Tổng quan về tính năng – Hoạt động của snapshot
Các snapshot cơ sở dữ liệu hoạt động ở cấp độ data-page. Trước khi một trang của cơ sở dữ liệu nguồn được sửa đổi lần đầu tiên, trang gốc sẽ được copy từ cơ sở dữ liệu nguồn thành ảnh chụp nhanh snapshot. Snapshot lưu lại trang gốc, duy trì các bản ghi dữ liệu vẫn đang tồn tại khi snapshot được tạo. Quá trình tương tự được lặp lại với mỗi trang trong các lần sửa đổi đầu tiên. Đối với người dùng, snapshot cơ sở dữ liệu thường không bao giờ thay đổi, vì các thao tác đọc trên snapshot cơ sở dữ liệu luôn truy cập vào các trang dữ liệu gốc, bất kể chúng ở đâu.
Để lưu trữ các trang gốc đã sao chép, snapshot sử dụng một hoặc nhiều file rải rác. Ban đầu, file rải rác là các tệp hoàn toàn trống, không chứa dữ liệu người dùng và chưa được cấp không gian cho dữ liệu người dùng trên đĩa. Khi ngày càng có nhiều trang được cập nhật trong cơ sở dữ liệu, kích thước của tệp sẽ tăng lên.
Hình dưới đây minh họa các kết quả của hai mẫu cập nhật tương phản với kích thước của snapshot. Trạng thái A phản ánh môi trường trong đó chỉ có 30% các trang gốc được cập nhật trong thời gian tồn tại snapshot. Trạng thái B phản ánh một môi trường trong đó 80% các trang gốc được cập nhật trong thời gian tồn tại snapshot.
Lợi ích của snapshot cơ sở dữ liệu
– Ảnh chụp nhanh snapshot có thể được sử dụng cho mục đích báo cáo
Khách hàng có thể truy vấn các snapshot cơ sở dữ liệu, qua đó, viết báo cáo dựa trên dữ liệu tại thời điểm tạo ảnh chụp nhanh
– Duy trì lịch sử dữ liệu để tạo báo cáo
Snapshot hỗ trợ việc mở rộng quyền truy cập dữ liệu cho người dùng trong các thời điểm cụ thể.
Ví dụ, bạn có thể tạo một snapshot cơ sở dữ liệu vào cuối một khoảng thời gian nhất định nào đó (như là cuối một quý tài chính chẳng hạn) để sau này báo cáo.
Như vậy, bạn có thể chạy các báo cáo cuối kỳ trên các snapshot. Nếu không gian đĩa cho phép, bạn cũng có thể duy trì các snapshot cuối kỳ bao lâu tùy ý, cho phép truy vấn ngược lại kết quả trong các khoảng thời gian này,
Lấy ví dụ: làm khảo sát hiệu suất hoạt động của tổ chức chẳng hạn.
Đây là yếu tố cần thiết và cực kỳ quan trọng đối với người dùng máy ảo.
– Sử dụng nhân đôi cơ sở dữ liệu – database miror mà bạn đang duy trì cho các mục tiêu đã có để giảm tải báo cáo
Sử dụng snapshot cơ sở dữ liệu cùng với nhân đôi cơ sở dữ liệu cho phép tạo các dữ liệu có thể truy cập được trên mirror server (máy chủ giống nhau) để báo cáo. Ngoài ra, các truy vấn đang chạy trên cơ sở dữ liệu nhân đôi có thể giải phóng tài nguyên cho phần chính.
– Bảo vệ dữ liệu khỏi các lỗi quản trị.
– Hoàn nguyên
Trong trường hợp xảy ra lỗi người dùng trên cơ sở dữ liệu nguồn, bạn có thể hoàn nguyên (trở về trạng thái ban đầu) cơ sở dữ liệu nguồn về trạng thái khi một snapshot của cơ sở dữ liệu đã cho được tạo. Mất dữ liệu trong khi cập nhật đã được kiểm soát và hạn chế hoàn toàn kể từ khi snapshot ra đời.
Ví dụ: trước khi thực hiện các cập nhật quy mô, chẳng hạn như cập nhật hàng loạt hoặc thay đổi lược đồ, hãy tạo các snapshot cơ sở dữ liệu để bảo vệ dữ liệu. Khi mắc lỗi, có thể sử dụng snapshot để khôi phục bằng cách đưa cơ sở dữ liệu về trạng thái ban đầu (hoàn nguyên) với snapshot. Hoàn nguyên khi sử dụng cho mục đích này thường nhanh hơn so với khôi phục từ bản sao lưu, tuy nhiên, bạn không thể cuộn về trước hay sau.
– Quan trọng:
Hoàn nguyên không hoạt động khi cơ sở dữ liệu đang ngoại tuyến hoặc bị hỏng. Bởi vậy, việc sao lưu thường xuyên và kiểm tra các phương án khôi phục là cần thiết khi muốn bảo vệ cơ sở dữ liệu.
– Lưu ý:
Các snapshot cơ sở dữ liệu phụ thuộc vào cơ sở dữ liệu nguồn. Do đó, việc sử dụng các snapshot cơ sở dữ liệu để hoàn nguyên cơ sở dữ liệu không thể thay thế cho các phương án sao lưu và khôi phục được. Thực hiện tất cả các sao lưu theo kế hoạch vẫn là cần thiết. Nếu buộc phải khôi phục cơ sở dữ liệu nguồn tại chính thời điểm một snapshot cơ sở dữ liệu được tạo, hãy thực hiện phương án sao lưu cho phép bạn thực hiện điều đó.
– Bảo vệ dữ liệu trước lỗi người dùng
Bằng cách tạo snapshot cơ sở dữ liệu thường xuyên, bạn có thể giảm thiểu tác động các lỗi do người dùng chính, chẳng hạn như lỗi xóa bảng.
Để bảo vệ ở mức độ cao hơn, có thể tạo một loạt snapshot cơ sở dữ liệu kéo dài đủ thời gian để nhận dạng và phản ứng với hầu hết các lỗi người dùng. Ví dụ: bạn có thể duy trì từ 6 đến 12 snapshot trong khoảng thời gian 24 giờ, tùy thuộc vào tài nguyên đĩa của bạn. Sau đó, cứ mỗi khi có một snapshot mới được tạo, thì snapshot cũ nhất có thể bị xóa.
Để khôi phục dữ liệu do lỗi người dùng, có thể thực hiện hoàn nguyên cơ sở dữ liệu về snapshot ngay trước khi xảy ra lỗi. Hoàn nguyên khi sử dụng cho mục đích này thường nhanh hơn so với khôi phục từ bản sao lưu, tuy nhiên, bạn không thể cuộn về trước hay sau.
Ngoài ra, có thể tự dựng lại bảng đã bị xóa hoặc dữ liệu bị mất khác từ thông tin trong snapshot. Ví dụ: bạn có thể sao chép hàng loạt dữ liệu từ snapshot lên cơ sở dữ liệu và tích hợp dữ liệu trở lại cơ sở dữ liệu theo cách thủ công.
Lý do cho việc sử dụng snapshot cơ sở dữ liệu sẽ xác định số lượng bao nhiêu snapshot đồng thời bạn cần trên cơ sở dữ liệu, tần suất cần tạo snapshot mới và thời gian lưu giữ chúng là bao lâu.
– Quản lý các testing database (dữ liệu thử nghiệm)
Trong môi trường thử nghiệm, sẽ hữu ích khi liên tục chạy một giao thức thử nghiệm cho cơ sở dữ liệu để chứa các dữ liệu giống hệt nhau khi bắt đầu mỗi vòng thử nghiệm. Trước khi chạy vòng đầu tiên, nhà phát triển ứng dụng hoặc người kiểm tra có thể tạo một snapshot trên cơ sở dữ liệu thử nghiệm. Sau mỗi lần chạy thử nghiệm, cơ sở dữ liệu có thể được nhanh chóng trở về trạng thái trước đó của nó bằng cách hoàn nguyên snapshot cơ sở dữ liệu.
Các loại Snapshot
1. Copy-on-write Snapshot
Copy-on-write Snapshot chỉ lưu trữ siêu dữ liệu về vị trí của dữ liệu gốc, nhưng không sao chép dữ liệu thực tại lần tạo ban đầu. Điều này giúp cho việc tạo snapshot gần như ngay lập tức, ít ảnh hưởng đến hệ thống snapshot.
Ưu điểm chính của Copy-on-write là hiệu quả về storage space vì bộ nhớ snapshot dự trữ chỉ cần đủ lớn để ghi lại dữ liệu đã thay đổi. Nhược điểm của Copy-on-write là nó sẽ làm giảm hiệu suất trên ổ đĩa gốc. Đó là bởi vì yêu cầu ghi vào ổ đĩa gốc phải đợi hoàn tất cho đến khi dữ liệu gốc được “sao chép” vào snapshot.
2. Redirect-on-write Snapshot
Với redirect-on-write, khi các khối mới được tạo, nó chỉ yêu cầu một lần ghi vào snapshot. Điều đó có nghĩa là bất kỳ tham chiếu nào đến trạng thái hiện tại của dữ liệu đều là bản gốc và snapshot. Trái ngược với copy-on-write, redirect-on-write snapshot không làm giảm hiệu suất vì mỗi block được thay đổi tạo ra một write I/O duy nhất.
Nhược điểm của redirect-on-write snapshot là phụ thuộc vào block gốc. Các thay đổi khác sẽ tạo ra các block mới. Khi có nhiều snapshot được tạo ra, độ phức tạp sẽ tăng lên theo cấp số nhân. điều này làm phức tạp thêm việc truy cập dữ liệu gốc, dữ liệu snapshot… Các vấn đề nghiêm trọng có thể xảy ra khi tập dữ liệu gốc bị phân mảnh.
3. Continuous Data Protection (CDP)
Continuous Data Protection (CDP) tạo snapshot thường xuyên của dữ liệu thô được kích hoạt bằng cách thiết lập các policy (chính sách). Mỗi khi thực hiện thay đổi, snapshot của bản sao gốc sẽ được cập nhật. Ưu điểm của CDP là giảm RPO (recovery point objective) xuống gần như bằng 0. Tuy nhiên hạn chế của nó là việc tạo và cập nhật snapshot thường xuyên tiêu tốn hiệu suất và băng thông (nếu lưu trữ trên mạng).
4. Split Mirror Snapshot
Split Mirror Snapshot tạo bản sao đầy đủ của storage volume ban đầu thay vì chỉ snapshot các block đã thay đổi. Với Split Mirror Snapshot, bạn có thể tạo snapshot của toàn bộ file system, LUN (logical unit numbers) hoặc object storage volume.
Ưu điểm của Split Mirror Snapshot là việc khôi phục, nhân bản và lưu trữ dữ liệu dễ dàng hơn. Ngay cả khi bản chính/bản gốc bị mất, toàn bộ tệp vẫn còn. Tuy nhiên, vì snapshot utility sẽ snapshot toàn bộ ổ đĩa mỗi lần, nên tốc độ chậm hơn và yêu cầu tăng gấp đôi storage volume.
5. Copy-on-write with background copy snapshot
Copy-on-write with background copy sẽ lấy dữ liệu snapshot tức thời COW và sử dụng background process để sao chép dữ liệu đó từ vị trí ban đầu sang vị trí lưu trữ snapshot. Quá trình này tạo ra một bản sao (clone) hoặc nhân bản (mirror) dữ liệu gốc.
Copy-on-write with background copy snapshot tận dụng những ưu điểm tốt nhất và giảm thiểu những nhược điểm của COW. Nó được coi là sự lai tạo giữa COW và cloning.
6. Incremental Snapshot
Incremental Snapshot theo dõi các thay đổi được thực hiện đối với source data và snapshot data khi snapshot được tạo. Khi một Incremental Snapshot được tạo, dữ liệu Snapshot ban đầu được cập nhật hoặc làm mới. Có một timestamp trên dữ liệu snapshot ban đầu và trên mỗi Incremental Snapshot tiếp theo. Timestamp có khả năng rollback bất kỳ point-in-time snapshot nào.
Nhược điểm của Incremental Snapshot là chúng phụ thuộc vào công nghệ được sử dụng trong Snapshot đầu tiên (copy-on-write, redirect-on-write, split-mirror hoặc copy-on-write with background copy).
So sánh điểm khác nhau giữa backup và snapshot
Dưới đây là bảng so sánh sự khác biệt giữa Snapshot và Backup:
Theo Bizfly Cloud chia sẻ
>>> Có thể bạn quan tâm: Tìm hiểu về Snapshot trong cơ sở dữ liệu Oracle