gh-ost
هو حل ترحيل مخطط عبر الإنترنت بدون تشغيل لـ MySQL. إنه قابل للاختبار ويوفر قابلية التوقف ، والتحكم/إعادة التشكيل الديناميكي ، والتدقيق ، والعديد من الامتيازات التشغيلية.
ينتج gh-ost
عبء عمل خفيف على الماجستير خلال الترحيل ، مفصل من عبء العمل الحالي على الجدول الذي تم ترحيله.
تم تصميمه على أساس سنوات من الخبرة مع الحلول الحالية ، وتغيير نموذج هجرات الجدول.
تعمل جميع أدوات تغيير المخططات عبر الإنترنت الحالية بطريقة مماثلة: إنها تنشئ جدول أشباح في شكل جدولك الأصلي ، وترحيل هذا الجدول أثناء فارغة ، ونسخها ببطء وتزايد من الجدول الأصلي إلى جدول الأشباح ، وفي الوقت نفسه ، تنشر التغييرات المستمرة (أي INSERT
، DELETE
، UPDATE
المطبق على الجدول الخاص بك) على جدول الأشباح . أخيرًا ، في الوقت المناسب ، يحلون محل جدولك الأصلي بجدول الأشباح .
يستخدم gh-ost
نفس النمط. ومع ذلك ، فإنه يختلف عن جميع الأدوات الموجودة من خلال عدم استخدام المشغلات. لقد أدركنا أن المشغلات هي مصدر العديد من القيود والمخاطر.
بدلاً من ذلك ، يستخدم gh-ost
دفق السجل الثنائي لالتقاط تغييرات جدول ، ويطبقها بشكل غير متزامن على جدول الأشباح . يأخذ gh-ost
على عاتقه بعض المهام التي تغادرها الأدوات الأخرى لتقديم قاعدة البيانات. ونتيجة لذلك ، gh-ost
لديه سيطرة أكبر على عملية الترحيل ؛ يمكن حقًا تعليقه ؛ يمكن حقًا فصل تحميل كتابة عملية الترحيل من عبء عمل الماجستير.
بالإضافة إلى ذلك ، فإنه يوفر العديد من الامتيازات التشغيلية التي تجعلها أكثر أمانًا وجديرة بالثقة وممتعة.
gh-ost
من خلال اختبارها على النسخ المتماثلة. سيصدر gh-ost
نفس التدفق كما سيكون على السيد ، لترحيل جدول على نسخة طبق الأصل ، دون استبدال الجدول الأصلي فعليًا ، تاركًا النسخة المتماثلة بجدولين يمكنك بعد ذلك مقارنة وإرضاء نفسك بأن الأداة تعمل بشكل صحيح. هذه هي الطريقة التي نختبر بها بشكل مستمر gh-ost
في الإنتاج.gh-ost
، فإنه يتوقف حقًا عن الكتابة على Master: لا توجد نسخ صف وليس معالجة الأحداث المستمرة. عن طريق الاختناق ، تقوم بإرجاع سيدك إلى عبء العمل الأصلي الخاص بهgh-ost
بشكل تفاعلي ، حتى مع استمرار الترحيل. يمكنك البدء بالقوة في الاختناق.gh-ost
للوضع. يستمع gh-ost
على Socket Unix أو TCP.gh-ost
لتأجيل ما هو على الأرجح الخطوة الأكثر أهمية: تبادل الجداول ، حتى تكون متاحًا بشكل مريح. لا داعي للقلق بشأن أن تكون ETA خارج ساعات العمل.gh-ost
مع بيئتك الخاصة.يرجى الرجوع إلى المستندات لمزيد من المعلومات. لا ، حقا ، اقرأ المستندات.
ورقة الغش لديها كل شيء. قد تكون مهتمًا بالاستدعاء gh-ost
في أوضاع مختلفة:
gh-ost
هويات الخوادم المعنية. الوضع المطلوب إذا كان سيدك يستخدم النسخ المتماثل القائم على البيان)gh-ost
تفضل الأول)gh-ost
.نصائحنا:
--test-on-replica
أول مرات قليلة. الأفضل من ذلك ، اجعلها مستمرة. لدينا نسخ متماثلة متعددة حيث نقوم بتكرار أسطولنا بالكامل من جداول الإنتاج ، ونقلها واحدًا تلو الآخر ، وتحقق من النتائج ، والتحقق من الهجرة جيدة.--execute
.المزيد من النصائح:
--exact-rowcount
للاستفادة من مؤشر التقدم الدقيق--postpone-cut-over-flag-file
إلى السيطرة على توقيت القطعانظر أيضا:
gh-ost
على AWS RDSgh-ost
على قاعدة بيانات Azure لـ MySQL في الأصل ، تم تسمية هذا gh-osc
: GitHub Online Schema Change ، في أمثال Facebook Online Schema Change و PT-Online-Schema Change.
ولكن بعد ذلك حدث طفرة وراثية نادرة ، وتحولت c
إلى t
. وهذا أرسلنا إلى طريق محاولة اكتشاف اختصار جديد. gh-ost
(النطق: Ghost ) ، يرمز إلى مخطط Github عبر الإنترنت transmogrifier/مترجم/محول/نقل
gh-ost
مرخص بموجب ترخيص معهد ماساتشوستس للتكنولوجيا
يستخدم gh-ost
مكتبات الطرف الثالث ، ولكل منها ترخيصها الخاص. هذه موجودة هنا.
تم إصدار gh-ost
في حالة مستقرة ، ولكن مع الأميال للذهاب. نحن منفتحون لسحب الطلبات. يرجى أولاً مناقشة نواياك عبر القضايا.
نحن نطور gh-ost
في Github وللالمجتمع. قد يكون لدينا أولويات مختلفة عن الآخرين. من وقت لآخر ، قد نقترح مساهمة ليست على خريطة طريقنا المباشرة ولكنها قد تروق للآخرين.
يرجى الاطلاع على ترميز GH-stost لدليل للبدء في التطور مع GH-stost.
gh-ost
هو الآن GA ومستقر.
يتوفر gh-ost
بتنسيق ثنائي لـ Linux و Mac OS/X
قم بتنزيل أحدث إصدار هنا
gh-ost
هو مشروع GO ؛ تم بناؤه مع GO 1.15
وما فوق. للبناء بمفردك ، استخدم إما:
./bin/gh-ost
binary.tar.gz
في /tmp/gh-ost-release
بشكل عام ، فإن master
Branch مستقر ، ولكن يتم استخدام الإصدارات فقط في الإنتاج.
تم تصميم gh-ost
وتأليفه ومراجعته واختباره من قبل فريق البنية التحتية لقاعدة البيانات في Github: