परिचय
यह सुनिश्चित करने के लिए कि आप डेटा भ्रष्टाचार या आकस्मिक विलोपन की स्थिति में डेटा पुनर्प्राप्त कर सकते हैं, डेटाबेस बैकअप को नियमित रखरखाव गतिविधि बनाएं। यह पोस्ट Vertica® डेटाबेस बैकअप और रिस्टोरेशन का पता लगाती है।
परिचय
Vertica, एक विश्लेषणात्मक डेटाबेस प्रबंधन प्रणाली, एक कॉलमर स्टोरेज प्लेटफॉर्म है जिसे बड़ी मात्रा में डेटा को संभालने के लिए डिज़ाइन किया गया है, जो पारंपरिक रूप से संसाधन-गहन परिदृश्यों में तेज़ क्वेरी प्रदर्शन को सक्षम करता है।
Vertica निम्नलिखित लाभ प्रदान करता है:
- पारंपरिक रिलेशनल डेटाबेस मैनेजमेंट सिस्टम पर क्वेरी प्रदर्शन में सुधार करता है।
- उच्च उपलब्धता प्रदान करता है।
- कमोडिटी एंटरप्राइज़ सर्वर पर पेटाबाइट स्केलेबिलिटी प्रदान करता है।
डेटाबेस बैकअप और रिकवरी तंत्र रखरखाव और डिजास्टर रिकवरी के दौरान डाउनटाइम को कम करता है।
डेटाबेस बैकअप और रिस्टोर करें
Vertica के साथ, आप हॉट बैकअप बना सकते हैं, अनिश्चित संख्या में रिस्टोर पॉइंट के साथ इन्क्रीमेंटल कॉपी, और पूरे डेटाबेस या डेटाबेस के सबसेट (स्कीमा, टेबल, आदि) के बैकअप। निम्नलिखित बैकअप स्तर उपलब्ध हैं:
- पूर्ण स्तर: यह स्तर सुनिश्चित करता है कि आप पूर्ण Vertica डेटाबेस का बैकअप और रिस्टोर कर सकते हैं।
- इन्क्रीमेंटल स्तर: यह स्तर एक बाद का बैकअप है जिसमें केवल नया या बदला हुआ डेटा होता है।
- ऑब्जेक्ट-स्तर: यह स्तर रिस्टोरेशन के लिए एक ऑब्जेक्ट का बैकअप है।
Vertica पूर्ण बैकअप से विशिष्ट ऑब्जेक्ट्स (जैसे स्कीमा और टेबल) को रिस्टोर करने के लिए लचीलापन और ग्रैन्युलैरिटी के स्तर प्रदान करता है।
स्नैपशॉट
डेटाबेस स्नैपशॉट डेटाबेस में सभी ऑब्जेक्ट्स और डेटा की एक सुसंगत छवि को कैप्चर करते हैं। आप ऑब्जेक्ट-लेवल स्नैपशॉट में शामिल करने के लिए डेटाबेस ऑब्जेक्ट्स का सबसेट चुन सकते हैं, जिसमें स्नैपशॉट के समय डेटाबेस में संबद्ध डेटा और निर्भरता ग्राफ में अन्य ऑब्जेक्ट्स होते हैं। आप अपने स्नैपशॉट को जैसा चाहें नाम दे सकते हैं (उदाहरण: snap, objectsnap1, fullsnap, आदि)।
बैकअप स्थान
बैकअप स्थान बैकअप होस्ट पर एक डायरेक्टरी है जहां आप स्नैपशॉट और उनके संबद्ध आर्काइव सेव करते हैं। चूंकि स्नैपशॉट संगत हैं, आप एक ही बैकअप स्थान से किसी भी ऑब्जेक्ट स्नैपशॉट का उपयोग कर सकते हैं जब आप एक पूर्ण डेटाबेस स्नैपशॉट से डेटाबेस रिस्टोर करते हैं। एक ही बैकअप स्थान में सभी स्नैपशॉट हार्ड लिंक के माध्यम से डेटा फाइलें साझा करते हैं।
हार्ड-लिंक बैकअप
Vertica स्थानीय क्लस्टर इन्फ्रास्ट्रक्चर में डेटाबेस बैकअप की कम लागत और स्थान-कुशल प्रतियां (हार्ड-लिंक लोकल बैकअप) प्रदान करता है। आप इन बैकअप को तेजी से पुनर्प्राप्त कर सकते हैं क्योंकि सिस्टम उपयोगकर्ता डेटा को बाहरी बैकअप वातावरण में कॉपी नहीं करता है। Vertica केवल कैटलॉग डेटा कॉपी करता है और फाइल सिस्टम के भीतर Linux®-आधारित हार्ड लिंक शुरू करता है।
चित्र स्रोत: https://www.vertica.com/wp-content/uploads/2016/04/sidestep1.png
ये बैकअप स्टोरेज ब्लॉक के समान सेट को साझा करते हैं, और प्रत्येक बैकअप अपने पॉइंट-इन-टाइम कॉपी को ट्रैक करता है। सिस्टम एक ही सामग्री को कई स्थानों पर स्टोर नहीं करता है।
बैकअप और रिस्टोरेशन प्रक्रिया प्रवाह
बैकअप और रिस्टोरेशन प्रवाह में निम्नलिखित चरण होते हैं:
- स्नैपशॉट प्रकार चुनें, जैसे पूर्ण, इन्क्रीमेंटल, या ऑब्जेक्ट-लेवल बैकअप।
- Vertica बैकअप और रिकवरी टूल का उपयोग करके कॉन्फ़िगरेशन फाइल बनाएं।
- बैकअप फाइलों को स्टोर करने के लिए बैकअप स्थान आरंभ करें।
- कॉन्फ़िगरेशन फाइल का उपयोग करके बैकअप लें।
- बैकअप स्थान में बैकअप सत्यापित करें।
- समान या अलग 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
बैकअप रिस्टोर करें
पूर्ण या ऑब्जेक्ट-लेवल बैकअप रिस्टोर करें।
पूर्ण-डेटाबेस बैकअप से रिस्टोर करें
नोट: पूर्ण बैकअप रिस्टोर करने के लिए डेटाबेस डाउन होना चाहिए।
पूर्ण-डेटाबेस रिस्टोर करने के लिए निम्न चरणों का उपयोग करें:
अपने डेटाबेस में सभी ऑब्जेक्ट्स ड्रॉप करें और हाल ही में बनाए गए बैकअप के साथ उन्हें रिस्टोर करें:
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 डेटाबेस का बैकअप और रिस्टोर करने के चरण भी प्रदान करती है।