ডেটাবেস ব্যাকআপ এবং পুনরুদ্ধার হল প্রতিদিনের গুরুত্বপূর্ণ কার্যকলাপগুলির মধ্যে একটি যা ডেটাবেস অ্যাডমিনিস্ট্রেটর (DBA) সম্পাদন করে। একটি ডাটাবেস ব্যাকআপ হল আপনার ডেটার একটি অনুলিপি যা ডেটা হারানোর ক্ষেত্রে ডেটা পুনরুদ্ধার করতে ব্যবহার করা যেতে পারে৷
এই ব্লগটি আপনাকে দেখায় কিভাবে Apache® Cassandra® ডাটাবেস ব্যাকআপ করতে হয় এবং ব্যর্থতার পরে সেগুলি পুনরুদ্ধার করতে হয়।
পরিচয়
যদিও Apache Cassandra বিকেন্দ্রীকৃত, এটি কোনো ব্যবসায়িক তথ্য না হারিয়ে একক এবং মাল্টি-নোড ব্যর্থতা সহ্য করতে পারে, যতক্ষণ না ক্লাস্টারের একটি নোডের মধ্যে ডেটা থাকে। যাইহোক, একটি সর্বোত্তম অনুশীলন হিসাবে, আপনাকে ডাটাবেসের জন্য একটি ব্যাকআপ কনফিগার করতে হবে।
কোনও ব্যর্থতার ক্ষেত্রে, যেমন একটি সম্পূর্ণ ক্লাস্টার পুনর্নির্মাণ, ডেটা দুর্নীতি, দুর্ঘটনাজনিত ডেটা মুছে ফেলা এবং আরও অনেক কিছুর ক্ষেত্রে, আপনি ব্যাকআপ থেকে ডেটা পুনরুদ্ধার করতে পারেন এবং ন্যূনতম বা কোনও প্রভাব ছাড়াই ব্যবসায়িক ক্রিয়াকলাপ চালিয়ে যেতে পারেন৷
আরও বেশি সংখ্যক কোম্পানি নোএসকিউএল ডেটাবেস ব্যবহার করছে, যেমন ক্যাসান্ড্রা, ব্যবসায়িক ডেটার বিশাল আয়তনকে সফলভাবে পরিচালনা করতে, যা বিগ ডেটা নামে পরিচিত। ক্যাসান্ড্রা, অনেক বড় প্রতিষ্ঠানের দ্বারা ব্যাপকভাবে ব্যবহৃত হয়, বিগ ডেটা সমর্থন করার জন্য স্কেলেবিলিটি, ত্রুটি-সহনশীলতা এবং সামঞ্জস্যতা নিশ্চিত করে৷
Cassandra ডাটাবেস ব্যাকআপ এবং পুনরুদ্ধার
আপনি একটি ক্যাসান্ড্রা ডাটাবেসের একটি স্ন্যাপশট নিতে এবং প্রয়োজনে এটি পুনরুদ্ধার করতে নিম্নলিখিত ইউটিলিটিগুলি ব্যবহার করতে পারেন:
nodetool
(স্ন্যাপশট নিতে)sstableloader
(স্ন্যাপশট ব্যাকআপ পুনরুদ্ধার করতে)
নিম্নলিখিত চিত্রটি sstableloader
ব্যবহার করে একটি ক্লাউড ক্লাস্টার থেকে একটি ক্যাসান্ড্রাক্লাস্টারে যাওয়ার চিত্র তুলে ধরেছে :
ছবির উৎস :https://dzone.com/articles/using-casandras-sstable-bulk
ব্যাকআপ
নিম্নলিখিত উদাহরণ nodetool
ব্যবহার করে ক্যাসান্ড্রা ডাটাবেসের একটি স্ন্যাপশট নিতেকীস্পেস(ব্যবহারকারী) কর্মচারী নামের একটি টেবিলের সাথে .
উৎস ক্যাসান্দ্রা ক্লাস্টার বিশদ বিবরণ:
$ 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
কীস্পেস ব্যাকআপ করতে নিম্নলিখিত কমান্ডটি ব্যবহার করুন৷ :
$ 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
নিম্নলিখিত উদাহরণে দেখানো হিসাবে এটি একটি ব্যাকআপ স্ন্যাপশট তৈরি করে:
/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
এখন, /স্ন্যাপশট সংরক্ষণ করুন ব্যাকআপ ডিরেক্টরি ফাইল এবং টারফাইলটিকে /bitnami/Cassandra/data/data/backup-এ সরান ডিরেক্টরি।
$ 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
ব্যাকআপ টার ফাইলটি একটি নন-ডিফল্ট অবস্থানে অনুলিপি করার পরে, কর্মচারীকে ফেলে দিন টেবিল।
দ্রষ্টব্য :Cassandra ক্লাস্টার জুড়ে সংজ্ঞায়িত পার্টিশন কী এবং রেপ্লিকেশন ফ্যাক্টরের উপর ভিত্তি করে ডেটা বিতরণ করে, তাই আপনাকে অবশ্যই আপনার সমস্ত নোড থেকে এই ব্যাকআপ কমান্ডটি চালাতে হবে। এই উদাহরণটি Crontab-এ Linux® শেল স্ক্রিপ্ট ব্যবহার করে, যা একবারে সব নোডের ব্যাক আপ করে।
$ 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"
পুনরুদ্ধার করুন
৷
কর্মচারীকে পুনরুদ্ধার করতে কীস্পেস (ব্যবহারকারী) থেকে টেবিল স্ন্যাপশট ব্যাকআপ, আপনাকে অবশ্যই sstableloader
ব্যবহার করতে হবে উপযোগিতা sstableloader
ইউটিলিটি শুধুমাত্র প্রতিটি নোডে sstables এর সেট কপি করে না বরং প্রতিলিপি কৌশল সংজ্ঞায়িত ফোরা ক্লাস্টারের উপর ভিত্তি করে প্রতিটি নোডে ডেটার উপযুক্ত অংশ স্থানান্তর করে। মনে রাখবেন যে ডেটা পুনরুদ্ধার করার জন্য একটি খালি টেবিলের প্রয়োজন নেই।
টার ফাইলটিকে ব্যাকআপ/ব্যবহারকারী-এ পুনরুদ্ধার করতে নিম্নলিখিত পদক্ষেপগুলি ব্যবহার করুন৷ :
$ 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
আপনি যে টেবিলটি পুনরুদ্ধার করতে যাচ্ছেন তার নামের সাথে ব্যবহারকারী ডিরেক্টরির জন্য একটি নরম লিঙ্ক তৈরি করুন৷
$ 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
.cql ব্যবহার করে টেবিল গঠন তৈরি করুন ফাইল যা স্ন্যাপশট ব্যাকআপ দ্বারা তৈরি করা হয়েছিল।
আপনি যখন কীস্পেসের জন্য ব্যাকআপ চালান , এটি schema.cql নামে একটি ফাইল তৈরি করে যেটিতে কীস্পেসে থাকা বস্তুগুলির ডেটা সংজ্ঞা ভাষা (DDL) রয়েছে .
schema.cql ব্যবহার করুন একটি কর্মচারী অবজেক্ট তৈরি করতে, যা ভুলবশত বাদ পড়েছে।
$ 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
sstableloader
ব্যবহার করে স্ন্যাপশট থেকে ডেটা পুনরুদ্ধার করুন , যা প্রতিটিsstables পড়ে ব্যাকআপ থেকে এবং ক্লাস্টারে ডেটা স্ট্রিম করে। এটি তারপর ক্লাস্টারে সংজ্ঞায়িত প্রতিলিপি কৌশলের উপর ভিত্তি করে প্রতিটি নোডে ডেটার প্রাসঙ্গিক অংশ স্থানান্তর করে।
Syntax: sstableloader -u <username> -pw passwrod -d <hostname> <employee table softlink name with location>
ডেটা পুনরুদ্ধার করতে নিম্নলিখিত কমান্ডটি ব্যবহার করুন:
$ 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
প্রতিটি নোডের জন্য তাদের স্টেবল থেকে ডেটা পুনরুদ্ধার করতে এই পদক্ষেপগুলি পুনরাবৃত্তি করুন৷
nodetool repair
ব্যবহার করে ডেটা মেরামত করুন , যা নোডে সংরক্ষিত ডেটার সমস্ত প্রতিলিপির তুলনা করে যার উপর কমান্ড চলে এবং প্রতিটি প্রতিলিপিকে নতুন সংস্করণে আপডেট করে৷
$ 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
কর্মচারীর মধ্যে ডেটা যাচাই করুন৷ টেবিল, যা আমরা বাদ দিয়েছি। পূর্ববর্তী কমান্ড আপনার পূর্বে নেওয়া ব্যাকআপ থেকে ডেটা পুনরুদ্ধার করেছে। এটি সঠিকভাবে পুনরুদ্ধার করা হয়েছে কিনা তা দেখতে এখন আপনাকে ডেটা যাচাই করতে হবে৷
$ 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)
উপসংহার
এই পোস্টে, আপনি শিখেছেন কিভাবে একটি ক্যাসান্ড্রাডাটাবেসে একটি টেবিল ব্যাকআপ এবং পুনরুদ্ধার করতে হয়। যাইহোক, যদি আপনার একটি পূর্ণ কীস্পেস/ডাটাবেস পুনরুদ্ধার করতে হয়, টেবিল পুনরুদ্ধার অংশ ছাড়াই পূর্ববর্তী পদক্ষেপগুলি ব্যবহার করুন। আপনাকে অবশ্যই কীস্পেস পুনরায় তৈরি করতে হবে এবং sstableloader
ব্যবহার করে ডেটা লোড করুন .
সোর্স এবং টার্গেট ডেটাবেস ক্লাস্টারে নোডের সংখ্যা sstableloader
এর সাথে গুরুত্বপূর্ণ নয় কারণ এটি প্রতিটি sstables পড়ে ব্যাকআপ থেকে। তারপর, ক্লাস্টারে সংজ্ঞায়িত প্রতিলিপি কৌশল অনুসারে ডেটা রাখার সময় এটি ক্লাস্টারে ডেটা স্ট্রিম করে।
কোনো মন্তব্য করতে বা প্রশ্ন করতে ফিডব্যাক ট্যাব ব্যবহার করুন।
বিশেষজ্ঞ প্রশাসন, ব্যবস্থাপনা এবং কনফিগারেশনের মাধ্যমে আপনার পরিবেশকে অপ্টিমাইজ করুন
Rackspace এর অ্যাপ্লিকেশন পরিষেবা(RAS) বিশেষজ্ঞরা অ্যাপ্লিকেশনগুলির বিস্তৃত পোর্টফোলিও জুড়ে নিম্নলিখিত পেশাদার এবং পরিচালিত পরিষেবাগুলি প্রদান করে:
- ইকমার্স এবং ডিজিটাল অভিজ্ঞতার প্ল্যাটফর্ম
- এন্টারপ্রাইজ রিসোর্স প্ল্যানিং (ERP)
- ব্যবসায়িক বুদ্ধিমত্তা
- সেলসফোর্স কাস্টমার রিলেশনশিপ ম্যানেজমেন্ট (CRM)
- ডাটাবেস
- ইমেল হোস্টিং এবং উৎপাদনশীলতা
আমরা সরবরাহ করি:
- নিরপেক্ষ দক্ষতা :আমরা আপনার আধুনিকীকরণের যাত্রাকে সহজ করে দিই এবং নির্দেশিকা দিই, সেই ক্ষমতাগুলির উপর ফোকাস করে যা তাৎক্ষণিক মূল্য প্রদান করে৷
- ধর্মান্ধ অভিজ্ঞতা ™:আমরা প্রথমে একটি প্রক্রিয়া একত্রিত করি। প্রযুক্তি দ্বিতীয়। ব্যাপক সমাধান প্রদানের জন্য নিবেদিত প্রযুক্তিগত সহায়তা সহ পন্থা।
- অপ্রতিদ্বন্দ্বী পোর্টফোলিও :আমরা আপনাকে সঠিক ক্লাউডে সঠিক প্রযুক্তি বাছাই এবং স্থাপনে সহায়তা করার জন্য ব্যাপক ক্লাউড অভিজ্ঞতা প্রয়োগ করি।
- চটপট ডেলিভারি :আপনি আপনার যাত্রায় যেখানে আছেন সেখানে আমরা আপনার সাথে দেখা করি এবং আপনার সাফল্যের সাথে সারিবদ্ধ করি।
শুরু করতে এখনই চ্যাট করুন।