Computer >> Máy Tính >  >> Lập trình >> Cơ sở dữ liệu

Sao lưu và phục hồi Apache Cassandra

Sao lưu và phục hồi cơ sở dữ liệu là một trong những hoạt động quan trọng hàng ngày mà quản trị viên cơ sở dữ liệu (DBA) thực hiện. Bản sao lưu cơ sở dữ liệu là một bản sao dữ liệu của bạn có thể được sử dụng để khôi phục dữ liệu trong trường hợp mất dữ liệu.

Blog này hướng dẫn bạn cách sao lưu cơ sở dữ liệu Apache® Cassandra® và khôi phục chúng sau khi bị lỗi.

Giới thiệu

Mặc dù Apache Cassandra được phân cấp, nó có thể chịu đựng các lỗi đơn và nhiều nút mà không làm mất bất kỳ dữ liệu kinh doanh nào, miễn là một trong các nút trong cụm có chứa dữ liệu. Tuy nhiên, theo cách tốt nhất, bạn nên định cấu hình một bản sao lưu cho cơ sở dữ liệu.

Trong trường hợp xảy ra bất kỳ lỗi nào, chẳng hạn như xây dựng lại toàn bộ cụm, hỏng dữ liệu, xóa dữ liệu ngẫu nhiên, v.v., bạn có thể khôi phục dữ liệu từ bản sao lưu và tiếp tục hoạt động kinh doanh với tác động tối thiểu hoặc không.

Ngày càng có nhiều công ty sử dụng cơ sở dữ liệu NoSQL, chẳng hạn như Cassandra, quản lý thành công khối lượng lớn dữ liệu kinh doanh, phổ biến hơn được gọi là Dữ liệu lớn. Cassandra, được sử dụng rộng rãi bởi nhiều tổ chức lớn, đảm bảo khả năng mở rộng, khả năng chịu lỗi và tính nhất quán để hỗ trợ Dữ liệu lớn.

Sao lưu và khôi phục cơ sở dữ liệu Cassandra

Bạn có thể sử dụng các tiện ích sau để chụp nhanh cơ sở dữ liệu Cassandra và khôi phục nó khi được yêu cầu:

  • nodetool (Để chụp nhanh)
  • sstableloader (Để khôi phục bản sao lưu ảnh chụp nhanh)

Hình ảnh sau minh họa việc di chuyển từ một cụm đám mây sang một Cassandracluster bằng cách sử dụng sstableloader :

Sao lưu và phục hồi Apache Cassandra

Nguồn hình ảnh :https://dzone.com/articles/using-casandras-sstable-bulk

Backup

Ví dụ sau sử dụng nodetool để chụp nhanh cơ sở dữ liệu Cassandra keyspace (người dùng) với một bảng được gọi là nhân viên .

Nguồn chi tiết cụm Cassandra:

$ nodetool -u cassandra -pw ******** -h localhost status

Datacenter: us-central1
=======================
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
--  Address     Load       Tokens       Owns (effective)  Host ID                               Rack
UN  10.128.0.2  121.52 KiB  256         63.3%             5957997f-7471-4c21-bead-37a6604812e2  f
UN  10.128.0.3  92.22 KiB  256          68.0%             87c2a663-a965-4675-b5ed-c4a46d77c796  f
UN  10.128.0.4  225.3 KiB  256          68.8%             8e12557f-be00-4387-bff3-ef51f431b9a0  f

Sử dụng lệnh sau để sao lưu keyspace :

$ nodetool -h localhost -u cassandra -pw ****** snapshot users -t "users-201904201800"

Requested creating snapshot(s) for [users] with snapshot name [users-201904201800] and options {skipFlush=false}
Snapshot directory: users-201904201800

Điều này tạo ra một ảnh chụp nhanh sao lưu như được hiển thị trong ví dụ sau:

/bitnami/cassandra/data/data/users/employee-c1319df0636211e9a0e3570eb7f8fd5f/snapshots/users-201904201800
$ ls -ltr
total 44
-rw-r--r-- 2 cassandra cassandra   16 Apr 20 12:05 md-1-big-Filter.db
-rw-r--r-- 2 cassandra cassandra   56 Apr 20 12:05 md-1-big-Summary.db
-rw-r--r-- 2 cassandra cassandra   32 Apr 20 12:05 md-1-big-Index.db
-rw-r--r-- 2 cassandra cassandra  134 Apr 20 12:05 md-1-big-Data.db
-rw-r--r-- 2 cassandra cassandra   10 Apr 20 12:05 md-1-big-Digest.crc32
-rw-r--r-- 2 cassandra cassandra   43 Apr 20 12:05 md-1-big-CompressionInfo.db
-rw-r--r-- 2 cassandra cassandra 4683 Apr 20 12:05 md-1-big-Statistics.db
-rw-r--r-- 2 cassandra cassandra   92 Apr 20 12:05 md-1-big-TOC.txt
-rw-r--r-- 1 cassandra cassandra   31 Apr 20 12:05 manifest.json
-rw-r--r-- 1 cassandra cassandra  865 Apr 20 12:05 schema.cql

$ date
Sat Apr 20 12:08:21 UTC 2019

Bây giờ, hãy lưu trữ / snapshot sao lưu các tệp thư mục và di chuyển tệp tarfile sang / bitnami / Cassandra / data / data / backup thư mục.

$ tar -cvf users-201904201800.tar *.*
manifest.json
md-1-big-CompressionInfo.db
md-1-big-Data.db
md-1-big-Digest.crc32
md-1-big-Filter.db
md-1-big-Index.db
md-1-big-Statistics.db
md-1-big-Summary.db
md-1-big-TOC.txt
schema.cql

$ ls -ltr
total 64
-rw-r--r-- 2 cassandra cassandra    16 Apr 20 12:05 md-1-big-Filter.db
-rw-r--r-- 2 cassandra cassandra    56 Apr 20 12:05 md-1-big-Summary.db
-rw-r--r-- 2 cassandra cassandra    32 Apr 20 12:05 md-1-big-Index.db
-rw-r--r-- 2 cassandra cassandra   134 Apr 20 12:05 md-1-big-Data.db
-rw-r--r-- 2 cassandra cassandra    10 Apr 20 12:05 md-1-big-Digest.crc32
-rw-r--r-- 2 cassandra cassandra    43 Apr 20 12:05 md-1-big-CompressionInfo.db
-rw-r--r-- 2 cassandra cassandra  4683 Apr 20 12:05 md-1-big-Statistics.db
-rw-r--r-- 2 cassandra cassandra    92 Apr 20 12:05 md-1-big-TOC.txt
-rw-r--r-- 1 cassandra cassandra    31 Apr 20 12:05 manifest.json
-rw-r--r-- 1 cassandra cassandra   865 Apr 20 12:05 schema.cql
-rw-r--r-- 1 cassandra cassandra 20480 Apr 20 12:22 users-201904201800.tar

cp *.tar /bitnami/cassandra/data/data/backup.
/bitnami/cassandra/data/data/backup

$ ls -ltr
-rw-r--r--  1 cassandra cassandra 20480 Apr 20 12:23 users-201904201800.tar

Sau khi sao chép tệp tar dự phòng vào vị trí không phải mặc định, hãy thả nhân viên bảng.

LƯU Ý :Cassandra phân phối dữ liệu dựa trên các khóa phân vùng đã xác định và các yếu tố sao chép trên toàn bộ cụm, vì vậy bạn phải chạy lệnh sao lưu này từ tất cả các nút của mình. Ví dụ này sử dụng tập lệnh shell Linux® trong crontab, tập lệnh này sẽ sao lưu tất cả các nút cùng một lúc.

$ cqlsh -u cassandra -p *******

Connected to Test_Cassandra at 127.0.0.1:9042.
[cqlsh 5.0.1 | Cassandra 3.11.4 | CQL spec 3.4.4 | Native protocol v4]
Use HELP for help.

cassandra@cqlsh> use users;
cassandra@cqlsh:users> select * from employee;

 emp_id | employee_address | employee_name
--------+------------------+---------------
   8796 |        Singapore |           Joy
   5647 |           London |          Mike
   3452 |           Canada |         Nancy
   6453 |            China |          John

(4 rows)

cassandra@cqlsh:users> drop table employee;
cassandra@cqlsh:users> select * from employee;
InvalidRequest: Error from server: code=2200 [Invalid query] message="unconfigured table employee"

Khôi phục

Để khôi phục nhân viên bảng từ keyspace (người dùng) sao lưu ảnh chụp nhanh, bạn phải sử dụng sstableloader tính thiết thực. sstableloader tiện ích không chỉ cung cấp tập hợp các chuỗi cho mỗi nút mà còn chuyển phần dữ liệu thích hợp đến mọi nút dựa trên chiến lược sao chép cụm fora được xác định. Lưu ý rằng không nhất thiết phải có một bảng trống để khôi phục dữ liệu.

Sử dụng các bước sau để khôi phục tệp tar thành sao lưu / người dùng :

$ pwd
/bitnami/cassandra/data/data/backup/users
$ ls -ltr
total 20
-rw-r--r-- 1 cassandra cassandra 20480 Apr 20 12:23 users-201904201800.tar
$ tar -xvf *.tar
manifest.json
md-1-big-CompressionInfo.db
md-1-big-Data.db
md-1-big-Digest.crc32
md-1-big-Filter.db
md-1-big-Index.db
md-1-big-Statistics.db
md-1-big-Summary.db
md-1-big-TOC.txt
schema.cql

Tạo một liên kết mềm cho thư mục người dùng với tên của bảng mà bạn sẽ khôi phục.

$ ln -s /bitnami/cassandra/data/data/backup/users employee
$ ls -ltr
total 64
-rw-r--r-- 1 cassandra cassandra   865 Apr 20 12:05 schema.cql
-rw-r--r-- 1 cassandra cassandra    92 Apr 20 12:05 md-1-big-TOC.txt
-rw-r--r-- 1 cassandra cassandra    56 Apr 20 12:05 md-1-big-Summary.db
-rw-r--r-- 1 cassandra cassandra  4683 Apr 20 12:05 md-1-big-Statistics.db
-rw-r--r-- 1 cassandra cassandra    32 Apr 20 12:05 md-1-big-Index.db
-rw-r--r-- 1 cassandra cassandra    16 Apr 20 12:05 md-1-big-Filter.db
-rw-r--r-- 1 cassandra cassandra    10 Apr 20 12:05 md-1-big-Digest.crc32
-rw-r--r-- 1 cassandra cassandra   134 Apr 20 12:05 md-1-big-Data.db
-rw-r--r-- 1 cassandra cassandra    43 Apr 20 12:05 md-1-big-CompressionInfo.db
-rw-r--r-- 1 cassandra cassandra    31 Apr 20 12:05 manifest.json
-rw-r--r-- 1 cassandra cassandra 20480 Apr 20 12:23 users-201904201800.tar
lrwxrwxrwx 1 cassandra cassandra    41 Apr 20 15:56 employee -> /bitnami/cassandra/data/data/backup/users

Tạo cấu trúc bảng bằng cách sử dụng .cql tệp được tạo bằng sao lưu ảnh chụp.

Khi bạn thực hiện sao lưu cho keyspace , nó tạo một tệp có tên schema.cql chứa ngôn ngữ định nghĩa dữ liệu (DDL) của các đối tượng nằm trong keyspace .

Sử dụng schema.cql để tạo một đối tượng nhân viên, đối tượng này do nhầm lẫn.

Tùy chọn bảng
$ cqlsh -u cassandra -p ******** -f schema.cql

Warnings:
dclocal_read_repair_chance table option has been deprecated and will be removed in version 4.0

dclocal_read_repair_chance table option has been deprecated and will be removed in version 4.0
$ cqlsh -u cassandra -p ******* -f schema.cql

Khôi phục dữ liệu từ ảnh chụp nhanh bằng cách sử dụng sstableloader , đọc mọi sstables từ bản sao lưu và truyền dữ liệu vào cụm. Nó truyền phần dữ liệu có liên quan đến mỗi nút dựa trên chiến lược sao chép được xác định trong cụm.

Syntax: sstableloader -u <username> -pw passwrod -d <hostname> <employee table softlink name with location>

Sử dụng lệnh sau để khôi phục dữ liệu:

$  sstableloader -u cassandra -pw  ******** -d cassandra-cluster-1-node-0 /bitnami/cassandra/data/data/backup/users/employee
Established connection to initial hosts
Opening sstables and calculating sections to stream
Streaming relevant part of /bitnami/cassandra/data/data/backup/users/md-1-big-Data.db  to [/10.128.0.2, /10.128.0.3, /10.128.0.4]
progress: [/10.128.0.2]0:0/1 0  % [/10.128.0.3]0:0/1 0  % [/10.128.0.4]0:1/1 100% total: 33% 0.032KiB/s (avg: 0.032KiB/s)
progress: [/10.128.0.2]0:0/1 0  % [/10.128.0.3]0:0/1 0  % [/10.128.0.4]0:1/1 100% total: 33% 0.000KiB/s (avg: 0.031KiB/s)
progress: [/10.128.0.2]0:0/1 0  % [/10.128.0.3]0:1/1 100% [/10.128.0.4]0:1/1 100% total: 66% 0.113KiB/s (avg: 0.050KiB/s)
progress: [/10.128.0.2]0:1/1 100% [/10.128.0.3]0:1/1 100% [/10.128.0.4]0:1/1 100% total: 100% 85.129KiB/s (avg: 0.074KiB/s)
progress: [/10.128.0.2]0:1/1 100% [/10.128.0.3]0:1/1 100% [/10.128.0.4]0:1/1 100% total: 100% 0.000KiB/s (avg: 0.073KiB/s)
progress: [/10.128.0.2]0:1/1 100% [/10.128.0.3]0:1/1 100% [/10.128.0.4]0:1/1 100% total: 100% 0.000KiB/s (avg: 0.073KiB/s)

Summary statistics:
   Connections per host    : 1
   Total files transferred : 3
   Total bytes transferred : 0.393KiB
   Total duration          : 5346 ms
   Average transfer rate   : 0.073KiB/s
   Peak transfer rate      : 0.074KiB/s

Lặp lại các bước này cho mọi nút để truy xuất dữ liệu từ các chuỗi của chúng.

Sửa chữa dữ liệu bằng cách sử dụng nodetool repair , so sánh tất cả các bản sao của dữ liệu được lưu trữ trên nút mà lệnh chạy và cập nhật từng bản sao lên phiên bản mới nhất.

$ nodetool repair -u Cassandra -pw ********

[2019-04-21 07:59:14,701] Starting repair command #1 (5b123ad0-640b-11e9-a0e3-570eb7f8fd5f), repairing keyspace users with repair options (parallelism: parallel, primary range: false, incremental: true, job threads: 1, ColumnFamilies: [], dataCenters: [], hosts: [], # of ranges: 768, pull repair: false)
[2019-04-21 07:59:16,450] Repair completed successfully
[2019-04-21 07:59:16,451] Repair command #1 finished in 1 second
[2019-04-21 07:59:16,460] Replication factor is 1. No repair is needed for keyspace 'system_auth'
[2019-04-21 07:59:16,474] Starting repair command #2 (5c22e780-640b-11e9-a0e3-570eb7f8fd5f), repairing keyspace system_traces with repair options (parallelism: parallel, primary range: false, incremental: true, job threads: 1, ColumnFamilies: [], dataCenters: [], hosts: [], # of ranges: 513, pull repair: false)
finished (progress: 1%)
[2019-04-21 07:59:17,653] Repair completed successfully
[2019-04-21 07:59:17,653] Repair command #2 finished in 1 second

Xác thực dữ liệu vào nhân viên bảng mà chúng tôi đã bỏ. Lệnh trước đó đã lưu trữ dữ liệu từ bản sao lưu bạn đã lấy trước đó. Bây giờ bạn cần xác thực dữ liệu để xem liệu nó có được khôi phục đúng cách hay không.

$ cqlsh -u cassandra -p ********

Connected to Test_Cassandra at 127.0.0.1:9042.
[cqlsh 5.0.1 | Cassandra 3.11.4 | CQL spec 3.4.4 | Native protocol v4]
Use HELP for help.

cassandra@cqlsh> use users;

cassandra@cqlsh:users> select * from employee;

 emp_id | employee_address | employee_name
--------+------------------+---------------
   8796 |        Singapore |           Joy
   5647 |           London |          Mike
   3452 |           Canada |         Nancy
   6453 |            China |          John

(4 rows)

Kết luận

Trong bài đăng này, bạn đã học cách sao lưu và khôi phục bảng thành cơ sở dữ liệu Cassandradat. Tuy nhiên, nếu bạn cần khôi phục một không gian phím / cơ sở dữ liệu đầy đủ, hãy sử dụng các bước bắt buộc trước mà không có phần khôi phục bảng. Bạn phải tạo lại keyspace và tải dữ liệu bằng cách sử dụng sstableloader .

Số lượng nút trong cụm cơ sở dữ liệu nguồn và đích không quan trọng với sstableloader vì nó đọc từng sstables từ bản sao lưu. Sau đó, nó truyền dữ liệu vào cụm trong khi đặt dữ liệu theo chiến lược sao chép đã xác định trong cụm.

Sử dụng tab Phản hồi để đưa ra bất kỳ nhận xét nào hoặc đặt câu hỏi.

Tối ưu hóa môi trường của bạn với quản trị, quản lý và cấu hình chuyên gia

Dịch vụ ứng dụng của Rackspace (RAS) các chuyên gia cung cấp các dịch vụ chuyên nghiệp và được quản lý sau trên nhiều danh mục ứng dụng:

  • nền tảng Thương mại điện tử và Trải nghiệm Kỹ thuật số
  • Hoạch định Nguồn lực Doanh nghiệp (ERP)
  • Kinh doanh Thông minh
  • Quản lý quan hệ khách hàng của Salesforce (CRM)
  • Cơ sở dữ liệu
  • Lưu trữ Email và Năng suất

Chúng tôi cung cấp:

  • Chuyên môn không thiên vị :Chúng tôi đơn giản hóa và hướng dẫn hành trình hiện đại hóa của bạn, tập trung vào các khả năng mang lại giá trị tức thì.
  • Trải nghiệm cuồng tín ™:Chúng tôi kết hợp một Quy trình trước. Công nghệ thứ hai. Tiếp cận với hỗ trợ kỹ thuật chuyên dụng để cung cấp các giải pháp toàn diện.
  • Danh mục đầu tư vô song :Chúng tôi áp dụng nhiều kinh nghiệm về đám mây để giúp bạn lựa chọn và triển khai công nghệ phù hợp trên đám mây phù hợp.
  • Phân phối nhanh :Chúng tôi đáp ứng bạn ở nơi bạn đang ở trong hành trình và thành công vượt bậc với bạn.

Trò chuyện ngay bây giờ để bắt đầu.