02187273

Mysql Replication چیست

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 تقسیم میکند.

مقایسه عملکرد با mysql replication

راه اندازی 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

مزایای mysql replication

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

ویژگی mysql replication

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 تنظیم کنید

مفاهیم mysql replication

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 استفاده کنید.

تکرار داده در mysql چیست

با ماهان ویپ بهترین شبکه و مدیریت مرکز تماس را داشته باشید

شرکت ارائه دهنده خدمات مرکزط تماس ماهان ویپ با سابقه 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 هماهنگ هستند.

دیدگاه‌ خود را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

پیمایش به بالا