وبلاگ رسانگار
با ما حرفه ای باشید

سرور مجازی NVMe

روش پیکربندی MySQL Master-Slave Replication در CentOS 7

0 4
زمان لازم برای مطالعه: 4 دقیقه



تکرار MySQL یک است process که به شما این امکان را می دهد که به طور خودکار داده ها را از یک سرور پایگاه داده به یک یا چند سرور کپی کنید.

MySQL از تعدادی توپولوژی تکرار پشتیبانی می کند که توپولوژی Master/Slave یکی از شناخته شده ترین توپولوژی ها است که در آن یک سرور پایگاه داده به عنوان master عمل می کند، در حالی که یک یا چند سرور به عنوان Slave عمل می کنند. به‌طور پیش‌فرض، تکرار ناهمزمان است که در آن Master رویدادهایی را که تغییرات پایگاه داده را توصیف می‌کنند به گزارش باینری خود ارسال می‌کند و Slave‌ها زمانی که آماده هستند، رویدادها را درخواست می‌کنند.

در این آموزش روش راه اندازی MySQL Master/Slave Replication با یک سرور اصلی و یک سرور slave را توضیح خواهیم داد. CentOS 7. همین مراحل برای MariaDB نیز اعمال می شود.

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

پیش نیازها

در این مثال، ما فرض می کنیم که شما دو سرور در حال اجرا دارید CentOS 7 که می توانند از طریق یک شبکه خصوصی با یکدیگر ارتباط برقرار کنند. اگر ارائه دهنده هاست شما آدرس های IP خصوصی را ارائه نمی دهد، می توانید از آدرس های IP عمومی استفاده کنید و فایروال خود را طوری پیکربندی کنید که ترافیک پورت 3306 را فقط از منابع قابل اعتماد مجاز کند.

سرورهای این مثال دارای IP های زیر هستند:

Master IP: 192.168.121.59
Slave IP:  192.168.121.14

MySQL را نصب کنید

پیش فرض The CentOS 7 مخزن شامل بسته‌های MySQL نیستند، بنابراین ما MySQL را از مخزن رسمی Yum آنها نصب خواهیم کرد. برای جلوگیری از هر گونه مشکل، ما همان MySQL نسخه 5.7 را روی هر دو سرور نصب می کنیم.

MySQL را بر روی سرورهای Master و Slave نصب کنید:

sudo yum localinstall https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpmsudo yum install mysql-community-server

پس از اتمام نصب، سرویس MySQL را راه اندازی کنید و آن را فعال کنید تا به طور خودکار هنگام بوت با استفاده از:

sudo systemctl enable mysqldsudo systemctl start mysqld

هنگامی که سرور MySQL برای اولین بار راه اندازی می شود، یک رمز عبور موقت برای کاربر ریشه MySQL ایجاد می شود. برای پیدا کردن رمز عبور از دستور grep زیر استفاده کنید:

sudo grep 'temporary password' /var/log/mysqld.log

را اجرا کنید mysql_secure_installation دستور برای تنظیم رمز عبور ریشه جدید و بهبود امنیت نمونه MySQL:

mysql_secure_installation

رمز موقت روت را وارد کرده و پاسخ دهید Y (بله) به همه سوالات.

رمز عبور جدید باید حداقل 8 نویسه داشته باشد و حداقل یک حرف بزرگ، یک حرف کوچک، یک عدد و یک کاراکتر خاص داشته باشد.

سرور اصلی را پیکربندی کنید

ابتدا سرور اصلی MySQL را پیکربندی می کنیم و تغییرات زیر را اعمال می کنیم:

  • سرور MySQL را تنظیم کنید تا در IP خصوصی گوش دهد.
  • یک شناسه سرور منحصر به فرد تنظیم کنید.
  • ثبت باینری را فعال کنید.
پیشنهاد می‌کنیم بخوانید:  روش اضافه کردن کاربر به Sudoers در CentOS

برای انجام این کار فایل پیکربندی MySQL را باز کنید و خطوط زیر را در آن اضافه کنید [mysqld] بخش:

sudo nano /etc/my.cnf
master:/etc/my.cnf
bind-address           = 192.168.121.59
server-id              = 1
log_bin                = mysql-bin

پس از اتمام، سرویس MySQL را مجدداً راه اندازی کنید تا تغییرات اعمال شوند

sudo systemctl restart mysqld

مرحله بعدی ایجاد یک کاربر تکراری جدید است. به عنوان کاربر اصلی وارد سرور MySQL شوید:

mysql -uroot -p

از داخل اعلان MySQL، پرس و جوهای SQL زیر را اجرا کنید که باعث ایجاد آن خواهد شد replica کاربر و اعطا REPLICATION SLAVE امتیاز به کاربر:

CREATE USER 'replica'@'192.168.121.14' IDENTIFIED BY 'strong_password';
GRANT REPLICATION SLAVE ON *.* TO 'replica'@'192.168.121.14';
مطمئن شوید که IP را با آدرس IP برده خود تغییر داده اید. شما می توانید نام کاربر را هر طور که می خواهید بنویسید.

در حالی که هنوز در اعلان MySQL هستید، دستور زیر را اجرا کنید که نام و موقعیت فایل باینری را چاپ می کند.

SHOW MASTER STATUS\G
*************************** 1. row ***************************
             File: mysql-bin.000001
         Position: 1427
     Binlog_Do_DB: 
 Binlog_Ignore_DB: 
Executed_Gtid_Set: 
1 row in set (0.00 sec)

به نام فایل توجه داشته باشید، “mysql-bin.000001” و موقعیت ‘1427’. هنگام پیکربندی سرور برده به این مقادیر نیاز خواهید داشت. این مقادیر احتمالا در سرور شما متفاوت خواهد بود.

سرور Slave را پیکربندی کنید

مانند سرور اصلی بالا، تغییرات زیر را در سرور برده اعمال خواهیم کرد:

  • سرور MySQL را تنظیم کنید تا در IP خصوصی گوش دهد
  • یک شناسه سرور منحصر به فرد تنظیم کنید
  • ثبت باینری را فعال کنید

فایل پیکربندی MySQL را باز کنید و خطوط زیر را ویرایش کنید:

sudo nano /etc/my.cnf
برده:/etc/my.cnf
bind-address           = 192.168.121.14
server-id              = 2
log_bin                = mysql-bin

سرویس MySQL را مجددا راه اندازی کنید:

sudo systemctl restart mysqld

مرحله بعدی پیکربندی پارامترهایی است که سرور برده برای اتصال به سرور اصلی استفاده می کند. ورود به پوسته MySQL:

mysql -uroot -p

ابتدا رشته های برده را متوقف کنید:

STOP SLAVE;

پرس و جوی زیر را اجرا کنید تا Slave را برای تکرار Master تنظیم کند:

CHANGE MASTER TOMASTER_HOST='192.168.121.59',MASTER_USER='replica',MASTER_PASSWORD='strong_password',MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=1427;

مطمئن شوید که از آدرس IP، نام کاربری و رمز عبور صحیح استفاده می کنید. نام و موقعیت فایل لاگ باید با مقادیری که از سرور اصلی دریافت کرده اید یکسان باشد.

پیشنهاد می‌کنیم بخوانید:  چگونه یک محیط توسعه جنگو راه اندازی کنیم

پس از اتمام، نخ های برده را شروع کنید.

START SLAVE;

تنظیمات را تست کنید

در این مرحله، شما باید یک تنظیم مجدد Master/Slave داشته باشید.

برای تأیید اینکه همه چیز طبق انتظار کار می کند، یک پایگاه داده جدید در سرور اصلی ایجاد می کنیم:

mysql -uroot -p
CREATE DATABASE replicatest;

وارد پوسته Slave MySQL شوید:

mysql -uroot -p

دستور زیر را برای لیست کردن همه پایگاه داده ها اجرا کنید:

SHOW DATABASES;

متوجه خواهید شد که پایگاه داده ای که در سرور اصلی ایجاد کرده اید در Slave تکرار می شود:

+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| replicatest        |
| sys                |
+--------------------+
5 rows in set (0.00 sec)

نتیجه

در این آموزش، ما به شما نشان دادیم که یک MySQL Master/Slave Replication بر روی آن ایجاد کنید CentOS 7.

در صورت داشتن هر گونه سوال در کامنت بگذارید.

centos mysql mariadb
برای نگارش بخشهایی از این متن ممکن است از ترجمه ماشینی یا هوش مصنوعی GPT استفاده شده باشد
لطفا در صورت وجود مشکل در متن یا مفهوم نبودن توضیحات، از طریق دکمه گزارش نوشتار یا درج نظر روی این مطلب ما را از جزییات مشکل مشاهده شده مطلع کنید تا به آن رسیدگی کنیم

زمان انتشار: 1402-12-27 16:20:02

امتیاز شما به این مطلب
دیدگاه شما در خصوص مطلب چیست ؟

آدرس ایمیل شما منتشر نخواهد شد.

لطفا دیدگاه خود را با احترام به دیدگاه های دیگران و با توجه به محتوای مطلب درج کنید