Mysql Replication چیست ؟ پشتیبان گیری از داده ها و حفظ امنیت اطلاعات
Mysql Replication چیست ؟ MySQL Replication یک روش برای تکرار دادهها در MySQL است که به شما اجازه میدهد دادههای یک سرور MySQL را به یک یا چند سرور دیگر انتقال دهید. این روش به شما امکان میدهد که دادهها را در سرورهای مختلف توزیع کنید و به صورت همزمان به آنها دسترسی داشته باشید. علاوه بر این، این روش به شما امکان پشتیبانگیری از دادهها و کاهش ریسک از دست دادن داده را فراهم میکند. در انواع Database از جمله Mysql به منظورایجاد تقسیم بار (Load Balancing) عملیات یکسان سازی اطلاعات یا (Replication) انجام میشود.
در این راهکاربه طورهمزمان دو پایگاه داده برای برنامه وجود دارد که یکی پایگاه داده اصلی (Master) که وظیفه ثبت و تغییرات را برعهده دارد ودیگری پایگاه داده فرعی یا (Slave) که همیشه به Master نگاه میکند و خود را با آن یکسان سازی میکند و تابع تغییرات آن است و معمولا نقش خواندن اطلاعات را بر عهده دارد. با شرکت ارائه دهنده مدیریت مرکز تماس ماهان ویپ همراه باشید.
بالا رفتن سرعت و عملکرد در سرور با MySQL Replication
هر اطلاعاتی در سرور Master ذخیره شود در Slave نیز ذخیره خواهد شد.
ما برای درخواست های خود به Database میتوانیم درخواست های خواندنی خود مانند لاگ ها و گزارشات را از Slave دریافت کنیم و درخواست های نوشتنی مانند تغییرت ایجاد وحذف را در سرور Master انجام دهیم به این صورت بار بین دو سرور تقسیم میشود و باعث بالا رفتن سرعت و عملکرد برنامه میشود
برای ارسال درخواست های خود به این دو سرور به یک سرویس دیگر بنام (proxysql) نیاز داریم که نوع درخواست های ما را شناسایی کرده و بین Master و Slave تقسیم میکند.
راه اندازی Replication
در این مقاله از صفر تا صد راه اندازی Replication را روی سیستم عامل CentOS نشان خواهیم داد.
پس از راه اندازی سرورهای Mastersql و Slavesql میتوانید با استفاده از یک Proxysql Server درخواست های خود را به این دو سرور ارسال نمایید
تنظیمات سرور Master
در ادامه مقاله Mysql Replication چیست به تنظیمات سرور MASTER آن میپردازیم.
1 – نصب و به روز بودن برنامه
قبل از شروع نصب از به روز بودن سیستم عامل و تنظیمات اینترنت و DNS خود اطمینان حاصل کنید.
Yum update -y
2 – استفاده از شکن های مناسب
به دلیل تحریم بودن ایران بهتر است در همان ابتدا از DNS های shecan استفاده کنید.
DNS1=185.51.200.2
DNS1= 178.22.122.100
3 – آخرین نسخه را دانلود کنید
سورس برنامه را بر اساس آخرین نسخه دریافت نمایید.
wget https://dev.mysql.com/get/ mysql80-community-release- el7-4.noarch.rpm
4 –دریافت RMP برنامه
چنانچه موفق به دریافت مستقیم فایل نشدید میتوانید rmp مربوطه را repository خود mysql.com دریافت کنید ( توجه داشته باشید به دلیل تحریم ها از فیلتر شکن استفاده کنید)
https://dev.mysql.com/downloads/repo/yum/
5 – مسیر فایل دانلود شده
فایل دانلود شده را در مسیر مشخصی در لینوکس مثلا /home بارگذاری کنید.
(اگر از ویندوز استفاده میکنید میتوانید با استفاده از برنامه winscp فایل را جا به جا کنید)
6- بررسی اصالت RMP
به دلیل مهم بودن این سرویس، حتما اصالت rpm دانلود شده را با checksum انجام دهید
md5sum mysql80-community-release-el7-4.noarch.rpm
7 – نصب برنامه
پس از اطمینان از اصل بودن rpm با دستور زیر شروع به نصب برنامه کنید.
rpm -Uvh mysql80-community-release-el7-4.noarch.rpm
سپس دستور زیر را وارد نمایید
yum install mysql-server
پس از پایان نصب سرویس mysqld را مجدد راه اندازی کنید
systemctl restart mysqld
قبل از هر کاری از وضعیت سرویس اطمینان حاصل کنید که به درستی نصب و اجرا شده باشد
systemctl status mysqld
8 – رمز عبور موقت
در طی مراحل نصب، یک رمزعبورموقت برای کاربر root در MySQL ایجاد می شود. با این دستور میتوانید آن را در mysqld.log پیدا کنید:
grep ‘temporary password’ /var/log/mysqld.log
رمز عبور ایجاد شده توسط سیستم را یادداشت کنید
A temporary password is generated for root@localhost: mqRfBU_3Xk>r
سپس از طریق اجرای دستور زیر با وارد کردن رمز ایجاد شده اقدام به تغییر رمز عبور کنید
mysql_secure_installation
پس از تغییر رمز چند سوال پشت سر هم در خصوص دسترسی های کاربر root پرسیده میشود که پاسخ پیش فرض No هست که با زدن Enter تایید و رد میشود
سرویس آماده است وارد mysql شوید
Mysql –uroot –p
Enter Password:
پس از نصب و تغییرات در دو قسمت نیاز به انجام تنظیمات است یکی تنظیمات فایل my.cnf و دیگری تنظیمات mysql سرور
در اینجا به طور مثال برای سرورهای خود آی پی های زیر را در نظر میگیریم
Master=172.16.16.100
Slave=172.16.16.111
9 – تنظیمات mysqld
فایل my.cnf را با یک ویرایشگرمتن مانند vim باز کرده و تنظیمات را زیر[mysqld] وارد کنید
vim /etc/my.cnf
[mysqld]
server-id = 1
relay-log = /var/log/mysql/mysql-relay-bin.log
در قسمت binlog_do_db نام دیتابیس مورد نظر جهت replicate را وارد نمایید
binlog_do_db = my_asterisk
10- ادامه تنظیمات
باقی تنظیمات را بدون تغییر وارد نمایید
binlog-format = mixed
log_bin = mysql-bin
expire_logs_days = 10
max_binlog_size = 1000M
innodb_rollback_on_timeout = 1
innodb_lock_wait_timeout = 120
innodb_buffer_pool_size = 256M
innodb_additional_mem_pool_size = 67108864
thread_cache_size = 1000
wait_timeout = 28800
interactive_timeout = 28800
max_connections = 1000
query_cache_size = 33554432
query_cache_type = 1
پس از اعمال تغییرات فایل را ذخیره کرده و سپس سرویس mysqld را مجدد راه اندازی کنید.
Service mysqld restart
11 – ایجاد کاربر Slave
در این بخش وارد Mysql شده و تنظیمات مربوط به Master و کاربری را ایجاد کنید.
از این دستور برای ایجاد کاربر Slave استفاده کنید
Pattern: CREATE USER ‘UserName’@’From_Host’ IDENTIFIED BY ‘Password’;
Sample: CREATE USER ‘ slave_user ‘@’%’ IDENTIFIED BY ‘123456’;
برای اعطای دسترسی از دستور زیر استفاده کنید
Pattern: GRANT REPLICATION SLAVE ON (DatabaseName.tableName) TO ‘UserName’@’FromAddress’ IDENTIFIED BY ‘Password’;
Sample: GRANT REPLICATION SLAVE ON (*.*) TO ‘slave_user’@’%’ IDENTIFIED BY ‘123456’;در نهایت برای اعمال تغییرات دستور زیر را وارد نمایید
FLUSH PRIVILEGES;
وارد Database مورد نظر شوید
USE DatabaseName ;
با این دستور تمام جدول ها را قفل کنید تا تغییری اعمال نشود
FLUSH TABLES WITH READ LOCK;
دستور زیر را وارد کنید و آخرین تغییرات را مشاهده کرده و اعداد مورد نظر را یادداشت نمایید
SHOW MASTER STATUS;
مقادیر File و Position را یادداشت نمایید تا در slave تنظیم کنید
2 – خروجی از دیتابیس
از دیتابیس خارج شده و با دستور mysqldump از کل دیتابیس های خود خروجی بگیرید سپس با دستور scp آن را به سرور Slave منتقل کنید
mysqldump -u root -p –all-databases –master-data > /data.sql
scp -r /data.sql root@172.16.16.111://
Enter Password:
در این مرحله از مقاله Mysql Replication چیست کار با سرور Master به پایان رسید ، حال به تنظیمات سرور Slave می پردازیم.
اگر تمایل به راه اندازی شبکه دارید مقاله پیکربندی گیت وی E1 نیوراک را از دست ندهید.
تنظیمات سرور Slave
در این بخش از مقاله Mysql Replication چیست به تنظیمات سرور slave میپردازیم.
1 – تفاوت سرور id
تمام مراحل 1 تا 7 با Master مشترک است و درمرحله 8 فقط server-id باید متفاوت باشد.
vim /etc/my.cnf
server-id = 1
بقیه تنظیمات در مانند Master است، فایل را ذخیره و سپس سرویس mysqld را مجدد راه اندازی نمایید.
2 – فایل بکاپ
در این مرحله با استفاده از mysqldump فایل بکاپ گرفته شده از Master را import کنید.
mysqldump -u root -p my_asterisk < /data.sql
3 – تنظیمات مربوط به slave
وارد Mysql شده و تنظیمات مربوط به Slave را انجام دهید
ابتدا Slave را متوقف کرده کاربر و مسیر ارتباط با Master را وارد کرده و Slave را اجرا کنید.
STOP SLAVE;
CHANGE MASTER TO MASTER_HOST=’172.16.16.100′,MASTER_USER=’slave_user’, MASTER_PASSWORD=’123456′, MASTER_LOG_FILE=’mysql-bin.000002′, MASTER_LOG_POS=1380884 ;
START SLAVE;
سپس با استفاده از دستورزیر وضعیت Slave را مشاهده نمایید
show slave status ;
6 – برقراری اتصال
چنانچه تنظیمات به درستی انجام شده باشد و اتصال برقرار شود مقادیر زیر باید هر دو Yes باشند
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
7 – درست کار نکردن Replicate
در صورتی که Replicate با موفقیت انجام نشد دستور زیر را وارد کرده و سپس مجدد وضعیت را بررسی کنید
STOP SLAVE;
SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1
START SLAVE;
در صورت داشتن ارور در پایین صفحه آن را مشاهده خواهید کرد
یک مثال برای رکورد تکراری
به طور مثال: چنانچه موقع Replicate کردن با رکورد تکراری مواجه شوید ارور با ID مشخص دیده میشود و ادامه کار انجام نمی شود که در این صورت باید با استفاده از دستور زیر فایل تکراری را در Slave حذف کنید.
USE DatabaseName ;
STOP SLAVE;
Pattern: DELETE FROM (TableName) WHERE (Field Condition Value) ;
Sample: DELETE FROM cdr_log WHERE ID = 9852364 ;
START SLAVE;
در این مرحله تنظیمات مربوط به Slave به پایان رسید و Replication با موفقیت انجام شد
برای تست میتوانید در Master Database تغییرات را ایجاد کرده و در Slave شاهد تغییرات باشید
برای اتصال به Mysql میتوانید از برنامه های رابط مانند sqlyog استفاده کنید.
با ماهان ویپ بهترین شبکه و مدیریت مرکز تماس را داشته باشید
شرکت ارائه دهنده خدمات مرکزط تماس ماهان ویپ با سابقه 20 ساله در ارائه تجهیزات و نرم افزار مدیریت مرکز تماس بهترین خدمات را به شما ارائه می دهد. شما میتوانید با مشاوره با متخصصین ماهان ویپ بهترین خدمات را دریافت کنید و همچنین با دنبال کردن لینکدین ماهان ویپ از آخرین تخفیفات و اخبار ما مطلع شوید. ممنون که تا پایان مقاله Mysql Replication چیست با ما همراه بودید.
سوالات متداول Mysql Replication چیست ؟
در زیر به برخی از سوالات متداول در مورد MySQL Replication پاسخ داده شده است:
۱. Mysql Replication چیست ؟
MySQL Replication یک روش برای تکرار دادهها در MySQL است که به شما اجازه میدهد دادههای یک سرور MySQL را به یک یا چند سرور دیگر انتقال دهید.
۲. چه مزایایی دارد؟
با استفاده از MySQL Replication، میتوانید برنامههای خود را با توجه به نیازهای کاربران گسترش داده و بار قابل قبول را برای سرور MySQL توزیع کنید. این روش همچنین امکان پشتیبانگیری از دادهها و کاهش ریسک از دست دادن داده را فراهم میکند.
۳. چطور MySQL Replication کار میکند؟
MySQL Replication با استفاده از یک فرایند اصلی Master/Slave کار میکند. در این فرایند، دادهها از سرور اصلی (Master) به سرورهای دیگر (Slave) منتقل میشوند. سرورهای Slave از سرور اصلی دادههایی را دریافت میکنند که با دادههای Master هماهنگ هستند.