دیتابیس مدیریتشده آروانکلاد سرویسی ابری برای ایجاد و مدیریت آسان دیتابیسهاست. یکی از کاربردهای مهم این سرویس، استفاده از آن در قالب Replica یا Subscriber برای افزایش پایداری و دسترسپذیری دادههاست. در این حالت، یک نسخهی فعال و بهروز از دادههای دیتابیس اصلی در دیتابیس ابری آروانکلاد نگهداری میشود و هنگام بروز مشکل برای دیتابیس اصلی، امکان استفاده از Replica وجود دارد.
یکی از بهترین حالات استفاده از این قابلیت ایجاد دیتابیس جایگزین در محل جغرافیایی متفاوت و حتا زیرساخت متفاوت از دیتابیس اصلی است تا ریسک بلایای طبیعی یا خطاهای انسانی به حداقل برسد.
در این راهنما با مراحل راهاندازی رپلیکای مدیریتشدهی آروان در هر دو انجین MySQL و PostgreSQL
رپلیکیشن MySQL با دیتابیس ابری آروانکلاد
در MySQL، قابلیت Replication به شما اجازه میدهد دادههای دیتابیس اصلی (Primary) را روی یک دیتابیس دیگر (Replica) کپی و همگامسازی کنید. این روش برای افزایش پایداری و دسترسپذیری دادهها کاربرد دارد تا هنگام بروز مشکل برای دیتابیس اصلی، بتوان از Replica استفاده کرد.
توجه داشته باشید پیش از اعمال هرگونه تغییر در نود اصلی (Primary)، باید پیامدهای آن را بررسی کنید.
تغییرات در دیتابیس اصلی (Primary)
برای برقراری رپلیکیشن، باید تنظیمات زیر را روی دیتابیس اصلی خود اعمال کنید:
تنظیمات کانفیگ سرور
برای ایجاد رپلیکیشن در MySQL، لازم است برخی متغیرهای اصلی در فایل کانفیگ (my.cnf یا mysqld.cnf) بهدرستی مقداردهی شوند:
server-id
مقدار این متغیر باید یکتا باشد و با مقدار دیتابیس ساختهشده روی آروان متفاوت باشد.
در دیتابیس آروان مقدار server_id بهطور تصادفی تنظیم میشود. برای مشاهدهی آن روی دیتابیس ابری از دستور زیر استفاده کنید:
mysql> SHOW VARIABLES LIKE 'server_id';
مقدار server_id سرور اصلی خود را باید متفاوت از این مقدار قرار دهید.
تغییر این متغیر بهشکل پویا (dynamic) امکانپذیر است، اما برای فعالشدن رپلیکیشن باید دیتابیس اصلی ریاستارت شود.
log-bin
فعالسازی binary logging روی دیتابیس اصلی.
gtid_mode
باید روی ON تنظیم شود تا از GTID replication استفاده شود.
binlog_format
باید روی ROW تنظیم شود تا تغییرات سطرها در binlog ثبت شود.
binlog_expire_logs_seconds
مدتزمان نگهداری binlogها روی سرور اصلی را مشخص میکند.
پیشنهاد میشود مقداری مثل 86400 (۲۴ ساعت) تعیین شود تا با وجود تأخیر احتمالی، لاگها همچنان برای ارسال به Replica موجود باشند.
binlog_expire_logs_auto_purge
مقدار این متغیر را روی ON تنظیم کنید تا binlogهای منقضیشده بهطور خودکار پاک شوند.
نمونهی کانفیگ نهایی:
[mysqld]
binlog_format=ROW
gtid_mode=ON
log_bin
server_id="different_server_id_from_Arvan_DBaaS"
binlog_expire_logs_seconds=86400
binlog_expire_logs_auto_purge=ON
توجه: برای اعمال تغییرات ممکن است نیاز به ریاستارت سرور اصلی داشته باشید.
ایجاد کاربر مخصوص رپلیکیشن
روی دیتابیس اصلی، یک کاربر با دسترسی REPLICATION ایجاد کنید:
CREATE USER 'repl_user'@'%' IDENTIFIED BY 'SecurePassword123!';
GRANT REPLICATION SLAVE ON *.* TO 'repl_user'@'%';
FLUSH PRIVILEGES;
توصیه میشود این کاربر را به آیپی دیتابیس Replica محدود کنید، اما در نظر داشته باشید که در حالت HA یا Failover ممکن است آیپی تغییر کند.
بکاپ از دیتابیس اصلی
با استفاده از mysqldump از دیتابیس اصلی بکاپ بگیرید:
mysqldump --single-transaction --master-data=1 --databases db1 db2 > primary-dump.sql
تغییرات در دیتابیس ابری آروانکلاد (Replica)
بازیابی بکاپ
mysql -u base_user -p -h "arvan-dbaas-host" < primary-dump.sqlاتصال Replica به Primary
CHANGE MASTER TO MASTER_HOST = 'Your_Primary_DB_IP', MASTER_USER = 'repl_user', MASTER_PASSWORD = 'SecurePassword123!', MASTER_AUTO_POSITION=1;شروع رپلیکیشن
START SLAVE;بررسی وضعیت
SHOW SLAVE STATUS\Gمقادیر زیر باید Yes باشند:
Slave_IO_Running
Slave_SQL_Running
همچینین Seconds_Behind_Master: 0 نشاندهندهی همگام بودن Replica و دیتابیس اصلی است.
استفاده از Replica آروانکلاد در نقش دیتابیس اصلی در مواقع بحرانی
اگر دیتابیس اصلی از دسترس خارج شد، میتوانید Replica آروان را به Primary تبدیل کنید. برای این کار باید ابتدا فرآیند رپلیکیشن را متوقف کنید:
STOP SLAVE;
سپس اطلاعات مربوط به دیتابیس اصلی را حذف کنید تا از اتصال دوبارهی دیتابیس ابری آروان در قالب رپلیکا جلوگیری شود:
RESET SLAVE ALL;
در نهایت با تغییر پارامترهای اتصال اپلیکیشن خود به مقادیر دیتابیس ابری آروان که داخل پنل در اختیار شما قرار داده میشود از این دیتابیس بهعنوان دیتابیس اصلی خود استفاده کنید.
نکات مهم در رپلیکیشن MySQL
فایروال: پورت 3306 دیتابیس اصلی باید برای دیتابیس آروانکلاد باز باشد.
زمان: از همگام بودن زمان سرور اصلی و Replica مطمین شوید.
مدیریت لاگها: سرور اصلی باید binlogها را تا ارسال به Replica نگهداری کند.
نسخه MySQL: در نسخههای جدیدتر از دستورهای STOP REPLICA و START REPLICA بهجای دستورهای دارای عبارت SLAVE استفاده میشود. به شما در این مسیر کمک میکند.
رپلیکیشن PostgreSQL با دیتابیس ابری آروانکلاد (Publisher/Subscriber)
مکانیزم Logical Replication در PostgreSQL این امکان را به شما میدهد که اطلاعات را از یک دیتابیس (نود اصلی یا Publisher) به دیتابیس دیگر (نود فرعی یا Subscriber) کپی و همگامسازی کنید. این روش برای رپلیکای فقط خواندنی، توسعه و تست، یا بکاپ زنده بسیار کاربردی است.
توجه داشته باشید پیش از اعمال هرگونه تغییر در نود اصلی (Primary)، باید پیامدهای آن را بررسی کنید.
تغییرات در دیتابیس اصلی (Publisher)
فعالسازی Logical Replication با دسترسی root فایل postgresql.conf را باز و مقدار زیر را تنظیم کنید:
wal_level = logicalسپس دیتابیس را ریاستارت کنید.
برای بررسی اعمال صحیح این مقدار، دستور زیر را وارد کنید:
SHOW wal_level;خروجی باید logical باشد.
ایجاد Publication برای مشخص کردن تیبلهای مورد نظر جهت replication این دستور را اجرا کنید:
CREATE PUBLICATION test_subscription FOR TABLE public.cars;
تغییرات در دیتابیس آروانکلاد (Subscriber)
ایجاد دیتابیس و تیبلها ساختار تیبلها در این دیتابیس باید دقیقن مشابه Publisher باشد. برای نمونه، برای رپلیکیشن جدول زیر، باید یک تیبل با همین ساختار در دیتابیس Subscriber نیز وجود داشته باشد:
CREATE TABLE public.cars ( id serial PRIMARY KEY, brand text, model text, year int );ایجاد Subscription
برای اتصال به دیتابیس اصلی و شروع دریافت دادهها از دستورهای زیر استفاده کنید:
CREATE SUBSCRIPTION test_subscription CONNECTION 'host=primary-address port=5432 user=your-primary-user password=your-primary-password dbname=default' PUBLICATION test_subscription WITH ( copy_data = true, create_slot = true, enabled = true );توجه داشته باشید که یوزری که در این CONNECTION استفاده میکنید باید روی Publisher به دیتابیس و تیبلهای مربوطه دسترسی کامل داشته باشد.
بررسی وضعیت Subscription
SELECT * FROM pg_stat_subscription;حذف Subscription (هنگام نیاز)
DROP SUBSCRIPTION test_subscription;
استفاده از Replica آروانکلاد در نقش دیتابیس اصلی در مواقع بحرانی
روی نود Subscriber یا رپلیکای آروان فقط محدود به حالت دریافت داده نیستید و میتوانید از این نود در نقش یک Master جداگانه هم استفاده کنید.
از طریق Connection String که در پنل کاربری آروانکلاد به شما داده میشود، میتوانید مستقیم به نود متصل شوید و درخواستهای خود (Query) را ارسال کنید. این اتصال مشابه یک دیتابیس مستقل عمل میکند و میتوانید دیتاهای خود را روی آن مدیریت کنید.
بکاپگیری از دیتابیس
برای گرفتن بکاپ کامل دیتابیس از نود رپلیکای آروانکلاد میتوانید از دستور زیر استفاده کنید:
pg_dump -h "arvan-host" -p 5432 -U base-user -d "your-database" -F c -f /home/ubuntu/backup.dump
نکات مهم در رپلیکیشن PostgreSQL
Schema تیبلها باید قبل از Subscription روی Replica ساخته شده باشد.
پیشنهاد میشود Publication را در سطح تیبل یا اسکیمای مشخص تعریف کنید.
اگر copy_data = true باشد، دادههای فعلی نیز منتقل میشوند.
پورت 5432 سرور اصلی باید برای دیتابیس آروان قابل دسترس باشد.
در محیطهای Docker شبکهبندی بین کانتینرها را بررسی کنید.
جمعبندی
با استفاده از قابلیت رپلیکیشن، میتوانید دیتابیس ابری آروانکلاد را در نقش Replica برای MySQL یا PostgreSQL اصلی خود راهاندازی کنید. این روش:
ریسک از دست رفتن دادهها را کاهش میدهد.
دسترسپذیری سیستم را افزایش میدهد.
امکان استفاده از دیتابیس پشتیبان بهعنوان Primary در مواقع بحرانی را فراهم میکند.
