در این مفاله به آموزش نصب دیتابیس postgresql و راه اندازی replication آن می چردازیم.
توجه کنید که این مقاله برای سیستم عامل 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
salam mishe baram kelas khososi postgresql bezarid?
سلام
کلاس در چه سطحی مد نظرتان هستش؟!