
Replication یک ویژگی قدرتمند است که برای پایگاه داده های MySQL طراحی شده است. این عملیات به راحتی فرآیند تکثیر داده ها را از سرور اصلی (Master) به سرور یا سرورهای برده (Slave) انجام می دهد. به این ترتیب می توانید داده های خود را با استفاده از چندین روش از جمله تکرار ناهمزمان و تکرار همزمان روی سرورهای مختلف ذخیره کنید و سیستم پایگاه داده قوی و مقیاس پذیرتری داشته باشید.
MySQL Replication برای مدیریت سرورها در شرکت های در حال رشد و بزرگ به شدت توصیه می شود. در این مقاله روش ها و استراتژی های تکثیر داده های MySQL را به طور کامل توضیح داده و به تفاوت ها و شباهت های آنها اشاره می کنیم.
MySQL Replication یا Data Replication در MySQL چیست؟
تکثیر MySQL فرآیندی است که به یک یا چند سرور MySQL، معروف به Slave، اجازه میدهد تا دادهها را بهطور خودکار با سرور اصلی MySQL همگامسازی کنند. به عبارت دیگر، در فرآیند تکثیر MySQL، تمام دادههای موجود در یک پایگاه داده به پایگاههای داده دیگر ارسال میشوند که میتواند مزایای بسیاری از جمله Scale-Out (ارسال درخواستهای خواندن به سرورهای دیگر) و پشتیبانگیری و امنیت دادهها داشته باشد.
عملیات تکثیر MySQL توانایی ذخیره داده های شما را در پایگاه داده های متعدد فراهم می کند. بنابراین می توانید عملیات مختلفی مانند ارسال درخواست خواندن و تهیه نسخه پشتیبان و گزارش به پایگاه های دیگر را انجام دهید و بار روی پایگاه داده اصلی را کاهش دهید.
تکثیر MySQL چیست؟
برای انجام عملیات تکثیر MySQL، روش های مختلفی وجود دارد که می توانید داده های خود را با سایر پایگاه های داده به اشتراک بگذارید.
عوامل موثر بر تکرار MySQL
قبل از شروع عملیات تکثیر MySQL، باید عوامل موثر بر عملکرد فرآیند تکثیر داده ها در پایگاه داده را بشناسید. این عوامل عبارتند از:
- فضا: هر چه فاصله بین سرورها بیشتر باشد، تاخیر در انتقال داده ها بیشتر می شود.
- پهنای باند: سرعت اینترنت و اتصال به شبکه باید برای انتقال سریع و ثابت اطلاعات کافی باشد.
- نرخ داده: سرعت داده باید کمتر از پهنای باند موجود باشد تا شبکه بیش از حد بارگذاری نشود.
- فن آوری: برای استفاده بهینه از شبکه، کارهای تکراری باید همزمان انجام شوند.
برای کسب اطلاعات بیشتر در مورد سیستم های مدیریت پایگاه داده نسبی از جمله SQLite، MySQL، PostgreSQL، مقاله زیر را مطالعه کنید.
مقایسه SQLite، MySQL و PostgreSQL
مقایسه استراتژیهای همانندسازی ناهمزمان و تکرار همزمان در تکرار MySQL
همانندسازی ناهمزمان (تکثیر داده های غیر همگام) و تکرار همزمان (تکثیر همزمان داده ها) دو روش اصلی و اولیه در تکثیر MySQL هستند که بیشتر مورد استفاده قرار می گیرند.
1. استراتژی تکرار همزمان
همانندسازی همزمان منتظر می ماند تا همه گره ها تراکنش را کامل کنند قبل از اینکه پاسخی به کاربر بدهد. دقیقا برعکس replication ناهمزمان که در پس زمینه پس از commit شدن به Master اتفاق می افتد. با این روش تکثیر داده ها، می توانید مطمئن باشید که اگر تراکنش را انجام دهید، روی هر گره ای متعهد می شود.
- در این روش، همزمان با ایجاد یا بهروزرسانی دادهها در پایگاه داده اولیه، دادهها به پایگاههای داده ثانویه کپی میشوند و با اطمینان از اینکه تمام تراکنشها بر روی تمام گرههای commit پایگاه داده انجام میشوند، مشکلات از دست دادن دادهها را حذف میکند.
- در این روش، داده ها پس از تغییر یا ایجاد در پایگاه های داده به سرعت منتشر می شوند.
- در مجموع، هر دو پایگاه داده به طور همزمان همگام هستند.
- برای عملیات بازیابی فاجعه موثرتر است.
- عملکرد و در دسترس بودن ثابت شبکه بسیار مهم است.
- عملیات تکثیر زمانی به پایان می رسد که پایگاه داده اولیه وجود داده در پایگاه داده های ثانویه را تأیید کند. بنابراین، نرخ از دست دادن داده ها صفر است.
- عملکرد کلی کمی کندتر است.
- در این حالت قبل از ارسال تاییدیه به سیستم اصلی، تاییدیه از پایگاه داده محلی مبنی بر وجود فایل ها گرفته شده و سپس به سرور اصلی ارسال می شود.
روش های مهم برای افزایش امنیت پایگاه داده MySQL را در مقاله زیر بخوانید.
افزایش امنیت MySQL
2. استراتژی تکرار ناهمزمان
روش تکثیر ناهمزمان نیز یکی از روش های معروف تکثیر داده ها در MySQL است. با استفاده از روش async، تمام عملیات Replication از پایگاه داده جدا شده و در پسزمینه اجرا میشوند، که رویدادها را از لاگ باینری دیسک میخواند و در صورت نیاز در دسترس بردگان قرار میدهد. این عملیات نحوه عملکرد برنامه را تغییر نمی دهد. همچنین، async پاسخ MySQL به برنامه را به تاخیر نمی اندازد.
- در این حالت همزمان با اعمال تغییرات در پایگاه داده اولیه، عملیات تکثیر داده ها بلافاصله انجام نمی شود و با کمی تاخیر انجام می شود.
- داده ها از چند ثانیه تا چند دقیقه تاخیر دارند و همیشه همگام می شوند.
- پایگاه داده را می توان در یک مکان از راه دور برای بازیابی فاجعه قرار داد. زیرا نیازی به همگام سازی فوری ندارد. البته در فواصل بیشتر از 30 میلی ثانیه ممکن است عملکرد کاهش یابد.
- به این ترتیب، عملکرد کلی و در دسترس بودن شبکه بهبود می یابد و پهنای باند بیشتری در دسترس خواهید داشت. زیرا کپی ها فوراً منتقل نمی شوند.
- این روش برای بازیابی پایگاه داده مناسب نیست. زیرا ممکن است آخرین اطلاعات را نداشته باشد.
- همانندسازی ناهمزمان به پهنای باند کمتری نسبت به تکرار همزمان نیاز دارد.
مقایسه تکثیر داده های همزمان و ناهمزمان در MySQL
جدول مقایسه کلی
همانندسازی همزمان | همانندسازی ناهمزمان | |
فضا | زمانی که سرورها در نزدیکی یکدیگر قرار می گیرند بهترین کار را انجام می دهد (عملکرد با فاصله کاهش می یابد). | در فواصل طولانی تر کار می کند (تا زمانی که اتصال شبکه بین مراکز داده در دسترس باشد). |
قیمت | گران تر | مقرون به صرفه تر |
هدف نقطه بازیابی (RPO) | صفر | از 15 دقیقه تا چند ساعت |
هدف زمان بازیابی (RTO) | کوتاه | کوتاه |
شبکه | به پهنای باند بیشتری نیاز دارد و ممکن است تحت تأثیر قطعی WAN قرار گیرد. زیرا انتقال داده های تکراری قابل تأخیر نیست. | به پهنای باند کمتری نیاز دارد و تحت تأثیر قطعی شبکه WAN قرار نمی گیرد. زیرا یک کپی از داده ها را می توان در سایت محلی ذخیره کرد تا زمانی که سرویس WAN بازیابی شود. |
از دست رفتن داده ها | صفر | امکان پرش از به روز رسانی های اخیر داده ها |
پایداری | خرابی سرور ممکن است سرویس را متوقف کند. | خاتمه سرویس ممکن است پس از شکست دو سرویس رخ دهد. |
بهره وری | عادی (در انتظار تایید شبکه از مکان ثانویه) عملکرد فقط در درخواست های نوشتن کاهش می یابد و در عوض در خواندن افزایش می یابد. | بالا (منتظر تایید شبکه از مکان ثانویه نیست). |
مدیریت | بسته به نوع استفاده، ممکن است به سرورهای اختصاصی بیشتری نیاز داشته باشد. حداقل 3 سرور مورد نیاز است و باید مجهز به Raid باشد. | نیاز به سخت افزار خاصی ندارد. منابع CPU و RAM نیز به اندازه کافی متوسط هستند. |
برنامه های کاربردی | راه حل نهایی برای بازیابی اطلاعات فوری در هنگام بلایای طبیعی. | بهترین راه حل حفظ داده های غیر حساس و بازیابی داده هایی است که ممکن است تفاوت های کوچکی با نسخه اصلی داشته باشند. |
همانندسازی ناهمزمان بهتر است یا همانندسازی همزمان؟
هیچ پاسخ قطعی و روشنی برای این سوال وجود ندارد و انتخاب کاملاً به کسب و کار و اولویت های شما بستگی دارد.
- تکرار ناهمزمان بیشتر برای پروژه هایی مناسب است که سرورهای آنها از هم دور هستند و بودجه محدودی دارند و به از دست دادن داده های کوچک اهمیتی نمی دهند.
- تکرار همزمان برای پروژه هایی که کمتر از سرور فاصله دارند و به ذخیره سازی طولانی مدت داده قابل اعتماد و در دسترس بودن فوری نیاز دارند، مناسب تر است. اگر کوچکترین از دست دادن داده برای شما مهم است و بودجه نسبتاً بیشتری برای این عملیات در نظر گرفته اید، تکرار همزمان بهترین گزینه برای شماست.
تکثیر داده های همزمان بهتر است یا همانندسازی داده های ناهمزمان؟
معرفی روش های دیگر تکثیر MySQL
برای انجام تکثیر MySQL، روشهای مختلفی وجود دارد که میتوانید برای تکثیر دادههای خود در پایگاههای داده دیگر استفاده کنید. علاوه بر روش های معرفی شده قبلی، روش های دیگری نیز وجود دارند که کاربردهای خاص خود را دارند.
برای دنبال کردن آموزش کامل ایجاد پایگاه داده در phpmyadmin مقاله زیر را مطالعه کنید
آموزش ساخت دیتابیس در phpMyAdmin
1. استراتژی تکرار نیمه همزمان
با استراتژی تکرار نیمه همزمان، تراکنشهای متعهد شده روی Master حداقل به یک گره Slave منتقل میشوند. اما این به معنای تعهد نیست. در این روش commit ها در پس زمینه انجام می شود. در مقایسه با ناهمزمان، اگرچه به سرعت ناهمزمان نیست، شانس کمتری برای از دست دادن داده ها و تاخیر در تکرار وجود دارد.
- در این روش، سرور اصلی پس از به روز رسانی منتظر می ماند تا حداقل یکی از سرورها تغییر را ثبت کند و یک تأییدیه برای سرور اصلی ارسال کند.
- تکرار نیمه همزمان تضمین می کند که یک تراکنش به درستی کپی شده است. اما این تضمین نمی کند که Commit واقعاً روی Slave انجام شود.
- تکرار نیمه همزمان تضمین میکند که master منتظر ادامه پردازش تراکنشها در یک تراکنش خاص میماند تا زمانی که حداقل یکی از Slave دریافت تراکنش را تأیید کند یا زمان آن تمام شود.
- همانندسازی نیمه همزمان با همانندسازی همزمان متفاوت است.
- به یاد داشته باشید که تکرار نیمه همزمان بر عملکرد تأثیر می گذارد. زیرا باید منتظر باشد تا ACK واقعی از Slave برگردد.
معرفی روش همانندسازی نیمه سنکرون
2. استراتژی تکرار گروهی
- این استراتژی تکثیر داده در MySQL وجود دارد و در MySQL Community Edition 5.7 معرفی شد و در MySQL 5.7.17 GA در دسترس قرار گرفت.
- هر زمان که تراکنش بر روی یک گره اجرا می شود، افزونه سعی می کند قبل از بازگرداندن داده ها به کاربر، داده ها را با گروه های دیگر مقایسه کند.
معرفی روش تکرار داده های گروهی
نتیجه
MySQL Replication یک عملیات عالی برای ایجاد سیستم های پایگاه داده پایدار، مقیاس پذیر و توزیع شده است که می تواند با استفاده از روش ها و استراتژی های مختلف پیاده سازی شود. با روش تکرار همزمان، داده های شما فوراً با سرورهای دیگر به اشتراک گذاشته می شود و به فاصله نزدیک تر و پهنای باند بیشتری نیاز دارد. در روش تکرار ناهمزمان، داده ها هر چند ثانیه در سرور دوم قرار می گیرند و در اختیار سایر سرورها قرار می گیرند. این نیاز به زیرساخت ضعیف تری دارد. هنگامی که Replication MySQL به درستی پیکربندی شود، عملکرد و کارایی بهتری را در مقایسه با پایگاه داده های مستقل ارائه می دهد. بنابراین بهتر است هر چه زودتر از این روش استفاده کنید.
سوالات متداول
1. Replication در MySQL چیست؟
عملیات تکثیر داده ها از پایگاه داده اصلی (Master) به پایگاه های داده ثانویه (Slave) را Replication MySQL می گویند.
2. همانندسازی همزمان چیست؟
به این ترتیب اطلاعات شما بلافاصله با سرورهای دیگر به اشتراک گذاشته می شود. این نیاز به فاصله نزدیکتر و پهنای باند بیشتر دارد.
3. همانندسازی ناهمزمان چیست؟
در این روش داده ها با تاخیر چند ثانیه ای و همگام سازی مداوم در اختیار سایر سرورها قرار می گیرد. این نیاز به زیرساخت و پهنای باند بدتری دارد.
4. آیا تکرار بر سرعت پایگاه داده تاثیر می گذارد؟
تکرار تأثیر بسیار کمی بر سرعت پایگاه داده شما دارد.
- در حالت Sync سرعت ضبط حدود 10 درصد کاهش می یابد.
- در حالت ناهمزمان یک اثر کوچک کمتر از 1٪ وجود دارد.
{ “@context”: “https://schema.org”، “@type”: “FAQPage”، “mainEntity”: [{
“@type”: “Question”,
“name”: “Replication در MySQL چیست؟”,
“acceptedAnswer”: {
“@type”: “Answer”,
“text”: “به عملیات تکثیر دادهها از دیتابیس اصلی (Master) به دیتابیسهای ثانویه (Slave)، MySQL Replication گفته میشود.”
}
},{
“@type”: “Question”,
“name”: “روش Synchronous Replication (تکرار همزمان) چیست؟”,
“acceptedAnswer”: {
“@type”: “Answer”,
“text”: “در این روش، دادههای شما بهصورت آنی با سرورهای دیگر بهاشتراک گذاشته میشوند. این امر به فاصله نزدیک و پهنای باند بیشتر نیازمند است.”
}
},{
“@type”: “Question”,
“name”: “روش Asynchronous Replication (تکرار غیرهمزمان) چیست؟”,
“acceptedAnswer”: {
“@type”: “Answer”,
“text”: “در این روش، دادهها با تأخیر چندثانیهای و همگامسازی مداوم دراختیار سایر سرورها قرار میگیرند. این کار به زیرساختها و پهنای باند ضعیفتری نیاز دارد.”
}
},{
“@type”: “Question”,
“name”: “آیا Replication بر سرعت دیتابیس تأثیرگذار است؟”,
“acceptedAnswer”: {
“@type”: “Answer”,
“text”: “عملیات تکرار (Replication) تأثیرات بسیار کم و جزئی روی سرعت دیتابیس شما میگذارد.
در حالت Sync، حدوداً ۱۰درصد سرعت نوشتن (Write) کم میشود.
در حالت async، تأثیر کمی درحدود کمتر از ۱درصد دارد.”
}
}]
}
مقاله مقایسه همانندسازی ناهمزمان و همانندسازی همزمان اولین بار در پارسپک پدیدار شد. به نظر می رسد.