在DataStax 6.8中进行备份和恢复数据的方法
简而言之
环境的准备
CREATE KEYSPACE dse_qiita_backup_restore WITH replication = {'class': 'NetworkTopologyStrategy', 'dc1': 2, 'dc2': 1};
CREATE TABLE user_by_email (
email TEXT,
password TEXT,
user_id UUID,
PRIMARY KEY ((email))
);
INSERT INTO dse_qiita_backup_restore.user_by_email (email, password, user_id) VALUES
('aaa@gmail.com', 'aaa', 00000000-0000-0000-0000-000123456789);
INSERT INTO dse_qiita_backup_restore.user_by_email (email, password, user_id) VALUES
('bbb@gmail.com', 'bbb', 00000000-0000-0000-0000-000123456790);
INSERT INTO dse_qiita_backup_restore.user_by_email (email, password, user_id) VALUES
('ccc@gmail.com', 'ccc', 00000000-0000-0000-0000-000123456791);
SELECT * FROM dse_qiita_backup_restore.user_by_email ALLOW FILTERING;
email | password | user_id
---------------+----------+--------------------------------------
aaa@gmail.com | aaa | 00000000-0000-0000-0000-000123456789
ccc@gmail.com | ccc | 00000000-0000-0000-0000-000123456791
bbb@gmail.com | bbb | 00000000-0000-0000-0000-000123456790
备份数据
nodetool snapshot dse_qiita_backup_restore
Requested creating snapshot(s) for [dse_qiita_backup_restore] with snapshot name [1662787611693] and options {skipFlush=false}
Snapshot directory: 1662787611693
恢复
node1
cqlsh > TRUNCATE dse_qiita_backup_restore.user_by_email
sudo sh -c 'cp /var/lib/cassandra/data/dse_qiita_backup_restore/user_by_email-b01545d130c811edba4925d1628f6955/snapshots/1662787611693/bb-* /var/lib/cassandra/data/dse_qiita_backup_restore/user_by_email-b01545d130c811edba4925d1628f6955'
sudo ls -al /var/lib/cassandra/data/dse_qiita_backup_restore/user_by_email-b01545d130c811edba4925d1628f6955/
total 48
drwxr-xr-x 4 cassandra cassandra 4096 9月 10 14:36 .
drwxr-xr-x 4 cassandra cassandra 4096 9月 10 14:23 ..
drwxr-xr-x 2 cassandra cassandra 4096 9月 10 14:23 backups
-rw-r--r-- 1 root root 47 9月 10 14:36 bb-1-bti-CompressionInfo.db
-rw-r--r-- 1 root root 106 9月 10 14:36 bb-1-bti-Data.db
-rw-r--r-- 1 root root 10 9月 10 14:36 bb-1-bti-Digest.crc32
-rw-r--r-- 1 root root 16 9月 10 14:36 bb-1-bti-Filter.db
-rw-r--r-- 1 root root 73 9月 10 14:36 bb-1-bti-Partitions.db
-rw-r--r-- 1 root root 0 9月 10 14:36 bb-1-bti-Rows.db
-rw-r--r-- 1 root root 4733 9月 10 14:36 bb-1-bti-Statistics.db
-rw-r--r-- 1 root root 94 9月 10 14:36 bb-1-bti-TOC.txt
drwxr-xr-x 3 cassandra cassandra 4096 9月 10 14:33 snapshots
sudo sstableloader -d 192.168.56.124 /var/lib/cassandra/data/dse_qiita_backup_restore/user_by_email-b01545d130c811edba4925d1628f6955
SELECT * FROM dse_qiita_backup_restore.user_by_email ALLOW FILTERING;
email | password | user_id
---------------+----------+--------------------------------------
aaa@gmail.com | aaa | 00000000-0000-0000-0000-000123456789
ccc@gmail.com | ccc | 00000000-0000-0000-0000-000123456791
bbb@gmail.com | bbb | 00000000-0000-0000-0000-000123456790
原本必须在所有节点上进行备份和恢复操作,但考虑到它只是冗余的操作,所以我们将取消它。