ویرگول
ورودثبت نام
مسعود سلطانی راد
مسعود سلطانی راد
خواندن ۶ دقیقه·۸ ماه پیش

پایگاه داده PostgreSQL: پشتیبان گیری و disaster recovery با BARMAN


BARMAN (مدیر پشتیبان گیری و بازیابی) یک ابزار مدیریت منبع باز برای پشتیبان گیری و disaster recoveryاز سرورهای PostgreSQL است. این امکان انجام پشتیبان گیری از راه دور از چندین سرور را فراهم می کند. ویژگی های Barman در زیر آمده است.

• ابزار منبع باز
• پشتیبان گیری از راه دور و بازیابی چندین سرور.
• کاتالوگ های پشتیبان.
• Incremental backupامکان پذیر است.
• شما می توانید سیاست های retention را تعریف کنید.
• آرشیو و فشرده سازی فایل های WAL و فایل های Backup.
• از هر دو پروتکل rsync یا postgresql پشتیبانی کنید.
• روش های پشتیبان گیری PostgreSQL به طور nutshell

قبل از رفتن به تنظیمات Barman، بیایید انواع پشتیبان‌گیری‌های موجود برای PostgreSQL و نحوه استفاده از آنها را مرور کنیم. مقاله ما در مورد پشتیبان گیری موثر است و یک نمای کلی از استراتژی های پشتیبان گیری ارائه می دهد.

روش پشتیبان گیری ارائه شده توسط PostgreSQL به دو نوع تقسیم می شود:

• پشتیبان گیری منطقی
• پشتیبان گیری فیزیکی

پشتیبان گیری منطقی شبیه به snapshots یک پایگاه داده است. با استفاده از ابزار pg_dump یا pg_dumpall ، می توان آنها را ایجاد کرد. یک پشتیبان گیری منطقی شامل موارد زیر است:
• از پایگاه های داده می توان به صورت جداگانه یا یکباره پشتیبان گیری کرد
• امکان پشتیبان گیری فقط از schemas، فقط داده ها، جداول فردی یا کل پایگاه داده (schemasو داده ها) وجود دارد.
• با استفاده از یک فرمت باینری اختصاصی یا یک اسکریپت ساده SQL، یک فایل پشتیبان ایجاد کنید
• با PostgreSQL، ابزار pg_restore برای بازیابی پایگاه های داده در دسترس است
• امکان بازیابی نقطه در زمان (PITR)وجود ندارد

در حالی که، پشتیبان‌گیری‌هایی که به صورت فیزیکی گرفته می‌شوند، فقط با فرمت باینری سروکار دارند و پشتیبان‌گیری در سطح فایل ایجاد می‌کنند.

پشتیبان گیری فیزیکی:
• پشتیبان‌گیری فیزیکی، بازیابی لحظه به لحظه (PITR) را ارائه می‌کند
• از محتویات دایرکتوری داده PostgreSQL و فایل‌های WAL (Write Ahead Log) با پشتیبان‌گیری فیزیکی پشتیبان‌گیری می‌شود.
• مقدار بیشتری از فضای دیسک را می گیرد
• از دستورات pg_start_backup و pg_stop_backup استفاده می شود و بنابراین پشتیبان گیری فیزیکی را در مقایسه با پشتیبان گیری منطقی کمی پیچیده تر می کند.
• برخلاف پشتیبان‌گیری‌های منطقی، پایگاه‌های اطلاعاتی فردی، فقط schemas و غیره در پشتیبان‌گیری فیزیکی پشتیبان‌گیری نمی‌شوند، همه یا هیچ هستند.

نحوه کار پشتیبان گیری Barman
Barman یک روش استاندارد برای پشتیبان‌گیری انجام می‌دهد، برخلاف آنچه DBAهای PostgreSQL به طور سنتی انجام می‌دهند، مانند نوشتن اسکریپت‌های پشتیبان و زمان‌بندی کارهای Cron برای اجرای پشتیبان‌گیری فیزیکی.
Barman در پایتون نوشته شده است و یک روش ساده و بصری برای پشتیبان گیری فیزیکی و بازیابی برای PostgreSQL instance را به شما ارائه می دهد.
Barman یا Backup and Recovery Manager یک ابزار رایگان و منبع باز پشتیبان گیری PostgreSQL است. برخی از مزایای استفاده از بارمن عبارتند از:
• Barman کاملا رایگان است و یک برنامه به خوبی نگهداری شده همراه با پشتیبانی حرفه ای از فروشنده است
• هنگام استفاده از Barman نیازی به نوشتن و آزمایش اسکریپت های پیچیده و cron job نیست
• چندین instance را می توان در یک مکان مرکزی پشتیبان گیری کرد
• بازیابی به همان PostgreSQL یا instance های مختلف امکان پذیر است
• مکانیزم فشرده سازی برای به حداقل رساندن ترافیک شبکه و فضای دیسک استفاده می شود

پیکربندی BARMAN
مورد نیاز:
• یک سرور برای بارمن با دسترسی به اینترنت.
• SSH-Key برای احراز هویت بدون رمز عبور برای کاربران Barman و Postgres.


معماری Barman


نصب و پیکربندی
مرحله ۱٫ ابتدا محیط پایگاه داده خود را با نصب EDB Postgres بر روی سرور اصلی-db راه اندازی می کنیم.
اطمینان حاصل کنید که EDB Postgres را روی سرور اصلی-db نصب کرده اید و اجازه دسترسی از Barman را داده اید.

مستند مدیریت افزونه ها در Postgresql

مرحله ۲٫ مخزن PostgreSQL را تأیید و نصب کنید
در مرحله بعد، ما یک مخزن که در مورد EnterpriseDB Postgres مورد نیاز است را نصب می کنیم و همان را تأیید می کنیم.
نصب :-

# yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm

بررسی : –

# yum repolist


مرحله ۳٫ PostgreSQL Binary را روی سرور Barman نصب کنید

# yum install -y postgresql15

مرحله ۴٫ پایتون ۳٫۶ را نصب کنید و تأیید کنید

# yum install -y https://repo.ius.io/ius-release-el7.rpm

#yum update

# yum install -y python36u python36u-libs python36u-devel python36u-pip

ارتباط با ما

جهت دریافت خدمات مشاوره، آموزش و نگهداری پایگاه داده Postgresql با ما در ارتباط باشد

مرحله ۵٫ Barman را نصب و تأیید کنید
اکنون Barman را روی سرور پشتیبان نصب می کنیم، که هم بک آپ های ما را کنترل و ذخیره می کند.

# yum install barman -y

# id barman

# barman –version


مرحله ۶٫ رمز عبور user barman و Postgres را در هر دو سرور تغییر دهید

# passwd barman

# passwd postgres

مرحله ۷٫ user barman را به عنوان superuser در کلاستر پایگاه داده ایجاد کنید

postgres=# create user barman superuser password ‘Admin’;


مرحله ۸٫ یک اتصال بدون رمز عبور بین سرور Postgres و سرور بارمن را پیکربندی کنید
بیایید کلیدهای SSH را برای یک اتصال امن بدون رمز عبور بین سرور اصلی-db-سرور پشتیبان بارمن-سرور در این بخش ایجاد کنیم.
این برای اطمینان از این است که PostgreSQL و Barman می توانند در حین پشتیبان گیری و بازیابی با یکدیگر “گفتگو” کنند.
روی سرور ‌Brman

# su – barman

$ ssh-keygen -t rsa

$ ls -ltr .ssh

$ ssh-copy-id -i ~/.ssh/id_rsa.pub postgres@192.168.1.20

$ ssh ‘postgres@192.168.1.20’

در سرور Postgres

# su – barman

$ ssh-keygen -t rsa

$ ls -ltr .ssh

$ ssh-copy-id -i ~/.ssh/id_rsa.pub barman@192.168.1.21

$ ssh ‘barman@192.168.1.21’


اکنون Barman را برای پشتیبان گیری از سرور اصلی PostgreSQL شما پیکربندی می کنیم.
فایل پیکربندی اصلی برای BARMAN /etc/barman.conf است. این فایل شامل یک بخش برای پارامترهای جهانی و بخش های جداگانه برای هر سروری است که می خواهید از آن نسخه پشتیبان تهیه کنید. فایل پیش‌فرض شامل بخشی برای یک سرور inctance PostgreSQLبه نام main است که در آن توضیح داده می‌شود. می توانید از آن به عنوان راهنما برای راه اندازی سرورهای دیگری که می خواهید از آنها نسخه پشتیبان تهیه کنید استفاده کنید.
مرحله ۹٫ از فایل پیکربندی موجود نسخه پشتیبان تهیه کنید.

# ls -ltr /etc/barman.conf

# cp /etc/barman.conf /etc/barman_bkp.conf

# vi /etc/barman.conf

compression = gzip

immediate_checkpoint = true

basebackup_retry_times = 3

reuse_backup = link


مرحله ۱۰٫ فایل پیکربندی سرور را در سرور بارمن پیکربندی کنید.
در پارامتر conninfo فایل پیکربندی، هاست، کاربر، پورت، dbname و رمز عبور را مشخص می کنیم. همچنین باید ssh_command را که سرور برای اتصال استفاده می کند، ارائه دهید.

# cd /etc/barman.d

# vi test-pgsql.conf

[test-pgsql]

description = “test-pgsql backup config”

ssh_command = ssh postgres@192.168.1.20

conninfo = host=192.168.1.20 user=barman port=5488 dbname=edb password=Admin

backup_options = concurrent_backup

backup_method = rsync

archiver = on


مرحله ۱۱٫ مطمئن شوید که دستور بایگانی در فایل postgresql.conf در سرور Postgres مشخص شده است.

# vi postgresql.conf

archive_command = ‘test ! -f barman@192.168.1.21:/var/lib/barman/test-pgsql/incoming/%f && rsync -a %p barman@192.168.1.21:/var/lib/barman/test-pgsql/incoming/%f’

# systemctl restart edb-as-96.service

مرحله ۱۲٫ در سرور ‌Barman، سوئیچ WAL را انجام دهید.

# barman switch-xlog –force –archive 192.168.1.20

مرحله ۱۳٫ تنظیمات سرور را در سرور Barman تأیید کنید
مهم است که مطمئن شوید سرور Barman به درستی پیکربندی شده است.

# barman list-server

# barman show-server test-pgsql

# barman check test-pgsq


مرحله ۱۴٫ مکان پشتیبان Barman
پس پشتیبان کجا ذخیره می شود؟ برای یافتن پاسخ، محتویات دایرکتوری /var/lib/barman/ را فهرست کنید


چند نسخه پشتیبان گرفته شده از سرور Barman ضمیمه شده است

# barman backup test-pgsql


در اینجا یک نمونه پشتیبان از نسخه پشتیبان افزایشی است.
یک نسخه پشتیبان افزایشی، نسخه‌ای است که در آن کپی‌های متوالی داده‌ها فقط شامل بخشی است که از زمان تهیه نسخه پشتیبان قبلی تغییر کرده است.


منبع مستند

postgresqlخدمات postgresqlمشاوره postgresqlpostgresql barman backupمسعود سلطانی راد
چند سالی هست در حوزه داده ها ( نگهداری و تحلیل آنها) فعالیت دارم و همیشه سعی کردم آموخته هایم رو به اشتراک بگذارم soltanirad@artarad.ir www.artarad.ir
شاید از این پست‌ها خوشتان بیاید