PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

पोस्टग्रेएसक्यूएल का बैकअप लेने के लिए बर्मन का उपयोग करना - एक सिंहावलोकन

डेटाबेस बैकअप उत्पादन डेटाबेस के लिए एक प्रभावी आपदा पुनर्प्राप्ति रणनीति तैयार करने में एक अनिवार्य भूमिका निभाते हैं। डेटाबेस प्रशासकों और आर्किटेक्ट्स को वास्तविक समय मिशन महत्वपूर्ण डेटाबेस के लिए एक इष्टतम और प्रभावी बैकअप रणनीति तैयार करने की दिशा में लगातार काम करना चाहिए और यह सुनिश्चित करना चाहिए कि आपदा रिकवरी एसएलए संतुष्ट हैं। मेरे अनुभव के अनुसार, यह आसान नहीं है और एक त्रुटिहीन बैकअप रणनीति प्राप्त करने में कई दिनों से लेकर हफ्तों तक का समय लग सकता है। यह सिर्फ बैकअप डेटाबेस के लिए एक अच्छी स्क्रिप्ट नहीं लिख रहा है और सुनिश्चित करें कि यह काम करता है। विचार करने के लिए कई कारक हैं, आइए उन पर एक नज़र डालें:

  • डेटाबेस का आकार: बैकअप रणनीतियों को डिजाइन करते समय डेटाबेस का आकार महत्वपूर्ण भूमिका निभाता है। वास्तव में, यह मुख्य कारकों में से एक है जो
      . को परिभाषित करता है
    • बैकअप द्वारा लिया गया समय
    • डिस्क, नेटवर्क, सीपीयू आदि जैसे बुनियादी ढांचे के घटकों पर भार।
    • आवश्यक बैकअप संग्रहण की मात्रा और शामिल लागत
    • यदि डेटाबेस क्लाउड पर होस्ट किए जाते हैं, तो बैकअप संग्रहण लागत आवश्यक संग्रहण की मात्रा पर निर्भर करती है
    • साथ ही, डेटाबेस का आकार आरटीओ को प्रभावित करता है
  • बुनियादी ढांचा: बैकअप रणनीति डेटाबेस के बुनियादी ढांचे पर बहुत अधिक निर्भर करती है। क्लाउड पर होस्ट किए गए डेटाबेस की तुलना में ऑन-प्रिमाइसेस डेटा-सेंटर में भौतिक सर्वर पर होस्ट किए गए डेटाबेस के लिए बैकअप प्रक्रिया भिन्न होगी।
  • बैकअप स्थान: बैकअप कहाँ जा रहे हैं? आम तौर पर, बैकअप को दूरस्थ स्थान पर रखा जाएगा, उदाहरण के लिए टेप या क्लाउड विशिष्ट संग्रहण जैसे AWS S3 पर।
  • बैकअप टूल: ऑनलाइन डेटाबेस बैकअप करने के लिए एक इष्टतम टूल की पहचान करें जो संभावित रूप से सुनिश्चित करता है कि लगातार बैकअप लिया गया है।

एक अच्छी डेटाबेस बैकअप रणनीति को यह सुनिश्चित करना चाहिए कि आरटीओ (रिकवरी टाइम ऑब्जेक्टिव) और आरपीओ (रिकवरी पॉइंट ऑब्जेक्टिव) को पूरा किया जाए जो आपदा रिकवरी उद्देश्य को प्राप्त करने में मदद करते हैं। फ़ाइल-सिस्टम स्तर का बैकअप PostgreSQL डेटाबेस पर कई तरीकों से किया जा सकता है। इस ब्लॉग में, मेरा ध्यान बर्मन नामक टूल पर होगा, जो लोकप्रिय रूप से PostgreSQL डेटाबेस बैकअप करने के लिए उपयोग किया जाता है।

बर्मन (बैकअप और रिकवरी मैनेजर) एक पायथन आधारित ओपन-सोर्स टूल है जिसे डेवलपर्स द्वारा दूसरे क्वाड्रंट में विकसित किया गया है। यह उपकरण मिशन महत्वपूर्ण पोस्टग्रेएसक्यूएल उत्पादन डेटाबेस के लिए एंटरप्राइज़ ग्रेड डेटाबेस बैकअप रणनीति प्राप्त करने के लिए विकसित किया गया है। इसकी विशेषताएं और विशेषताएं Oracle के RMAN से मिलती जुलती हैं। मेरी राय में, पोस्टग्रेएसक्यूएल डेटाबेस के लिए बर्मन सबसे अच्छे विकल्पों में से एक है और डीबीए और इंफ्रास्ट्रक्चर इंजीनियरों को संचालन के दृष्टिकोण से कई लाभ प्रदान कर सकता है।

आइए बर्मन की कुछ क्षमताओं को देखें:

मैं कॉन्फ़िगरेशन सिंहावलोकन के साथ शुरू करूंगा और फिर सूचीबद्ध करूंगा कि किस प्रकार के बैकअप किए जा सकते हैं

तकनीकी रूप से, बरमान-क्ली अजगर आधारित उपकरण है और इससे निपटने के लिए दो अलग-अलग कॉन्फ़िगरेशन फ़ाइलें हैं। एक फ़ाइल जो बैकअप के लिए डेटाबेस के लिए वास्तविक कॉन्फ़िगरेशन है, "/etc/barman.d" नामों में .conf के रूप में रहती है और दूसरी फ़ाइल जिसमें बर्मन संबंधित पैरामीटर हैं (जैसे बर्मन बैकअप स्थान, बर्मन सर्वर, लॉग फाइल आदि) कॉन्फ़िगर किया गया "/etc" (/etc/barman.conf) में रहता है। बर्मन कॉन्फ़िगरेशन फ़ाइलों में MySQL प्रकार पैरामीटर कॉन्फ़िगरेशन होता है।

/etc/barman.conf फ़ाइल की उदाहरण सामग्री नीचे दिखाई गई है

[barman]
barman_user = barman            ---------> barman user who performs backup/recovery of database
configuration_files_directory = /etc/barman.d    -----> location for DB configuration files
barman_home = /dbbackups/barman    ---> barman home directory
log_file = /dbbackups/barman/logs/barman.log ---> barman log file location
log_level = INFO  -----> level of logging for barman operations
compression = gzip  ----->  backups must be compressed

बर्मन की स्थापना

आइए हम बर्मन की स्थापना प्रक्रिया पर एक नज़र डालें -

स्रोत से इंस्टाल करना

बर्मन को https://www.pgbarman.org/

. से डाउनलोड करें

इंस्टॉलर को अनटार / अनज़िप करें और रूट यूजर के रूप में निम्न कमांड निष्पादित करें -

[[email protected] barman-2.4]# ./setup.py install
/usr/lib64/python2.7/distutils/dist.py:267: UserWarning: Unknown distribution option: 'setup_requires'
  warnings.warn(msg)
/usr/lib64/python2.7/distutils/dist.py:267: UserWarning: Unknown distribution option: 'install_requires'
  warnings.warn(msg)
/usr/lib64/python2.7/distutils/dist.py:267: UserWarning: Unknown distribution option: 'tests_require'
  warnings.warn(msg)
running install
running build
running build_py
creating build
creating build/lib
creating build/lib/barman
copying barman/utils.py -> build/lib/barman
copying barman/fs.py -> build/lib/barman
copying barman/retention_policies.py -> build/lib/barman
copying barman/diagnose.py -> build/lib/barman
copying barman/backup.py -> build/lib/barman
copying barman/recovery_executor.py -> build/lib/barman
copying barman/backup_executor.py -> build/lib/barman
copying barman/config.py -> build/lib/barman
copying barman/process.py -> build/lib/barman
copying barman/output.py -> build/lib/barman
copying barman/__init__.py -> build/lib/barman
copying barman/remote_status.py -> build/lib/barman
copying barman/xlog.py -> build/lib/barman
copying barman/lockfile.py -> build/lib/barman
copying barman/postgres.py -> build/lib/barman
copying barman/server.py -> build/lib/barman
copying barman/cli.py -> build/lib/barman
copying barman/version.py -> build/lib/barman
copying barman/compression.py -> build/lib/barman
copying barman/wal_archiver.py -> build/lib/barman
copying barman/infofile.py -> build/lib/barman
copying barman/exceptions.py -> build/lib/barman
copying barman/hooks.py -> build/lib/barman
copying barman/copy_controller.py -> build/lib/barman
copying barman/command_wrappers.py -> build/lib/barman
running build_scripts
creating build/scripts-2.7
copying and adjusting bin/barman -> build/scripts-2.7
changing mode of build/scripts-2.7/barman from 644 to 755
running install_lib
creating /usr/lib/python2.7/site-packages/barman
copying build/lib/barman/utils.py -> /usr/lib/python2.7/site-packages/barman
copying build/lib/barman/fs.py -> /usr/lib/python2.7/site-packages/barman
copying build/lib/barman/retention_policies.py -> /usr/lib/python2.7/site-packages/barman
copying build/lib/barman/diagnose.py -> /usr/lib/python2.7/site-packages/barman
copying build/lib/barman/backup.py -> /usr/lib/python2.7/site-packages/barman
copying build/lib/barman/recovery_executor.py -> /usr/lib/python2.7/site-packages/barman
copying build/lib/barman/backup_executor.py -> /usr/lib/python2.7/site-packages/barman
copying build/lib/barman/config.py -> /usr/lib/python2.7/site-packages/barman
copying build/lib/barman/process.py -> /usr/lib/python2.7/site-packages/barman
copying build/lib/barman/output.py -> /usr/lib/python2.7/site-packages/barman
copying build/lib/barman/__init__.py -> /usr/lib/python2.7/site-packages/barman
copying build/lib/barman/remote_status.py -> /usr/lib/python2.7/site-packages/barman
copying build/lib/barman/xlog.py -> /usr/lib/python2.7/site-packages/barman
copying build/lib/barman/lockfile.py -> /usr/lib/python2.7/site-packages/barman
copying build/lib/barman/postgres.py -> /usr/lib/python2.7/site-packages/barman
copying build/lib/barman/server.py -> /usr/lib/python2.7/site-packages/barman
copying build/lib/barman/cli.py -> /usr/lib/python2.7/site-packages/barman
copying build/lib/barman/version.py -> /usr/lib/python2.7/site-packages/barman
copying build/lib/barman/compression.py -> /usr/lib/python2.7/site-packages/barman
copying build/lib/barman/wal_archiver.py -> /usr/lib/python2.7/site-packages/barman
copying build/lib/barman/infofile.py -> /usr/lib/python2.7/site-packages/barman
copying build/lib/barman/exceptions.py -> /usr/lib/python2.7/site-packages/barman
copying build/lib/barman/hooks.py -> /usr/lib/python2.7/site-packages/barman
copying build/lib/barman/copy_controller.py -> /usr/lib/python2.7/site-packages/barman
copying build/lib/barman/command_wrappers.py -> /usr/lib/python2.7/site-packages/barman
byte-compiling /usr/lib/python2.7/site-packages/barman/utils.py to utils.pyc
byte-compiling /usr/lib/python2.7/site-packages/barman/fs.py to fs.pyc
byte-compiling /usr/lib/python2.7/site-packages/barman/retention_policies.py to retention_policies.pyc
byte-compiling /usr/lib/python2.7/site-packages/barman/diagnose.py to diagnose.pyc
byte-compiling /usr/lib/python2.7/site-packages/barman/backup.py to backup.pyc
byte-compiling /usr/lib/python2.7/site-packages/barman/recovery_executor.py to recovery_executor.pyc
byte-compiling /usr/lib/python2.7/site-packages/barman/backup_executor.py to backup_executor.pyc
byte-compiling /usr/lib/python2.7/site-packages/barman/config.py to config.pyc
byte-compiling /usr/lib/python2.7/site-packages/barman/process.py to process.pyc
byte-compiling /usr/lib/python2.7/site-packages/barman/output.py to output.pyc
byte-compiling /usr/lib/python2.7/site-packages/barman/__init__.py to __init__.pyc
byte-compiling /usr/lib/python2.7/site-packages/barman/remote_status.py to remote_status.pyc
byte-compiling /usr/lib/python2.7/site-packages/barman/xlog.py to xlog.pyc
byte-compiling /usr/lib/python2.7/site-packages/barman/lockfile.py to lockfile.pyc
byte-compiling /usr/lib/python2.7/site-packages/barman/postgres.py to postgres.pyc
byte-compiling /usr/lib/python2.7/site-packages/barman/server.py to server.pyc
byte-compiling /usr/lib/python2.7/site-packages/barman/cli.py to cli.pyc
byte-compiling /usr/lib/python2.7/site-packages/barman/version.py to version.pyc
byte-compiling /usr/lib/python2.7/site-packages/barman/compression.py to compression.pyc
byte-compiling /usr/lib/python2.7/site-packages/barman/wal_archiver.py to wal_archiver.pyc
byte-compiling /usr/lib/python2.7/site-packages/barman/infofile.py to infofile.pyc
byte-compiling /usr/lib/python2.7/site-packages/barman/exceptions.py to exceptions.pyc
byte-compiling /usr/lib/python2.7/site-packages/barman/hooks.py to hooks.pyc
byte-compiling /usr/lib/python2.7/site-packages/barman/copy_controller.py to copy_controller.pyc
byte-compiling /usr/lib/python2.7/site-packages/barman/command_wrappers.py to command_wrappers.pyc
running install_scripts
copying build/scripts-2.7/barman -> /usr/bin
changing mode of /usr/bin/barman to 755
running install_data
copying doc/barman.1 -> /usr/share/man/man1
copying doc/barman.5 -> /usr/share/man/man5
running install_egg_info
Writing /usr/lib/python2.7/site-packages/barman-2.4-py2.7.egg-info

रेपो से इंस्टाल करना

yum के माध्यम से निम्न प्रकार से भी इंस्टालेशन किया जा सकता है

[[email protected]~]$ yum install barman

आइए विभिन्न प्रकार के बैकअप पर एक नज़र डालें जो बर्मन सपोर्ट करता है

भौतिक हॉट बैकअप

बर्मन फिजिकल हॉट बैकअप का समर्थन करता है, जिसका अर्थ है, rsync पद्धति का उपयोग करके डेटाबेस की भौतिक डेटा फ़ाइलों और लेनदेन लॉग फ़ाइलों का ऑनलाइन बैकअप, जो संपीड़ित रूप में भी हो सकता है।

आइए हम बर्मन का उपयोग करके RSYNC बैकअप करने के चरणों और आदेशों पर एक नज़र डालें

#1 बर्मन के लिए PostgreSQL डेटाबेस कॉन्फ़िगरेशन फ़ाइल

[pgdb]
description="Main PostgreSQL server"
conninfo=host=pgserver user=postgres dbname=postgres
ssh_command=ssh [email protected]
archiver=on
backup_method = rsync

"pgdb" बर्मन के लिए Postgres डेटाबेस का पहचानकर्ता है और कॉन्फ़िगरेशन फ़ाइल का नाम .conf होना चाहिए जो /etc/barman.d/ में स्थित हो। जब बर्मन बैकअप कमांड निष्पादित किया जाता है, तो बर्मन pgdb.conf फ़ाइल में [pgdb] अनुभाग की तलाश करता है।

पैरामीटर backup_method लिए जाने वाले बैकअप के प्रकार को परिभाषित करता है। इस मामले में बैकअप_विधि rsync है।

नोट:बर्मन बैकअप कमांड के सफल होने के लिए, पासवर्ड रहित ssh प्रमाणीकरण को बर्मन और पोस्टग्रेज सर्वर के बीच कॉन्फ़िगर किया जाना चाहिए।

#2 postgresql.conf फ़ाइल पैरामीटर

wal_level=replica
archive_mode=on
archive_command=’rsync to <ARCHIVE LOCATION>’

बर्मन का बैकअप कमांड

#3 जांचें कि क्या बर्मन बैकअप करने के लिए तैयार है

[[email protected] pgdb]$ barman check pgdb
Server pgdb:
        PostgreSQL: OK
        is_superuser: OK
        wal_level: OK
        directories: OK
        retention policy settings: OK
        backup maximum age: OK (no last_backup_maximum_age provided)
        compression settings: OK
        failed backups: OK (there are 0 failed backups)
        minimum redundancy requirements: OK (have 4 backups, expected at least 0)
        ssh: OK (PostgreSQL server)
        not in recovery: OK
        archive_mode: OK
        archive_command: OK
        continuous archiving: OK
        archiver errors: OK

उपरोक्त आउटपुट कहता है कि बैकअप के साथ आगे बढ़ने के लिए सब कुछ "ठीक" है, जिसका अर्थ है कि आप बैकअप लेने के लिए अच्छे हैं।

उदाहरण के लिए, नीचे आउटपुट कहता है कि बैकअप नहीं लिया जा सकता क्योंकि बर्मन के अनुसार SSH काम नहीं कर रहा है -

[[email protected]  ~]$ barman check pgdb
Server pgdb:
        PostgreSQL: OK
        is_superuser: OK
        wal_level: OK
        directories: OK
        retention policy settings: OK
        backup maximum age: OK (no last_backup_maximum_age provided)
        compression settings: OK
        failed backups: OK (there are 0 failed backups)
        minimum redundancy requirements: OK (have 0 backups, expected at least 0)
        ssh: FAILED (Connection failed using '[email protected] -o BatchMode=yes -o StrictHostKeyChecking=no' return code 127)
        not in recovery: OK
        archive_mode: OK
        archive_command: OK
        continuous archiving: OK
        archiver errors: OK

#4 डेटाबेस बैकअप निष्पादित करें

[[email protected] ~]$ barman backup pgdb
Starting backup using rsync-exclusive method for server pgdb in /dbbackup/barman_backups/pgdb/base/20180816T153846
Backup start at LSN: 0/1C000028 (00000001000000000000001C, 00000028)
This is the first backup for server pgdb
WAL segments preceding the current backup have been found:
        00000001000000000000000B from server pgdb has been removed
        00000001000000000000000C from server pgdb has been removed
        00000001000000000000000D from server pgdb has been removed
        00000001000000000000000E from server pgdb has been removed
        00000001000000000000000F from server pgdb has been removed
        000000010000000000000010 from server pgdb has been removed
        000000010000000000000011 from server pgdb has been removed
        000000010000000000000012 from server pgdb has been removed
        000000010000000000000013 from server pgdb has been removed
        000000010000000000000014 from server pgdb has been removed
        000000010000000000000015 from server pgdb has been removed
        000000010000000000000016 from server pgdb has been removed
Starting backup copy via rsync/SSH for 20180816T153846
Copy done (time: 1 second)
This is the first backup for server pgdb
Asking PostgreSQL server to finalize the backup.
Backup size: 21.8 MiB
Backup end at LSN: 0/1C0000F8 (00000001000000000000001C, 000000F8)
Backup completed (start time: 2018-08-16 15:38:46.668492, elapsed time: 1 second)
Processing xlog segments from file archival for pgdb
        000000010000000000000016
        000000010000000000000017
        000000010000000000000018
        000000010000000000000019
        00000001000000000000001A
        00000001000000000000001B
        00000001000000000000001C
        00000001000000000000001C.00000028.backup

यह समझने के लिए कि क्या बर्मन बैकअप कमांड भी सफल होगा, नीचे कमांड मदद करता है -

वृद्धिशील बैकअप

बर्मन की एक और बड़ी क्षमता वृद्धिशील बैकअप लेने की क्षमता है। इसका मतलब है, पिछले पूर्ण डेटाबेस बैकअप के बाद से केवल बदले गए ब्लॉक का बैकअप लिया जा सकता है। उन डेटाबेस के लिए जो कम डेटा परिवर्तन से गुजरते हैं, उनका क्रमिक रूप से बैकअप लेने से संसाधन उपयोग कम हो सकता है।

यह काफी हद तक rsync और हार्ड-लिंक पर निर्भर करता है। नीचे वृद्धिशील बैकअप के लाभ दिए गए हैं -

  • दैनिक बैकअप समय को काफी कम कर देता है
  • बैक-अप किए जा रहे डेटा की मात्रा कम हो जाती है क्योंकि केवल बदले गए डेटा ब्लॉक का बैकअप लिया जाएगा, जो बदले में नेटवर्क बैंडविड्थ, डिस्क स्थान, I/O आदि जैसे बुनियादी ढांचे के संसाधनों के उपयोग को कम करता है।
  • यदि आप एक बहुत अच्छा आरटीओ प्राप्त करने के बाद हैं, तो यह वह विशेषता है जिसकी आपको तलाश होगी

वृद्धिशील बैकअप के लिए आदेश काफी समान हैं। विकल्प backup_method=rsync . के साथ लिए गए पहले बैकअप के बाद कोई भी बाद का बैकअप वृद्धिशील बैकअप होंगे और बर्मन pg_recievexlog उपयोगिता का उपयोग करके WALs को खींचेंगे।

दूरस्थ डेटाबेस बैकअप और पुनर्प्राप्ति

बर्मन की यह क्षमता मेरी राय में डीबीए के लिए बेहद फायदेमंद है। पहली बात यह है कि डीबीए बैकअप के दौरान जितना संभव हो सके उत्पादन डेटाबेस सर्वर संसाधनों पर जोर देने से बचें और उन्हें दूरस्थ रूप से करना सबसे अच्छा विकल्प होगा। बर्मन pg_basebackup का लाभ उठाता है जो इसे स्क्रिप्टिंग और इसे स्वचालित करने में बहुत आसान बनाता है।

सामान्य तौर पर, स्वचालित बैकअप के लिए पारंपरिक रूप से उपलब्ध विकल्प होंगे -

  1. pg_basebackup
  2. टार कॉपी

एसएलए की मांगों को पूरा करने के लिए एक प्रभावी बैकअप रणनीति सुनिश्चित करने के लिए उपरोक्त दो विकल्पों में बहुत सारे विकास और परीक्षण शामिल हैं और कई टेबलस्पेस वाले बड़े डेटाबेस के लिए चुनौतियां पैदा कर सकते हैं।

बर्मन के साथ, यह बहुत आसान है। बरमन की एक और असाधारण क्षमता निरंतर वाल स्ट्रीमिंग है। आइए इसे थोड़ा और विस्तार से देखें।

आज श्वेतपत्र डाउनलोड करें क्लस्टरकंट्रोल के साथ पोस्टग्रेएसक्यूएल प्रबंधन और स्वचालन इस बारे में जानें कि पोस्टग्रेएसक्यूएल को तैनात करने, मॉनिटर करने, प्रबंधित करने और स्केल करने के लिए आपको क्या जानना चाहिए। श्वेतपत्र डाउनलोड करें

लगातार WAL स्ट्रीमिंग के साथ स्ट्रीमिंग बैकअप

यह बाजार में अन्य उपकरणों की तुलना में बरमन को सबसे अलग बनाता है। लाइव WAL फ़ाइलों को बर्मन का उपयोग करके दूरस्थ बैकअप स्थान पर लगातार स्ट्रीम किया जा सकता है। यह वह विशेषता है जिसे जानकर डीबीए उत्साहित होंगे। मैं इसके बारे में जानने के लिए उत्साहित था। मैन्युअल रूप से निर्मित स्क्रिप्ट या pg_basebackup और pg_receivewal जैसे उपकरणों के संयोजन के साथ इसे हासिल करना बेहद मुश्किल या असंभव के बगल में है। निरंतर WAL स्ट्रीमिंग के साथ, एक बेहतर RPO प्राप्त किया जा सकता है। यदि बैकअप रणनीति को सावधानीपूर्वक तैयार किया गया है, तो यह कहना अतिशयोक्ति नहीं होगी कि लगभग 0 RPO प्राप्त किया जा सकता है।

आइए स्ट्रीमिंग बर्मन बैकअप करने के लिए चरणों, आदेशों को देखें

#1 postgresql.conf पैरामीटर परिवर्तन

निम्नलिखित विन्यास postgresql.conf में किया जाना है

wal_level=replica
max_wal_senders = 2
max_replication_slots = 2
synchronous_standby_names = 'barman_receive_wal'
archive_mode=on
archive_command = 'rsync -a %p [email protected]:INCOMING_WAL_DIRECTORY/%f'
archive_timeout=3600 (should not be 0 or disabled)

#2 बर्मन का उपयोग करके प्रतिकृति स्लॉट बनाएं

बैकअप स्ट्रीमिंग के लिए प्रतिकृति स्लॉट महत्वपूर्ण है। यदि किसी भी कारण से WAL की निरंतर स्ट्रीमिंग विफल हो जाती है, तो सभी अन-स्ट्रीम किए गए WAL को हटाए बिना पोस्टग्रेज डेटाबेस पर बनाए रखा जा सकता है।

[[email protected] ~]$ barman receive-wal --create-slot pgdb
Creating physical replication slot 'barman' on server 'pgdb'
Replication slot 'barman' created

#3 बर्मन के लिए डेटाबेस सर्वर कॉन्फ़िगरेशन फ़ाइल कॉन्फ़िगर करें

बर्मन के लिए डेटाबेस पहचानकर्ता "pgdb" है। pgdb.conf नामक एक विन्यास फाइल /etc/barman.d/ स्थान में निम्नलिखित सामग्री के साथ बनाई जानी चाहिए

[pgdb]
description="Main PostgreSQL server"
conninfo=host=pgserver user=postgres dbname=postgres
streaming_conninfo=host=pgserver user=barman
backup_method=postgres
archiver=on
incoming_wals_directory=/dbbackups/barman_backups/pgdb/incoming
streaming_archiver=on
slot_name=barman

streaming_conninfo स्ट्रीमिंग बैकअप करने के लिए बर्मन को कॉन्फ़िगर करने के लिए पैरामीटर है
backup_method स्ट्रीमिंग बैकअप लेते समय "पोस्टग्रेज़" करने के लिए कॉन्फ़िगर किया जाना चाहिए
streaming_archiver "चालू" करने के लिए कॉन्फ़िगर किया जाना चाहिए
slot_name=barman यह पैरामीटर तब कॉन्फ़िगर किया जाना चाहिए जब आपको प्रतिकृति स्लॉट का उपयोग करने के लिए बारमैन की आवश्यकता हो। इस मामले में प्रतिकृति स्लॉट का नाम बर्मन है

एक बार कॉन्फ़िगरेशन हो जाने के बाद, यह सुनिश्चित करने के लिए बारमैन चेक करें कि स्ट्रीमिंग बैकअप सफल रहे।

#4 जांचें कि क्या बर्मन रिसीव-वाल ठीक चल रहा है

सामान्य तौर पर पहले बर्मन के लिए रिसीव-वाल कॉन्फ़िगरेशन परिवर्तन के तुरंत बाद काम नहीं करता है, त्रुटि हो सकती है और बर्मन चेक कमांड निम्नलिखित दिखा सकता है -

[[email protected]  archive_status]$ barman check pgdb
Server pgdb:
        PostgreSQL: OK
        is_superuser: OK
        PostgreSQL streaming: OK
        wal_level: OK
        directories: OK
        retention policy settings: OK
        backup maximum age: OK (no last_backup_maximum_age provided)
        compression settings: OK
        failed backups: OK (there are 0 failed backups)
        minimum redundancy requirements: OK (have 0 backups, expected at least 0)
        pg_basebackup: OK
        pg_basebackup compatible: OK
        pg_basebackup supports tablespaces mapping: OK
        archive_mode: OK
        archive_command: OK
        continuous archiving: OK
        pg_receivexlog: OK
        pg_receivexlog compatible: OK
        receive-wal running: FAILED (See the Barman log file for more details)
        archiver errors: OK

जब आप बर्मन रिसीव-वाल चलाते हैं, तो यह लटक सकता है। पहली बार रिसीव-वाल को ठीक से काम करने के लिए, नीचे दिए गए कमांड को निष्पादित किया जाना चाहिए।

[[email protected]  arch_logs]$ barman cron
Starting WAL archiving for server pgdb
Starting streaming archiver for server pgdb

अब, एक बारमैन दोबारा जांच करें, अब अच्छा होना चाहिए।

[[email protected]  arch_logs]$ barman check pgdb
Server pgdb:
        PostgreSQL: OK
        is_superuser: OK
        PostgreSQL streaming: OK
        wal_level: OK
        replication slot: OK
        directories: OK
        retention policy settings: OK
        backup maximum age: OK (no last_backup_maximum_age provided)
        compression settings: OK
        failed backups: OK (there are 0 failed backups)
        minimum redundancy requirements: OK (have 2 backups, expected at least 0)
        pg_basebackup: OK
        pg_basebackup compatible: OK
        pg_basebackup supports tablespaces mapping: OK
        archive_mode: OK
        archive_command: OK
        continuous archiving: OK
        pg_receivexlog: OK
        pg_receivexlog compatible: OK
        receive-wal running: OK
        archiver errors: OK

यदि आप देख सकते हैं, तो रिसीवएक्सलॉग स्टेटस शो ठीक है। यह उन मुद्दों में से एक है जिनका मैंने सामना किया।

#5 जांचें कि क्या बर्मन बैकअप करने के लिए तैयार है

[[email protected] ~]$ barman check pgdb
Server pgdb:
        PostgreSQL: OK
        is_superuser: OK
        PostgreSQL streaming: OK
        wal_level: OK
        replication slot: OK
        directories: OK
        retention policy settings: OK
        backup maximum age: OK (no last_backup_maximum_age provided)
        compression settings: OK
        failed backups: OK (there are 0 failed backups)
        minimum redundancy requirements: OK (have 4 backups, expected at least 0)
        pg_basebackup: OK
        pg_basebackup compatible: OK
        pg_basebackup supports tablespaces mapping: OK
        archive_mode: OK
        archive_command: OK
        continuous archiving: OK
        pg_receivexlog: OK
        pg_receivexlog compatible: OK
        receive-wal running: OK
        archiver errors: OK

#6 बरमन का उपयोग करके स्ट्रीमिंग स्थिति जांचें

[[email protected] pgdb]$ barman replication-status pgdb
Status of streaming clients for server 'pgdb':
  Current LSN on master: 0/250008A8
  Number of streaming clients: 1

  1. #1 Sync WAL streamer
     Application name: barman_receive_wal
     Sync stage      : 3/3 Remote write
     Communication   : TCP/IP
     IP Address      : 192.168.1.10 / Port: 52602 / Host: -
     User name       : barman
     Current state   : streaming (sync)
     Replication slot: barman
     WAL sender PID  : 26592
     Started at      : 2018-08-16 16:03:21.422430+10:00
     Sent LSN   : 0/250008A8 (diff: 0 B)
     Write LSN  : 0/250008A8 (diff: 0 B)
     Flush LSN  : 0/250008A8 (diff: 0 B)

उपरोक्त स्थिति का मतलब है, बरमन स्ट्रीमिंग बैकअप करने के लिए तैयार है। नीचे दिखाए अनुसार बैकअप करें -

[[email protected] arch_logs]$ barman backup pgdb
Starting backup using postgres method for server pgdb in /dbbackup/barman_backups/pgdb/base/20180816T160710
Backup start at LSN: 0/1F000528 (00000001000000000000001F, 00000528)
Starting backup copy via pg_basebackup for 20180816T160710
Copy done (time: 1 second)
Finalising the backup.
Backup size: 21.9 MiB
Backup end at LSN: 0/21000000 (000000010000000000000020, 00000000)
Backup completed (start time: 2018-08-16 16:07:10.401526, elapsed time: 1 second)
Processing xlog segments from file archival for pgdb
        00000001000000000000001F
        000000010000000000000020
        000000010000000000000020.00000028.backup
        000000010000000000000021
Processing xlog segments from streaming for pgdb
        00000001000000000000001F
        000000010000000000000020

केंद्रीकृत और सूचीबद्ध बैकअप

एक नेटवर्क वातावरण में कई सर्वरों पर कई डेटाबेस चलाने वाले वातावरण के लिए अत्यधिक फायदेमंद है। यह बर्मन की असाधारण विशेषता में से एक है। मैंने एक वास्तविक समय के वातावरण में काम किया है जहाँ-मुझे 100 डेटाबेस का प्रबंधन, प्रबंधन करना था और मुझे हमेशा केंद्रीकृत डेटाबेस बैकअप की आवश्यकता महसूस हुई और यही कारण है कि Oracle डेटाबेस बैकअप रणनीति के लिए Oracle RMAN लोकप्रिय हो गया और अब बर्मन उसे भर रहा है। PostgreSQL के लिए स्थान। बर्मन के साथ, DBA, s और DevOps इंजीनियर एक केंद्रीकृत बैकअप सर्वर बनाने की दिशा में काम कर सकते हैं, जहाँ-सभी डेटाबेस के लिए डेटाबेस बैकअप बनाए रखा जाता है, मान्य किया जाता है।

कैटलॉग बैकअप का अर्थ है, बर्मन एक केंद्रीकृत भंडार रखता है जहां-सभी बैकअप की स्थिति बनाए रखी जाती है। आप विशेष डेटाबेस के लिए उपलब्ध बैकअप की जांच कर सकते हैं जैसा कि नीचे दिखाया गया है -

[[email protected] ~]$  barman list-backup pgdb
pgdb 20180816T160924 - Thu Aug 16 16:09:25 2018 - Size: 22.0 MiB - WAL Size: 135.7 KiB
pgdb 20180816T160710 - Thu Aug 16 16:07:11 2018 - Size: 21.9 MiB - WAL Size: 105.8 KiB
pgdb 20180816T153913 - Thu Aug 16 15:39:15 2018 - Size: 21.9 MiB - WAL Size: 54.2 KiB
pgdb 20180816T153846 - Thu Aug 16 15:38:48 2018 - Size: 21.9 MiB - WAL Size: 53.0 KiB

बैकअप अवधारण नीति

अवधारण नीतियां डेटाबेस बैकअप के लिए परिभाषित किया जा सकता है। एक निश्चित अवधि के बाद बैकअप अप्रचलित हो सकते हैं और अप्रचलित बैकअप समय-समय पर हटाए जा सकते हैं।

यह सुनिश्चित करने के लिए कॉन्फ़िगरेशन फ़ाइल में विकल्प हैं कि अवधारण अवधि से अधिक होने पर बैकअप बनाए रखा जाता है और अप्रचलित बना दिया जाता है -

कॉन्फ़िगर करने के लिए पहला पैरामीटर है न्यूनतम_अतिरेक . यह सुनिश्चित करने के लिए कि बैकअप गलती से नहीं हटाया गया है, हमेशा न्यूनतम_रिडंडेंसी को>0 पर कॉन्फ़िगर करें।

उदाहरण:न्यूनतम_अतिरेक =1

  • अवधारण_नीति पैरामीटर यह निर्धारित करेगा कि आपदा पुनर्प्राप्ति SLAs की पूर्ति सुनिश्चित करने के लिए आधार बैकअप को कितने समय तक बनाए रखा जाना चाहिए।
  • wal_retention_policy पैरामीटर यह निर्धारित करेगा कि वाल बैकअप को कितने समय के लिए बनाए रखा जाना चाहिए। यह सुनिश्चित करता है कि अपेक्षित आरपीओ मिले।

डेटाबेस सर्वर के लिए मौजूदा अवधारण और अतिरेक नीतियों को बरमन चेक कमांड का उपयोग करके निम्न प्रकार से जांचा जा सकता है

[[email protected] ~]$ barman check pgdb
Server pgdb:
        PostgreSQL: OK
        is_superuser: OK
        PostgreSQL streaming: OK
        wal_level: OK
        replication slot: OK
        directories: OK
        retention policy settings: OK
        backup maximum age: OK (no last_backup_maximum_age provided)
        compression settings: OK
        failed backups: OK (there are 0 failed backups)
        minimum redundancy requirements: OK (have 4 backups, expected at least 0)
        pg_basebackup: OK
        pg_basebackup compatible: OK
        pg_basebackup supports tablespaces mapping: OK
        archive_mode: OK
        archive_command: OK
        continuous archiving: OK
        pg_receivexlog: OK
        pg_receivexlog compatible: OK
        receive-wal running: OK
        archiver errors: OK

समानांतर बैकअप और पुनर्प्राप्ति कई सीपीयू का उपयोग करके किया जा सकता है जो वास्तव में बैकअप और रिकवरी को तेजी से पूरा करता है। यह सुविधा TeraBytes तक के आकार वाले बहुत बड़े डेटाबेस के लिए फायदेमंद है।

बैकअप को समानांतर रूप से निष्पादित करने के लिए, डेटाबेस सर्वर कॉन्फ़िगरेशन फ़ाइल (जो /etc/barman.d/pgdb.conf फ़ाइल है) में निम्न विकल्प जोड़ें-

parallel_jobs = 1

मैं यह कहकर निष्कर्ष निकाल सकता हूं कि बर्मन एक उद्यम ग्रेड उपकरण है जो संभावित रूप से डीबीए को एक प्रभावी आपदा वसूली रणनीति तैयार करने में मदद कर सकता है।

संबंधित संसाधन PostgreSQL के लिए ClusterControl और जानें Pg_dump और pg_dumpall का उपयोग करके बैकअप PostgreSQL का उपयोग करना

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. सीरियल प्राथमिक कुंजी कॉलम का उपयोग करके सुरक्षित रूप से तालिकाओं का नाम बदलें

  2. मेरी पसंदीदा पोस्टग्रेएसक्यूएल क्वेरीज़ और वे क्यों मायने रखती हैं

  3. डेटाबेस क्वेरी करने के लिए Django प्रपत्र (मॉडल)

  4. पोस्टग्रेज़ दिनांक प्रतिनिधित्व को ISO 8601 स्ट्रिंग में बदलें

  5. स्पष्टीकरण द्वारा कस्टम आदेश