راه اندازی replication در postgresql با bucardo

در این مقاله به راه اندازی replication در postgresql با bucardo می پردازیم.

همانطور که میدانید برای راه اندازی replication در postgresql راه های زیادی وجود دارد که یک مورد را در مقالات قبل ( اینجا ) میتوانید بخوانید. اما یکی از راه های بسیار کارآمد که به شما این امکان را میدهد بضورت زنده از یک جدول یا دیتابیستان backup داشته باشید استفاده از bucardo می باشد.

در زیر به آموزش نصب و راه اندازی این ابزار می پردازیم 

توجه: برای راه اندازی این ابزار نیاز به نصب و راه اندازی دیتابیس postgresql دارید که میتوانید آموزش آن را از اینجا بخوانید.

توجه داشته باشید که برای راه اندازی این ابزار حداقل نیاز به دو ماشین دارید که از این به بعد nowlearn1 و nowlearn2 نامیده میشوند.

نکته: ماشین های nowlearn1 و nowlearn2 را در فایل /etc/hosts تعریف کنید.

بعد از نصب postgresql بر روی نودهای خود نیاز به نصب یکسری وابستگی های نرم افزاری جهت راه اندازی ابزار bucardo داریم . برای این منظور دستور زیر را اجرا میکنیم .

apt-get install libdbix-safe-perl libdbd-pg-perl libboolean-perl build-essential postgresql-plperl-9.4

توجه داشته باشید که دستور بالا را بر روی هر دو ماشین اجرا کنید.

حالا نوب به دانلود و نصب bucardo بر روی ماشین nowlearn1 میشود. برای این منظور ابتدا bucardo را دانلود و از حالت فشرده خارج میکنیم

wget https://github.com/bucardo/bucardo/archive/5.4.0.tar.gz
tar xvfz 5.4.0.tar.gz

بعد از اینکه فایل را از حالت فشرده خارج کردیم نوبت به کامپایل و نصب ان میرسد. برای این منظور بترتیب زیر عمل میکنیم 

perl Makefile.PL
make
make install
mkdir /var/run/bucardo
mkdir /var/log/bucardo

بعد از اینکه مراحل بالا به اتمام رسید نوبت به آن میرسد که روی postgresql کاربر مربوط به bucardo را بسازیم. برای این منظور بصورت زیر عمل میکنیم.

CREATE USER bucardo SUPERUSER PASSWORD ‘<PASSWORD>’;
CREATE DATABASE bucardo;
GRANT ALL ON DATABASE bucardo TO bucardo;

سپس باید پسورد کاربر postgres را تغییر دهیم . برای این منظور دستور زیر را اجرا میکنیم

ALTER USER postgres PASSWORD ‘<PASSWORD>’;

نکته: برای اجرای دستورات بالا باید به shell خود postgresql لاگین کرده باشید.

بعد از انجام کارهای بالا نوبت این میرسد اطلاعات مربوط به کاربرانی که ساخته ایم را در یک فایل برای ایتفاده bucardo قرار دهیم.برای این منظور دستورات زیر را اجرا می کنیم.

vim ~/.pgpass

nowlearn1:5432:*:postgres:<PASSWORD>
nowlearn1:5432:*:bucardo:<PASSWORD>

chmod 0600 ~/.pgpass

حالا نوبت به نصب bucardo میرسد. برای این منظور دستور زیر را اجرا میکنیم 

bucardo -h nowlearn1 install

نکته: دیتابسی که میخواهیم در دو ماشین به صورت زنده backup گرفته شود به نام nowlearn_db میشناسیم. (فرض میگیریم که این دیتابیس قبلا به سییستم اضافه شده است)

حالا با استفاده از دستور زیر دیتابیس nowlearn_db را به ابزار bucardo برای گرفتن بک آپ اضافه میکنیم.

bucardo -h nowlearn1 -U bucardo add db main db=nowlearn_db user=bucardo pass=nowlearn1_pass host=nowlearn1
bucardo -h nowlearn1 -U bucardo add db bak1 db=nowlearn_db user=bucardo pass=nowlearn2_pass host=nowlearn2

این کار ما باعث میشود که اطلاعات مربوط به دیتابیس و ماشین های Postgresqlما در دیتابیس bucardo ذخیره گردد.

حالا توبت له آن میرسد که به bucardo بگوییم از کدام table ها بک اپ بگیرد.برای این منظور دو حالت داریم. اگر بخواهیم از همه table ها بک آپ بگیرد دستور زیر را اجرا میکنیم

bucardo -h nowlearn1 -U bucardo add all tables db=main relgroup=nowlearn_db_relgroup

و اگر بخواهیم فقط یک table خاص را بک آپ بگیریم دستور زیر را اجرا میکنیم

bucardo -h nowlearn1 -U bucardo add table table_name db=main relgroup=nowlearn_db_relgroup

توجه داشته باشید که شما بسته به نیاز خود باید دستورات بالا را ویرایش کنید.

بعد باید یک گروه برای بک آپ خود بسازیم. برای این منظور بصورت زیر عمل میکنیم

bucardo -h nowlearn1 -U bucardo add dbgroup nowlearn_db_dbgroup main:source bak1:target

بعد از مشخص کردن مواردی که میخواهیم بک آپ داشته باشیم نوبت به ساختن sync روی bucardo میرسد. برای این منظور دستوری مانند زیر را اجرا میکنیم

bucardo -h nowlearn1 -U bucardo add sync nowlearn_db_sync dbgroup=nowlearn_db_dbgroup relgroup=nowlearn_db_relgroup conflict_strategy=bucardo_source onetimecopy=2 autokick=0

بعد از انجام کارهای بالا تنظیمات مربوط به bucardo انجام شده و نوبت به start کردن آن میرسد. برای این منظور دستور زیر را اجرا میکنیم

bucardo -h nowlearn1 -U bucardo -P <PASSWORD> start

 

 

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *