NHỮNG HOẠT ĐỘNG TRONG CASSANDRA

Một phần của tài liệu tìm hiểu hệ quản trị cơ sở dữ liệu phân tán cassandra (Trang 33 - 37)

5.1. Tùy chỉnh trong Cassandra

Tinh chỉnh hiệu quả không chỉ phụ thuộc loại tác vụ mà cluster của bạn thực hiện thường xuyên nhất mà còn phụ thuộc vào hình dạng của dữ liệu. Ví dụ memtable của Cassandra có chi phí cho cấu trúc index lên top của dữ liệu thực sự chúng lưu trữ.

Nếu kích thước của những giá trị được lưu trữ trong những column thì nhỏ so với số cột và số dòng của chúng thì chi phí này có thể đáng kể. Vì vậy tinh chỉnh tối ưu cho loại dữ liệu này là hoàn toàn khác biệt so với tinh chỉnh tối ưu cho số nhỏ những cột với nhiều dữ liệu

5.1.1. Tùy chỉnh cache

Cách cache hoạt động

Nếu cả cache dòng và khóa đều được cấu hình, row cache sẽ trả về kết quả bất cứ khi nào có thể. Trong trường hợp row cache ko tìm thấy, key cache vẫn còn hit.

Giả sử nó nắm một lượng lớn key hơn là row cache

Nếu một tác vụ đọc hit row cache toàn bộ row được request được trả về mà hok cần phải seek đĩa. Nếu row không nằm trong row cache nhưng nằm trong key cache, key cache sẽ tìm chính xác vùng của row trên đĩa trong SSTable. Nếu row ko nằm trong key cache, tác vụ đọc sẽ populate key cache sau khi truy cập row trên đĩa vì vậy. Mỗi hit trên key cache sẽ tiết kiệm một lần seek đĩa trên SSTable

Cấu hình key cache cho Column Family

Key cache nắm dữ vị trí của row key trong bộ nhớ. Tuning ở level này có thể tối ưu tác vụ đọc khi có một lượng lớn row được truy cấp thường xuyên

Cache của 200000 row key được enable mặc định. Bạn có thể setting bang keys_cached lên column family

[default@demo] UPDATE COLUMN FAMILY users WITH keys_cached=205000;

Cấu hình row cache cho Column Family

Row cache nắm dữ hoàn toàn nội dung của row trong bộ nhớ. Trong trường hợp row có kích thước lớn hoặc thay đổi thường xuyên thì row cache ko hiệu quả.

Vì lý do này, row cache bị disable mặc định

Row cache vẫn còn disable cho column family với nhiều row hoặc tỉ lệ đọc ghi cao. Trong ngữ cảnh này, row cache có thể tiêu tốn một lượng lớn bộ nhớ. Chú ý rằng khi một row cache thực hiện hiệu quả,nó dữ cho process compaction java gabarge rất chủ động

Row cache tốt cho workload cái mà truy cập một tập nhỏ trong tổng số các row trong những row đó hầu hết các cột được trả về.

Để enable row cache trong Cassandra set rows_cached với số row mong muốn.

5.2. Backup và Restore dữ liệu

Cassandra back up dữ liệu bằng cách tạo một snapshot của tất cả các file dữ liệu trên đĩa (các SSTable). Lưu trữ trong thư mục data. Snapshot được tạo theo keyspace và trong khi hệ thống còn online. Mặc dầu vậy, hệ thống phải ở dạng offline để phục hồi sử dụng một snapshot

Sử dụng công cụ ssh như pssh bạn có thể tạo snapshot cho toàn bộ cluster . Cái này hỗ trợ việc backup eventual consistency. Mặc dầu không có node nào được đảm bảo là nhất quán với những node bản sao của nó tại thời điểm 1 snapshot được tạo ra, nhưng phục hồi snapshot có thể giúp nhất quán dữ liệu sử dụng cơ chế nhất quán được xây dựng sẵn trong Cassandra

Sau khi snapshot đã được tạo, bạn có thể enable tăng backup trên mỗi node (mặc định là disable) để backup dữ liệu cái mà đã thay đổi khi snapshot cuối cùng được tạo. Mỗi lần SSTable được flush, một hard link được copy vào thư mục con /backup của thư mục data

5.2.1. Tạo Snapshot

Snapshot được tạo ra bằng cách sử dụng công cụ nodetool. Nếu bạn muốn tạo một snapshot cho tất cả dữ liệu trong cluster bạn chạy lệnh nodetool snapshot với tùy

chọn ssh như là pssh. Snapshot đầu tiên sẽ đẩy tất cả dữ liệu trên bộ nhớ xuoogns đĩa, sau đó tạo một hard link của những file SSTable cho mỗi keyspace.

Bạn phải có đủ không gian trống trên đĩa để chừa chỗ cho việc tạo snapshot.

Một snapshot cần rất ít không gian trống. Mặc dầu vậy theo thời gian, nó sẽ lớn dần lên. Sauk hi backup hoàn thành bạn có thể lưu trữ file back up ở một nơi khác

Để tạo một snapshot của một node

$ nodetool -h localhost -p 7199 snapshot 12022011

Mỗi snapshot folder chứa đựng một vài file db lưu trữ dữ liệu tại thời điểm backup

5.2.2. Xóa file Snapshot

Khi tạo một snapshot, những phiên bản trước đó sẽ tự động bị xóa. Để duy trì thư mục snapshot, snapshot cũ những cái ko cần dùng nên được xóa đi

Lệnh nodetool clearsnapshot remove tất cả snapshot hiện hữu từ thư mục snapshot của mỗi keyspace. Bạn có xem đây như mà một phần trong quá trình packup dữ liệu (xóa snapshot cũ trước khi tạo cái mới)

Xóa tất cả các snapshot cho một node

$ nodetool -h localhost -p 7199 clearsnapshot Nếu bạn muốn xóa cho cả cluster, cũng dùng parallel ssh tool 5.2.3. Cấu hình thông số Incremental Backups

Khi incremental backup được enable, cái này cho phép bạn lưu backup offsite mà không cần transfer hoàn toàn snapshot

This allows you to store backups offsite without transferring entire snapshots.

Also, incremental backups combine with snapshots to provide a dependable, up-to- date backup mechanism.

To enable incremental backups, edit the cassandra.yaml configuration file on each node in the cluster and change the value of incremental_backups to true.

As with snapshots, Cassandra does not automatically clear incremental backup files.

DataStax recommends setting up a process to clear incremental backup hard-links each time a new snapshot is created.

5.2.4. Restore từ một Snapshot

Để restore một keyspace tử một snapshot, bạn sẽ cần tất cả các file của keyspace, và nếu bạn sử dụng incremental backup, một số file incremental backup được tạo được tạo sau khi snapshot được tạo

Nếu restore 1 node đơn, đầu tiên bạn phải shutdown node, Nếu restore cho toàn bộ cluster, bạn phải shutdown tất cả các node, restore dữ liệu snapshot sau đó start tất cả các node

To restore a node from a snapshot and incremental backups:

o Tắt tất cả các node được restore.

o Xóa tất cà các file tại /var/lib/cassandra/commitlog.

o Xóa tất cả các file có đuôi *.db trong thư mục data/<keyspace_name>, nhưng không xóa /snapshot và /backup.

o Tìm đến snapshot gần đây nhất trong

/data/<keyspace_name>/snapshots/<snapshot_name> và copy nội dung của nó vào /data/<keyspace_name>.

o Nếu sử dụng incremental thì copy tất cả nội dung của data/<keyspace_name>/backups vào data/<keyspace_name>.

o Khởi động lại node.

Một phần của tài liệu tìm hiểu hệ quản trị cơ sở dữ liệu phân tán cassandra (Trang 33 - 37)

Tải bản đầy đủ (DOC)

(44 trang)
w