نصب دیتابیس postgresql و راه اندازی replication آن

در این مفاله به آموزش نصب دیتابیس postgresql و راه اندازی replication آن می چردازیم.

 

postgresqllogo-580x358

 

توجه کنید که این مقاله برای سیستم عامل debian نوشته شده است ولی شما میتوانید از قسمت تنظیمات replication در centos و freebsd هم استفاده کنید.

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

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

apt-get update
apt-get install postgresql postgresql-contrib

بعد از نصب postgresql نوبت به راه اندازی replication آن میرسد. ما در اینجا متند master/slave را توضیح خواهیم داد.

نکته: برای راه اندازی متد master/slave به دو ماشین که رو هر دو بسته نرم افزاری postgresql نصب باشد نیاز داریم.

در مرحله دوم اقدام به تنظیم نود master میکنیم. برای این منظور فایل تنظیمات اصلی Postgeresql را با ویرایشکر محبوب خودمان باز میکنیم .

vim /etc/postgresql/9.6/main/postgresql.conf

سپس خطی را که با عبارت listen_addresses شروع شده را پیدا کرده و از حالت توضیحات خارج و ویرایش میکنیم. در زیر نمونه ای از این تنظیمات آورده شده است.

listen_addresses = <master_server_IP_address>

توجه: شما باید به جای عبارت master_server_IP_address آدرس IP نود مسترتان را قرار دهید.

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

wal_level = hot_standby

سپس خط حاوی عبارت synchronous_commit را بصورت زیر ویرایش میکنیم

synchronous_commit = local

سپس دو خط زیر را در فایل تنظیمات بصورت زیر ویرایش میکنیم

max_wal_senders = 2
wal_keep_segments = 10

فایل تنظیمات را ذخیره کرده و بیرون می آییم.

سپس فایل pg_hba.conf را با ویرایش گر محبوب خوب یاز میکنیم . محتویات زیر را در آن قرار می دهیم.

vim /etc/postgresql/9.6/main/pg_hba.conf

# Localhost
host replication replica 127.0.0.1/32 md5

# PostgreSQL Master IP address
host replication replica <master_IP_address/32> md5

# PostgreSQL SLave IP address
host replication replica <slave_IP_address/32> md5

توجه داشته باشید که باید عبارت master_IP_address و slave_IP_address را به ترتیب با IP ماشین master و slave را جایگزین کنید.

در آخر برای اینکه تنظیمات روی سیستم اعمال شود سرویس را restart میکنیم .

systemctl restart postgresql

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

su – postgres
$ psql

postgres=# CREATE USER replica REPLICATION LOGIN ENCRYPTED PASSWORD ‘<usr_strong_pwd>’;

با اجرای دستورات بالا یک کاربر در Postgresql به نام replica ساخته میشود. ( شما میتوانید پیورد دلخواه خود را در دستور بالا جایگزین کنید)

مرحله سوم راه اندازی نود slave

برای این منظور قایل تنظیمات اصلی postgresql را باز کرده و بصورت زیر ویرایش میکنیم .

vim /etc/postgresql/9.6/main/postgresql.conf

listen_addresses = <slave_IP_address>
wal_level = hot_standby
synchronous_commit = local
max_wal_senders = 2
wal_keep_segments = 10
hot_standby = on

بعد از اینکه تنظمیات بالا را انجام دادیم باید فایل های نود Master را به نود slave بیاوریم و تنظیمات مربوط به کاربری که برای postgresql ساختیم را برای آن اجرا کنیم.

به همین منظور بصورت زیر عمل کنیم.

در نود slave ابتدا به کاربر سیستمی postgresql وارد میشویم.

su – postgres

و سپس از پوشه main آن یک backup میگیریم

cd/var/lib/postgresql/9.6/
mv main main_bak

بعد از گرفتن بک آپ یک پوشه main جدید میسازیم و به آن دسترسی کامل کاربر را میدهیم.

mkdir main
chmod 700 main

سپس با استفاده از دستور pg_basebackup اقدام به انتقال data نود master به نود slave میکنیم

pg_basebackup -h master_IP_address -U replica -D /var/lib/postgresql/9.6/main -P –xlog

سپس فایل recovery.conf را در داخل پوشه main میسازیم و محتویات زیر را در آن قرار میدهیم

standby_mode = ‘on’
primary_conninfo = ‘host=<Master_IP_address> port=5432 user=replica password=<usr_strong_pwd>’
trigger_file = ‘/tmp/postgresql.trigger.5432’

برای امنیت بیشتر دسترسی فایل recovery.conf را بصورت زیر تغییر میدهیم.

chmod 600 recovery.conf

و در آخر برای اینکه تنظیمات بر روی سرویس اعمال شود آن را restart میکنیم.

systemctl start postgresql

2 دیدگاه در n “نصب دیتابیس postgresql و راه اندازی replication آن

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

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