← شروع آموزش

WIUNIX ACADEMY

آموزش نصب و راه‌اندازی رپلیکیشن MariaDB در اوبونتو و دبیان

صفحهٔ 6 از 6؛ مراحل قبلی و پیش‌نیازها را پیش از ادامه مرور کن.

آموزش متناسب با محیط تو

کجا اجرا می‌کنی؟

سیستم‌عامل و نسخه را انتخاب کن تا مراحل، دستورها و راه‌حل‌ها برای همان محیط نمایش داده شوند.

Ubuntu 26.10بررسی‌شده با مستندات رسمی ·

آموزش متناسب با مقادیر تو

تنظیمات این آموزش

مقادیر نمونه را برای محیط خودت تنظیم کن؛ متن و دستورهای مرتبط با هم تغییر می‌کنند. رمز، کلید خصوصی و توکن وارد نکن. مقادیر فقط در همین زبانه نگهداری می‌شوند و به سرور یا لینک اشتراک‌گذاری فرستاده نمی‌شوند. پیش از اجرا، DNS، گواهی‌ها و سیاست شبکهٔ واقعی را بررسی کن.

آی‌پی، دامنه یا پورت مثال‌ها با محیط تو فرق دارد؟ دکمهٔ زیر را باز کن، مقادیر را تغییر بده و «اعمال در آموزش» را بزن؛ سپس دستورهای به‌روز‌شده را کپی کن.

تنظیم مقادیر برای محیط من3 مقدار قابل‌تغییر
29

قدم بعدی

توقف تکثیر با حفظ داده و موقعیت

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

Bash

رپلیکا

(
set -euo pipefail
sudo mariadbd --verbose --help >/dev/null
sudo mariadb -e "SHOW SLAVE STATUS\G; STOP SLAVE; SHOW SLAVE STATUS\G; SELECT * FROM academy_lab.replication_probe ORDER BY id;"
)
از کجا بدانم درست انجام شد؟

هر دو رشته No؛ داده، لاگ و فرادادهٔ اتصال حفظ و read_only برابر1 بماند.

30

قدم بعدی

ازسرگیری فقط با موقعیت معتبر

اختیاری و فقط پس از رفع علت، اطمینان از سازگاری داده و موجودبودن لاگ‌های لازم روی سرور اصلی. با ویرایشگر فقط خط توقف خودکار را بردارید؛ بقیهٔ تنظیمات و read_only حفظ شوند. اگر تاریخچه منقضی یا داده ناسازگار است، این نمونه را نگه دارید و رپلیکای تازهٔ دیگری با نسخهٔ معتبر بسازید؛ دادهٔ فعلی را بازنویسی نکنید.

Bash

رپلیکا

sudo nano /etc/mariadb/mariadb.conf.d/90-academy-replication.cnf
از کجا بدانم درست انجام شد؟

فقط خط توقف پس از تأیید سازگاری داده و وجود لاگ‌ها برداشته شود.

31

قدم بعدی

شروع دوباره و کنترل هر دو مرحله

پس از تصمیم مرحلهٔ قبل، فقط روی رپلیکا اجرا کنید. شروع صریح کانال موجود به راه‌اندازی مجدد سرویس نیاز ندارد. سپس انتظار GTID و تطبیق داده را با مقدار واقعی سرور اصلی تکرار کنید؛ شروع موفق به‌تنهایی برابری داده را ثابت نمی‌کند.

Bash

رپلیکا

(
set -euo pipefail
sudo mariadbd --verbose --help >/dev/null
sudo mariadb -e "START SLAVE; SHOW SLAVE STATUS\G; SELECT @@read_only,@@GLOBAL.gtid_slave_pos;"
)
از کجا بدانم درست انجام شد؟

هر دو رشته Yes و بی‌خطا، read_only برابر1؛ انتظار GTID و تطبیق داده دوباره موفق شود.

تغییر نقش بدون مهار نویسندهٔ قبلی امن نیست

تغییر نقش خارج از این راهنمای نصب است. جابه‌جایی برنامه‌ریزی‌شده به بستن واقعی همهٔ نویسنده‌ها، ثبت موقعیت نهایی، رسیدن قطعی رپلیکا، تغییر مسیر برنامه و برنامهٔ اتصال دوبارهٔ میزبان قدیمی نیاز دارد. در خرابی ناگهانی ممکن است تراکنش تأییدشده هم از دست برود. هرگز هر دو میزبان را نویسنده نکنید یا سرور قدیمی را بدون بررسی به مدار برنگردانید. خواندن رپلیکا می‌تواند قدیمی باشد؛ درخواست حساس به خواندن بلافاصله پس از نوشتن روی سرور اصلی بماند.

عیب‌یابی بر اساس مرحلهٔ خراب

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

سرویس بالا نمی‌آید

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

Bash
sudo mariadbd --verbose --help >/dev/null
sudo systemctl status mariadb --no-pager
sudo journalctl -u mariadb -n 60 --no-pager
ip -br address
دریافت‌کننده Yes نیست

روی رپلیکا، خطای DNS و TCP را از رمز/مبدأ اشتباه یا خطای گواهی جدا کنید. Last_IO_Error راهنماست. برای فایروال از پنل سرور اصلی استفاده کنید؛ تأیید TLS را خاموش نکنید و محدودهٔ حساب را باز نگذارید.

Bash
getent ahostsv4 db-primary.example.internal
sudo mariadb -e "SHOW SLAVE STATUS\G"
sudo -u mysql test -r /etc/mariadb/tls/ca.pem
sudo journalctl -u mariadb -n 60 --no-pager
توقف اجرا یا پایان مهلت GTID

روی رپلیکا، ردیف تکراری1062، ردیف گم‌شده1032 یا ترتیب نامعتبر GTID نشانهٔ اختلاف داده یا بذر اشتباه است؛ خطا را رد نکنید. با روش توقف پایدار، نمونه را از خواندن برنامه جدا و برای بررسی حفظ کنید. پایان مهلت گاهی فقط از صف کار است؛ وضعیت هر دو رشته و دیسک را ببینید.

Bash
sudo mariadb -e "SHOW SLAVE STATUS\G; SELECT @@GLOBAL.gtid_slave_pos;"
df -h /var/lib/mariadb
df -i /var/lib/mariadb
sudo journalctl -u mariadb -n 60 --no-pager
لاگ لازم روی سرور اصلی منقضی شده

روی سرور اصلی، لاگ‌های موجود را با خطای1236 و موقعیت نسخهٔ اولیه مقایسه کنید. تاریخچه را بازنشانی نکنید و GTID تازه را به دادهٔ قدیمی وصل نکنید. نمونهٔ فعلی را نگه دارید و رپلیکای جدا با بذر جدید بسازید؛ افزایش نگهداری هم به ظرفیت دیسک نیاز دارد.

Bash
sudo mariadb -e "SHOW BINARY LOGS; SELECT @@GLOBAL.gtid_binlog_pos,@@binlog_expire_logs_seconds;"
df -h /var/lib/mariadb
تمدید گواهی و تغییر اعتماد

اعتبار، نام و کلید سرور اصلی را با پنل گواهی بسنجید. در تعویض CA ابتدا زنجیرهٔ معتبر دورهٔ گذار به رپلیکا تحویل شود و تأیید سخت‌گیرانه حفظ گردد. راه‌اندازی سرور اصلی قطعی اتصال دارد و به زمان‌بندی و بررسی دوبارهٔ داده نیاز دارد. کلید خصوصی را در تیکت عمومی نگذارید.

Bash
sudo openssl x509 -in /etc/mariadb/tls/server.pem -noout -dates -ext subjectAltName
sudo openssl x509 -in /etc/mariadb/tls/server.pem -checkend 604800 -noout

بهره‌برداری با پایش و مسئولیت مشخص

توقف هر رشته، خطای تکثیر، بی‌حرکتی موقعیت، رشد رله‌لاگ، کمبود فضا، انقضای گواهی و شکست بکاپ یا بازیابی باید هشدار داشته باشد. حساب تکثیر به جریان باینری‌لاگ دسترسی دارد؛ رپلیکا را دارندهٔ مورد اعتماد داده بدانید. پخش خواندن فقط پس از سنجش تأخیر قابل‌قبول و آزمایش رفتار برنامه انجام شود. گام بعد، تمرین بازیابی و تغییر نقش با مهار نویسنده در آزمایشگاه جداست.

پشتوانهٔ این آموزش

منابع رسمی

وضعیت بررسی هر محیط بالای صفحه مشخص است؛ بررسی مستندات به معنی اجرای عملی همهٔ نسخه‌ها نیست.

ادامهٔ مسیر

قدم بعدی تو

همهٔ آموزش‌های آکادمی ↗