ডেটা করাপশন বা অকস্মাত ডিলিশনের ঘটনায় ডেটা রিকভার করতে পারা নিশ্চিত করতে, ডেটাবেস ব্যাকআপকে একটি রুটিন মেইনটেন্যান্স অ্যাক্টিভিটি করুন। এই পোস্টে Vertica® ডেটাবেস ব্যাকআপ এবং রিস্টোরেশন এক্সপ্লোর করা হয়েছে।
ভূমিকা
Vertica, একটি অ্যানালিটিক ডেটাবেস ম্যানেজমেন্ট সিস্টেম, একটি কলামার-স্টোরেজ প্ল্যাটফর্ম যা বড় আকারের ডেটা হ্যান্ডেল করার জন্য ডিজাইন করা হয়েছে, ঐতিহ্যবাহী রিসোর্স-ইনটেনসিভ সিনেরিওতে দ্রুত কোয়েরি পারফরম্যান্স সক্ষম করে।
Vertica নিচের সুবিধাগুলো প্রদান করে:
- ঐতিহ্যবাহী রিলেশনাল ডেটাবেস ম্যানেজমেন্ট সিস্টেমের তুলনায় কোয়েরি পারফরম্যান্স উন্নত করে।
- হাই অভেইলেবিলিটি প্রদান করে।
- কমোডিটি এন্টারপ্রাইজ সার্ভারে পেটাবাইট স্কেলেবিলিটি প্রদান করে।
ডেটাবেস ব্যাকআপ এবং রিকভারি মেকানিজম মেইনটেন্যান্স এবং ডিজাস্টার রিকভারি সময় ডাউনটাইম কমিয়ে আনে।
ডেটাবেস ব্যাকআপ ও রিস্টোর
Vertica-তে, আপনি হট ব্যাকআপ, অনির্দিষ্ট সংখ্যক রিস্টোর পয়েন্টসহ ইনক্রিমেন্টাল কপি, এবং পুরো ডেটাবেস বা ডেটাবেসের একটি সাবসেট (স্কিমা, টেবিল, ইত্যাদি) ব্যাকআপ নিতে পারেন। নিচের ব্যাকআপ লেভেলগুলো উপলব্ধ:
- ফুল লেভেল: এই লেভেল নিশ্চিত করে যে আপনি পুরো Vertica ডেটাবেস ব্যাকআপ ও রিস্টোর করতে পারেন।
- ইনক্রিমেন্টাল লেভেল: এটি একটি পরবর্তী ব্যাকআপ যা শুধু নতুন বা পরিবর্তিত ডেটা নিয়ে গঠিত।
- অবজেক্ট-লেভেল: এটি রিস্টোরেশনের জন্য একটি অবজেক্টের ব্যাকআপ।
Vertica পুরো ব্যাকআপ থেকে নির্দিষ্ট অবজেক্ট (যেমন স্কিমা এবং টেবিল) রিস্টোর করার জন্য নমনীয়তা এবং গ্র্যানুলারিটির লেভেল প্রদান করে।
স্ন্যাপশট
ডেটাবেস স্ন্যাপশট ডেটাবেসের সকল অবজেক্ট এবং ডেটার একটি কনসিস্টেন্ট ইমেজ ক্যাপচার করে। আপনি একটি অবজেক্ট-লেভেল স্ন্যাপশটে ডেটাবেস অবজেক্টের একটি সাবসেট অন্তর্ভুক্ত করতে পারেন, যাতে স্ন্যাপশটের সময় ডেটাবেসে সংশ্লিষ্ট ডেটা এবং ডিপেন্ডেন্সি গ্রাফের অন্যান্য অবজেক্ট থাকে। আপনি আপনার স্ন্যাপশটের নাম যেকোনোভাবে রাখতে পারেন (যেমন: snap, objectsnap1, fullsnap, ইত্যাদি)।
ব্যাকআপ লোকেশন
ব্যাকআপ লোকেশন হলো ব্যাকআপ হোস্টের একটি ডিরেক্টরি যেখানে আপনি স্ন্যাপশট এবং তাদের সংশ্লিষ্ট আর্কাইভ সংরক্ষণ করেন। যেহেতু স্ন্যাপশটগুলো কম্প্যাটিবল, আপনি একই ব্যাকআপ লোকেশন থেকে যেকোনো অবজেক্ট স্ন্যাপশট ব্যবহার করতে পারেন একটি ডেটাবেস ফুল ডেটাবেস স্ন্যাপশট থেকে রিস্টোর করার পর। একই ব্যাকআপ লোকেশনের সকল স্ন্যাপশট হার্ড লিংকের মাধ্যমে ডেটা ফাইল শেয়ার করে।
হার্ড-লিংক ব্যাকআপ
Vertica লোকাল ক্লাস্টার ইনফ্রাস্ট্রাকচারে ডেটাবেস ব্যাকআপের কম খরচে এবং স্পেস-এফিশিয়েন্ট কপি (হার্ড-লিংক লোকাল ব্যাকআপ) প্রদান করে। আপনি এই ব্যাকআপগুলো দ্রুত রিট্রিভ করতে পারেন কারণ সিস্টেম ব্যবহারকারীর ডেটা এক্সটার্নাল ব্যাকআপ এনভায়রনমেন্টে কপি করে না। Vertica কেবল ক্যাটালগ ডেটা কপি করে এবং ফাইল সিস্টেমের মধ্যে Linux®-ভিত্তিক হার্ড লিংক শুরু করে।
ছবির উৎস: https://www.vertica.com/wp-content/uploads/2016/04/sidestep1.png
এই ব্যাকআপগুলো একই সেট স্টোরেজ ব্লক শেয়ার করে, এবং প্রতিটি ব্যাকআপ তাদের পয়েন্ট-ইন-টাইম কপি ট্র্যাক করে। সিস্টেম একই কন্টেন্ট একাধিক লোকেশনে স্টোর করে না।
ব্যাকআপ এবং রিস্টোরেশন প্রসেস ফ্লো
ব্যাকআপ এবং রিস্টোরেশন ফ্লো নিচের ধাপগুলো নিয়ে গঠিত:
- স্ন্যাপশট টাইপ সিলেক্ট করুন, যেমন ফুল, ইনক্রিমেন্টাল, বা অবজেক্ট-লেভেল ব্যাকআপ।
- Vertica Backup and Recovery টুল ব্যবহার করে কনফিগারেশন ফাইল তৈরি করুন।
- ব্যাকআপ ফাইল সংরক্ষণ করার জন্য ব্যাকআপ লোকেশন ইনিশিয়ালাইজ করুন।
- কনফিগারেশন ফাইল ব্যবহার করে ব্যাকআপ নিন।
- ব্যাকআপ লোকেশনে ব্যাকআপ যাচাই করুন।
- সমান বা ভিন্ন Vertica ক্লাস্টারে ফুল ডেটাবেস বা ডেটাবেস অবজেক্ট রিস্টোর করুন।
ছবির উৎস: https://www.vertica.com/kb/Copy-and-Restore-Data-from-a-Vertica-Cluster-to-a-Backup/Content/BestPractices/Copy-and-Restore-Data-from-a-Vertica-Cluster-to-a-Backup.htm
কনফিগারেশন ফাইল জেনারেট করুন
vbr.py ইউটিলিটি একটি কনফিগারেশন ফাইল তৈরি করে যাতে Vertica যা প্রয়োজন ফুল, ইনক্রিমেন্টাল, বা অবজেক্ট-লেভেল স্ন্যাপশট ব্যাকআপ ও রিস্টোর করার জন্য। কনফিগারেশন ফাইল ছাড়া আপনি ডেটাবেস বা অবজেক্ট ব্যাকআপ বা রিস্টোর করতে পারবেন না, এবং কোন ডিফল্ট ফাইল নেই।
আপনি যত প্রয়োজন তত ব্যাকআপ কনফিগারেশন ফাইল তৈরি করতে পারেন (যেমন ফুল বা ইনক্রিমেন্টাল, অবজেক্ট বা স্কিমা-স্পেসিফিক, বা লোকেশন-স্পেসিফিক ফাইল)।
ফুল ব্যাকআপ কনফিগারেশন ফাইল
নিচের ধাপগুলো ফুল ডেটাবেস ব্যাকআপ নেওয়ার জন্য একটি কনফিগারেশন ফাইল তৈরি করতে সাহায্য করে।
$ vbr.py --setupconfig Snapshot name (backup_snapshot): full_bkp_snap Backup vertica configurations? (n) [y/n]: y Number of restore points (1): Specify objects (no default): Vertica user name (dbadmin): dbadmin Save password to avoid runtime prompt? (n) [y/n]: n Node v_testdb_node0001 Backup host name (no default): v_testdb_node0001 Backup directory (no default): /vert_backup/backup Node v_testdb_node0002 Backup host name (no default): v_testdb_node0002 Backup directory (no default): /vert_backup/backup Node v_testdb_node0003 Backup host name (no default): v_testdb_node0003 Backup directory (no default): /vert_backup/backup Config file name (full_bkp_snap.ini): /vert_backup/backup_conf/full_bkp_snap.ini Change advanced settings? (n) [y/n]: n Saved vbr configuration to /vert_backup/backup_conf/full_bkp_snap.ini.
অবজেক্ট-স্পেসিফিক ব্যাকআপ কনফিগারেশন ফাইল
অবজেক্ট-স্পেসিফিক কনফিগারেশন ফাইল তৈরি করতে নিচের ধাপগুলো অনুসরণ করুন:
ডেটাবেসের অবজেক্টগুলো লিস্ট করুন এবং কোনগুলো ব্যবহার করবেন তা বেছে নিন। নিচের অবজেক্টগুলো আমাদের Vertica ডেটাবেসে রয়েছে:
List of tables Schema | Name | Kind | Owner | Comment --------+-------+-------+---------+--------- public | tab1 | table | dbadmin | public | tab2 | table | dbadmin | public | tab3 | table | dbadmin | (3 rows)public.tab1 টেবিলের ব্যাকআপ নেওয়ার জন্য কনফিগারেশন ফাইল তৈরি করতে নিচের কমান্ড চালান:
$ vbr.py --setupconfig Snapshot name (backup_snapshot): tab1_bkp_snap Backup vertica configurations? (n) [y/n]: n Number of restore points (1): Specify objects (no default): public.tab1 Vertica user name (dbadmin): dbadmin Save password to avoid runtime prompt? (n) [y/n]: n Node v_testdb_node0001 Backup host name (no default): v_testdb_node0001 Backup directory (no default): /vert_backup/backup Node v_testdb_node0002 Backup host name (no default): v_testdb_node0002 Backup directory (no default): /vert_backup/backup Node v_testdb_node0003 Backup host name (no default): v_testdb_node0003 Backup directory (no default): /vert_backup/backup Config file name (tab1_bkp_snap.ini): /vert_backup/backup_conf/tab1_bkp_snap.ini Change advanced settings? (n) [y/n]: n Saved vbr configuration to /vert_backup/backup_conf/tab1_bkp_snap.ini.তैयার ব্যাকআপ কনফিগারেশন ফাইলগুলো লিস্ট করতে নিচের কমান্ডগুলো চালান:
$ cd /vert_backup/backup_conf/ $ ls -la total 20 drwxr-xr-x. 2 dbadmin dbadmin 4096 Jan 20 14:21 . -rw-rw-r--. 1 dbadmin dbadmin 488 Jan 20 14:21 tab1_bkp_snap.ini -rw-rw-r--. 1 dbadmin dbadmin 475 Jan 20 14:04 full_bkp_snap.ini
ব্যাকআপ লোকেশন ইনিশিয়ালাইজ করুন
সোর্স ক্লাস্টারে ফুল এবং অবজেক্ট-লেভেল ব্যাকআপের জন্য ব্যাকআপ লোকেশন ইনিশিয়ালাইজ করতে নিচের init স্টেটমেন্টগুলো চালান:
$ /opt/vertica/bin/vbr.py -t init --config-file full_bkp_snap.ini $ /opt/vertica/bin/vbr.py -t init --config-file tab1_bkp_snap.ini
ব্যাকআপ নিন
ফুল ডেটাবেস বা অবজেক্ট-লেভেল ব্যাকআপ নিন।
ফুল ডেটাবেস ব্যাকআপ
पूर्वে তৈরি করা কনফিগারেশন ফাইল, full_bkp_snap.ini ব্যবহার করে ফুল ডেটাবেস ব্যাকআপ নিন:
$ vbr.py --task backup --config-file full_bkp_snap.ini Please input vertica password: pparing... Found Database port: 5433 Copying... 348900 out of 348900, 100% All child processes terminated successfully. Committing changes on all backup sites... backup done!
সিঙ্গল অবজেক্ট ব্যাকআপ
কনফিগারেশন ফাইল, tab1_bkp_snap.ini ব্যবহার করে অবজেক্ট-লেভেল ব্যাকআপ নিন:
$ vbr.py --task backup --config-file tab1_bkp_snap.ini Please input vertica password: pparing... Found Database port: 5433 Copying... 78920 out of 78920, 100% All child processes terminated successfully. Committing changes on all backup sites... backup done!
ব্যাকআপ লোকেশন যাচাই করুন
ব্যাকআপ লোকেশন যাচাই করতে নিচের কমান্ডগুলো চালান:
$ cd vert_backup/ $ ls -la total 16 drwxr-xr-x. 4 dbadmin dbadmin 4096 Jan 20 13:40 . dr-xr-xr-x. 28 root root 4096 Jan 20 13:53 .. drwxr-xr-x. 5 dbadmin dbadmin 4096 Jan 20 15:22 backup drwxr-xr-x. 2 dbadmin dbadmin 4096 Jan 20 15:29 backup_conf $ cd backup/ $ ll total 12 drwxrwxr-x. 8 dbadmin dbadmin 4096 Jan 20 15:29 v_testdb_node0001 drwxrwxr-x. 8 dbadmin dbadmin 4096 Jan 20 15:29 v_testdb_node0002 drwxrwxr-x. 8 dbadmin dbadmin 4096 Jan 20 15:29 v_testdb_node0003 $ cd v_testdb_node0001/ $ ll total 12 drwx------. 3 dbadmin dbadmin 4096 Jan 20 15:29 tab1_bkp_snap drwx------. 3 dbadmin dbadmin 4096 Jan 20 15:22 full_bkp_snap
ব্যাকআপ রিস্টোর করুন
ফুল বা অবজেক্ট-লেভেল ব্যাকআপ রিস্টোর করুন।
ফুল-ডেটাবেস ব্যাকআপ থেকে রিস্টোর
নোট: ফুল ব্যাকআপ রিস্টোর করার জন্য ডেটাবেস ডাউন থাকতে হবে।
ফুল-ডেটাবেস রিস্টোর করতে নিচের ধাপগুলো অনুসরণ করুন:
আপনার ডেটাবেসের সকল অবজেক্ট ড্রপ করুন এবং gầnে তৈরি করা ব্যাকআপ দিয়ে রিস্টোর করুন:
cluster=> dt List of tables Schema | Name | Kind | Owner | Comment --------+-------+-------+---------+--------- public | tab1 | table | dbadmin | public | tab2 | table | dbadmin | public | tab3 | table | dbadmin | (3 rows) cluster=> drop table tab1,tab2,tab3; DROP TABLE cluster=> dt No relations found.ডেটাবেস ডাউন থাকা অবস্থায়, ফুল ব্যাকআপ ব্যবহার করে ডেটাবেস রিস্টোর করুন:
$ vbr.py --task restore --config-file full_bkp_snap.ini Please input vertica password: Preparing... Found Database port: 5433 Copying... 248556 out of 248556, 100% All child processes terminated successfully. restore done!ডেটাবেস শুরু করুন এবং অবজেক্ট রিস্টোরেশন সফল হয়েছে কিনা চেক করুন। নিচের উদাহরণটি দেখাচ্ছে যে রিস্টোর সফল হয়েছে:
cluster=> dt List of tables Schema | Name | Kind | Owner | Comment --------+-------+-------+---------+--------- public | tab1 | table | dbadmin | public | tab2 | table | dbadmin | public | tab3 | table | dbadmin | (3 rows)
অবজেক্ট-লেভেল ব্যাকআপ থেকে রিস্টোর
নোট: অবজেক্ট-লেভেল রিস্টোরের জন্য ডেটাবেস আপ এবং রানিং থাকতে হবে।
একটি অবজেক্ট রিস্টোর করতে, আপনাকে একটি মৌজুদা অবজেক্ট-লেভেল ব্যাকআপ ব্যবহার করতে হবে। নিচের কোড tab1 ড্রপ করে রিস্টোরেশনের জন্য প্রস্তুত করে:
cluster=> drop table tab1; DROP TABLE cluster=> dt List of tables Schema | Name | Kind | Owner | Comment -------+-------+-------+---------+--------- public | tab2 | table | dbadmin | public | tab3 | table | dbadmin | (2 rows)
অবজেক্ট-লেভেল ব্যাকআপ থেকে একটি অবজেক্ট রিস্টোর করতে নিচের ধাপগুলো অনুসরণ করুন:
অবজেক্ট রিস্টোর করুন:
$ vbr.py --task restore --config-file tab1_bkp_snap.ini Please input vertica password:xxxxxxxx Preparing... Found Database port: 5433 Copying... out of , 100% All child processes terminated successfully. Copying... 2970 out of 2970, 100% All child processes terminated successfully. restore done!অবজেক্ট রিস্টোরেশন সফল হয়েছে কিনা চেক করুন। নিচের উদাহরণটি public.tab1-র অবজেক্ট-লেভেল ব্যাকআপ থেকে সফল রিস্টোরেশন দেখাচ্ছে:
$ vsql Password:xxxxxxx dbadmin=> dt List of tables Schema | Name | Kind | Owner | Comment --------+-------+-------+---------+--------- public | tab1 | table | dbadmin | public | tab2 | table | dbadmin | public | tab3 | table | dbadmin | (3 rows) dbadmin=> d tab1 ; List of Fields by Tables Schema | Table | Column | Type | Size | Default | Not Null | Primary Key | Foreign Key --------+-------+--------+--------------+------+---------+----------+-------------+------------- public | tab1 | col1 | numeric(3,) | 8 | | f | f |
উপসংহার
এই পোস্টটি Vertica ডেটাবেস ব্যাকআপ এবং রিকভারি প্রসেসের পেছনের লজিক হাইলাইট করে। এছাড়া ফুল, ইনক্রিমেন্টাল, এবং অবজেক্ট-লেভেল সহ বিভিন্ন লেভেলে Vertica ডেটাবেস ব্যাকআপ ও রিস্টোর করার ধাপগুলো প্রদান করে।
ডেটাবেস সম্পর্কে আরও জানুন।
www.rackspace.com দেখুন এবং Sales Chat-এ ক্লিক করুন কথা বলতে শুরু করতে।
ফিডব্যাক ট্যাব ব্যবহার করে মন্তব্য করুন বা প্রশ্ন করুন।