Helpex - Trao đổi & giúp đỡ Đăng nhập

Thử thách sao lưu và khôi phục: Cassandra Compaction

Trong bài viết này, tôi sẽ đề cập đến những thách thức kỹ thuật mà người dùng có thể gặp phải khi sao lưu và khôi phục cơ sở dữ liệu thế hệ tiếp theo (chẳng hạn như Apache Cassandra) hỗ trợ nén dữ liệu. Tôi sẽ bắt đầu với phần giới thiệu về nén, sau đó mô tả cách nén có thể tác động đến việc sao lưu và phục hồi, thực hiện một thử nghiệm để xác thực giả thuyết của chúng tôi và cuối cùng là đánh giá các kỹ thuật trong Apache Cassandra để đối phó với việc nén. Kết luận của chúng tôi là việc nén có thể có tác động đáng kể đến kích thước bản sao lưu của bạn và có thể phủ nhận lợi ích của việc nén hoặc khử trùng lặp.

Nén chặt

Thông thường, việc nén được thực hiện trong cơ sở dữ liệu vì hai lý do chính:

  1. Để giảm việc sử dụng bộ nhớ.

  2. Để cải thiện hiệu suất đọc bằng cách hợp nhất các khóa và có được chỉ mục hợp nhất.

Ví dụ, trong Apache Cassandra, các tệp dữ liệu được hợp nhất theo định kỳ để tạo thành các SSTables được nén chặt. Tuy nhiên, nó có thể có tác động đáng kể đến chiến lược sao lưu và khôi phục. Có hai chiến lược nén chính được sử dụng bởi Cassandra.

Size-tier : Chiến lược nén theo cấp size kết hợp nhiều SSTables có kích thước tương tự.

Nén theo cấp độ : Các tệp dữ liệu được tổ chức theo các cấp độ và mỗi khi tệp ở cấp độ nhất định đạt được kích thước nhất định, nội dung của nó sẽ được lan truyền và hợp nhất với các tệp khác nhau cùng một cấp độ.

Ảnh hưởng đến sao lưu và phục hồi

Một trong những yêu cầu quan trọng đối với bất kỳ giải pháp sao lưu và khôi phục nào là thực hiện sao lưu gia tăng mãi mãi và khôi phục tại thời điểm. Sao lưu gia tăng mãi mãi có nghĩa là chỉ các khối dữ liệu đã thay đổi mới được bảo vệ sau mỗi khoảng thời gian sao lưu, do đó tiết kiệm băng thông mạng, tiêu thụ bộ nhớ và cũng làm giảm mục tiêu điểm khôi phục hoạt động (RPO). Việc triển khai điển hình của sao lưu gia tăng yêu cầu định kỳ chụp nhanh các đĩa và xác định tập dữ liệu đã thay đổi kể từ lần sao lưu cuối cùng.

Kỹ thuật được sử dụng phổ biến nhất để sao lưu gia tăng là ảnh chụp nhanh định kỳ. Tuy nhiên, nếu kỹ thuật này được áp dụng cho cơ sở dữ liệu hiện đại thực hiện nén, thì cùng một bản ghi hoặc một tập hợp các bản ghi (có thể nằm trong các TB theo tỷ lệ) sẽ được sao chép nhiều lần. Tần suất nén và do đó tổng lượng dữ liệu trùng lặp được sao chép, phụ thuộc vào một số yếu tố, như tỷ lệ thay đổi cơ sở dữ liệu, chiến lược nén, cấu hình, băng thông lưu trữ, v.v.

Thí nghiệm nén

Chúng tôi đã có một giả thuyết rằng các tệp dữ liệu Cassandra được nén lại có thể tăng dung lượng lên gấp nhiều lần và khách hàng sẽ gặp phải tình trạng bộ nhớ thứ cấp bị cồng kềnh do có nhiều dữ liệu sao lưu dự phòng. Phải thừa nhận rằng rất nhiều yếu tố khác đóng vai trò quyết định sự gia tăng kích thước như kích thước dữ liệu ban đầu, tỷ lệ thay đổi cơ sở dữ liệu, thời gian tồn tại (TTL), tần suất sao lưu và loại khối lượng công việc (cập nhật, xóa, chèn).

Chúng tôi đã thực hiện một thử nghiệm để xác thực giả thuyết này và đo lượng dữ liệu trùng lặp đã được sao lưu. Các giả định mà chúng tôi đưa ra trong thử nghiệm được liệt kê bên dưới:

  • Dữ liệu ban đầu: ~ 200 GB
  • Tỷ lệ thay đổi: ~ 4,5% mỗi ngày
  • Khoảng thời gian sao lưu: 8 giờ một lần
  • Loại khối lượng công việc: chỉ chèn

Cấp kích thước : Trong năm ngày đầu tiên, chúng tôi đã sao lưu gấp 2 lần lượng dữ liệu được thêm vào hệ thống. Trong hai2 ngày tiếp theo, dữ liệu tổng thể được sao chép đã tăng gấp 4 lần so với dữ liệu ban đầu (điều này có thể là do nén kích thước tương đối lớn hơn).

Nén mức : Trong khoảng thời gian năm ngày, chúng tôi đã sao lưu gấp 12 lần lượng dữ liệu mà chúng tôi đã thêm vào hệ thống. Tính năng nén cấp được kích hoạt khá thường xuyên và tần suất sao lưu tám giờ của chúng tôi cho thấy cùng một dữ liệu được ghi lại nhiều lần trong ngày do nhiều vòng nén.

Thử nghiệm chứng minh rõ ràng rằng việc nén chặt có thể gây ra sự gia tăng gấp nhiều lần các yêu cầu lưu trữ thứ cấp, do đó dẫn đến gánh nặng CAPEX rất lớn cho khách hàng. Trường hợp cụ thể: trong ví dụ trên, bộ lưu trữ thứ cấp cao gấp 12 lần bộ lưu trữ chính để nén cấp.

Kỹ thuật Cassandra để đối phó với nén

Cassandra cung cấp một tùy chọn sao lưu gia tăng. Với tính năng sao lưu gia tăng, Cassandra tạo liên kết cứng đến mọi tệp dữ liệu không nén mới được thêm vào. Người ta có thể sao lưu trực tiếp từ thư mục sao lưu. Tuy nhiên, có một số thiếu sót nghiêm trọng trong cách tiếp cận này:

  • Mức độ chi tiết : Đây không phải là cơ sở cho mỗi bảng; nó là toàn cầu và trên toàn bộ cơ sở dữ liệu. Điều này có nghĩa là ngay cả khi bạn muốn sao lưu các bảng đã chọn (sao lưu chi tiết), việc sao lưu gia tăng sẽ xảy ra cho toàn bộ cơ sở dữ liệu.
  • Không gian : Với thực tế là Cassandra không cung cấp tiện ích để loại bỏ các liên kết cứng (trách nhiệm thuộc về quản trị viên hoặc phần mềm sao lưu), có nguy cơ tràn bộ nhớ rất lớn trên cụm sản xuất (bất kỳ rủi ro đáng kể nào về sản xuất là rất lớn). Một cái gì đó giống như dịch vụ lưu trữ thứ cấp quyết định số phận của dịch vụ lưu trữ chính!
  • Các vấn đề về vận hành : Điều này rất liên quan đến môi trường sản xuất xảy ra nếu ai đó hoặc tập lệnh nào đó vô tình vô hiệu hóa tùy chọn sao lưu gia tăng. Các phiên bản cũ hơn của Cassandra yêu cầu khởi động lại máy chủ để bật tính năng này và tương tự để tắt.

Phần kết luận

Bỏ qua tính năng nén trong chiến lược sao lưu và phục hồi của bạn có thể gây ra yêu cầu lưu trữ thứ cấp tăng gấp nhiều lần và phủ nhận lợi ích của việc nén và khử trùng lặp (thường được cung cấp bởi các nhà cung cấp lưu trữ thứ cấp). Bạn có thể thử các tính năng như sao lưu gia tăng nếu bạn là một chuyên gia và sẵn sàng đầu tư nhiều thời gian vào việc thiết kế và duy trì các hoạt động sao lưu và khôi phục tùy chỉnh của mình.

10 hữu ích 0 bình luận 8.5k xem chia sẻ

Có thể bạn quan tâm

loading