از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
روش پیکربندی MySQL Master-Slave Replication در CentOS 7
سرفصلهای مطلب
تکرار 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.rpm
sudo yum install mysql-community-server
پس از اتمام نصب، سرویس MySQL را راه اندازی کنید و آن را فعال کنید تا به طور خودکار هنگام بوت با استفاده از:
sudo systemctl enable mysqld
sudo systemctl start mysqld
هنگامی که سرور MySQL برای اولین بار راه اندازی می شود، یک رمز عبور موقت برای کاربر ریشه MySQL ایجاد می شود. برای پیدا کردن رمز عبور از دستور grep زیر استفاده کنید:
sudo grep 'temporary password' /var/log/mysqld.log
را اجرا کنید mysql_secure_installation
دستور برای تنظیم رمز عبور ریشه جدید و بهبود امنیت نمونه MySQL:
mysql_secure_installation
رمز موقت روت را وارد کرده و پاسخ دهید Y
(بله) به همه سوالات.
سرور اصلی را پیکربندی کنید
ابتدا سرور اصلی MySQL را پیکربندی می کنیم و تغییرات زیر را اعمال می کنیم:
- سرور MySQL را تنظیم کنید تا در IP خصوصی گوش دهد.
- یک شناسه سرور منحصر به فرد تنظیم کنید.
- ثبت باینری را فعال کنید.
برای انجام این کار فایل پیکربندی MySQL را باز کنید و خطوط زیر را در آن اضافه کنید [mysqld]
بخش:
sudo nano /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';
در حالی که هنوز در اعلان 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
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 TO
MASTER_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.
در صورت داشتن هر گونه سوال در کامنت بگذارید.
لطفا در صورت وجود مشکل در متن یا مفهوم نبودن توضیحات، از طریق دکمه گزارش نوشتار یا درج نظر روی این مطلب ما را از جزییات مشکل مشاهده شده مطلع کنید تا به آن رسیدگی کنیم
زمان انتشار: 1402-12-27 16:20:02