أدخلت الخلية عملية مؤتمتة وويلي غير -Inception

كتاب تمهيدي

آخر نحن ذاهبون للقيام عملية قاعدة البيانات MySQL و الصيانة للمنصة. وهناك ميزة مهمة جدا هي التدقيق SQL، إذا بالكامل من قبل ندرك الاصطناعي ليست هناك حاجة لتقديم منصة. ولا يجوز أن يكون فكرة عن كيفية تحقيق ذلك الوقت، وجوجل قليلا، وننظر عدم وجود حلول المصدر المفتوح جاهزة. يكفي بالتأكيد، على جيثب وجدت "حيث أن شبكة" عملية أداة مفتوحة المصدر وصيانة التأسيس قاعدة بيانات، بل هو مجموعة من المراجعة والتنفيذ، وتوليد الخلية عملية النسخ الاحتياطي وصيانة أدوات التشغيل الآلي في التراجع بيان واحد.

بداية مقدمة

مخطط العمارة إنشائها هو مبين أدناه، بعبارات بسيطة، بداية هو الخلية وكيل لمساعدتك تدقيق SQL، تنفيذ SQL، وسجلات النسخ الاحتياطي SQL المتضررة. بداية هو برنامج الهندسة المعمارية C / S ل. يمكننا أن نذهب عبر عميل الخلية الأصلية، يمكنك الذهاب أيضا من خلال اتصال واجهة عن بعد، وتنفيذ الحالي يدعم فقط الوصول إلى التأسيس من قبل واجهات C / C ++، واجهة بيثون.

أداء الرسم البياني التالي:

التأسيس التثبيت

أنا ركبت البيئة

OS: أوبونتو 16.04.2 LTS

يعتمد التثبيت

  • تحميل البيسون: أفضل الإصدار قبل 2.6 (مثبتة ضمن الإصدار أوبونتو 16.04.2 LTS هو البيسون-2.5.1)، قد يكون أحدث مشكلة، وبعد تحميل، تحتاج إلى ترجمة التعليمات البرمجية المصدر لتثبيت أسلوب التثبيت محددة، بعض التفسير معلمات على الانترنت.

  • cmake التثبيت: `` الرابطة بين الحصول على تثبيت cmake`

  • تركيب سأركع: الرابطة بين الحصول على تثبيت libncurses5 ديف

  • تثبيت بينسل: الرابطة بين الحصول على تثبيت libssl ديف

  • تثبيت ز ++: سودو الرابطة بين الحصول على تثبيت ز ++

  • تركيب M4: الرابطة بين الحصول على تثبيت M4

تجميع وتركيب التأسيس

بوابة استنساخ https://github.com/mysql-inception/inception.git ش inception_build.sh التصحيح  (إذا لم تقم بتحديد هذا النظام الأساسي لينكس، ولكن إذا كنت ترغب في تحديد أن كسكودي، كسكودي ستحدد لاحقا) نسخ التعليمات البرمجية

الملفات القابلة للتنفيذ في التصحيح / SQL / تصحيح / الدليل (منصات مختلفة قد لا تكون هي نفسها).

بداية التأسيس

إنشاء inc.cnf الشخصي، الذي هو أساسا التأسيس بداية الميناء، نهج التدقيق SQL، نسخة احتياطية من تكوين قاعدة بيانات وغيرها، أكثر يمكن الرجوع إلى الوثائق الرسمية.

 general_log = 1 = general_log_file inception.log ميناء = منفذ الاستماع المقبس من 6669 # التأسيس = / تمة / inc.socket مجموعة الأحرف العميل تعارف = 0 مجموعة الأحرف خادم = UTF8 inception_remote_system_password = الجذر # قاعدة بيانات النسخ الاحتياطي كلمة المرور inception_remote_system_user = wzf1 # اسم المستخدم قاعدة بيانات النسخ الاحتياطي inception_remote_backup_port = 3306 # قاعدة بيانات النسخ الاحتياطي ميناء inception_remote_backup_host = 127.0.0.1 # عنوان قاعدة بيانات النسخ الاحتياطي inception_support_charset = utf8mb4 inception_enable_nullable = 0 inception_check_primary_key = 1 = 1 inception_check_column_comment inception_check_table_comment = 1 = 1 inception_osc_min_table_size inception_osc_bin_dir = / البيانات / درجة الحرارة inception_osc_chunk_time = 0.1 inception_enable_blob_type = 1 = 1 inception_check_column_default_value تكرار الكود

بداية

./Inception --defaults ملف = inc.cnf تكرار الكود

وصول

  • على جانب العميل الخلية الطريقة الأصلية. الاهتمام الرئيسي هو، وعدم حجب البيان SQL، ووضع العميل الخلية نفسها، وهذا هو أداة تشغيل وصيانة الآلي، إذا باستخدام سطر الأوامر التفاعلية لاستخدام كلمات لا معنى له، وجميع من تنفيذ SQL يجب أن مرت واجهة الطريق، وهذا النهج يمكن أن تستخدم لعرض وتعيين الاستئناف فقط تكوين ملف التكوين، مثل المتغيرات بدء الحصول على، ويمكنك عرض كافة المتغيرات، أكثر الرجاء الرجوع إلى الوثائق الرسمية.

  • الخلية -uroot -h127.0.0.1 -P6669 نسخ رمز
  • الطريق من خلال واجهة. هنا هو بيثون أمثلة التعليمات البرمجية الرسمية، لاحظ أنه إذا كنت تستخدم Python3 من pymsql لديك اتصال غير طبيعي، والحل الحالي هو تعديل قضية pymysql محددة شفرة المصدر:

  • # / البيرة / بن / الثعبان # - \ * - الترميز: اسم المستخدم المستخدم = UTF-8 - \ * - - استيراد MySQLdb مزود = "/ *؛ - كلمة = كلمة السر، - المضيف = 127.0.0.1؛ - -execute = 1؛ - ميناء = 3306؛ * / \ inception_magic_start؛ \ استخدام الخلية؛ \ CREATE TABLE adaptive_office (الباحث معرف)؛ \ inception_magic_commit، 'محاولة: كون = MySQLdb.connect (المضيف =' 127.0.0.1 '، المستخدم = ''، باسود = ''، ديسيبل = ''، ومنفذ = 9998) لئيم = conn.cursor () المتقاعد = cur.execute (SQL) يؤدي = cur.fetchall () num_fields = ليون (cur.description) FIELD_NAMES = طباعة FIELD_NAMES عن الصف في النتيجة: صف وطباعة "|"، الصف "|"، الصف "|"، صف واحد "|" ، الصف "|"، صف واحد "|"، الصف "|"، الصف "|"، صف "|"، الصف "|"، صف واحد cur.close () conn.close () باستثناء MySQLdb.Error، ه: طباعة "ماي خطأ d: ليالي" (e.args ، e.args ) نسخ رمز

    SQL التدقيق والتنفيذ

    من خلال مراجعة التأسيس للبيانات، يجب أن هذه التصريحات اقول التأسيس عنوان قاعدة البيانات، والميناء، وقاعدة البيانات المطابقة

    بداية الاتصال بقاعدة بيانات اسم المستخدم وكلمة المرور وغيرها من المعلومات، ليس فقط أداء بيان مزود بسيطة، لا بد أن يكون بعض وسيلة لنقل هذه المعلومات إلى التأسيس.

    معلومات ملاحظات الاتصال على / * ... * /، يتم تضمين بيان SQL حقيقي في inception_magic_start وinception_magic_commit:

    الاختيار

    مراجعة السياسة، انظر الوثائق الرسمية، وبعض مواصفات هو شكلي ويمكن تهيئتها في ملفه التأسيس وفقا لمواصفات الخاصة بالشركة.

    إعدام

    ملاحظة، وقال المسؤول، هو دعم DDL والبيانات DML، ولكن لا يدعم الاستعلام SELECT.

    على سبيل المثال، من خلال تنفيذ بيان الجدول التأسيس البناء:

    ... inception_magic_start، واستخدام الخلية، CREATE TABLE adaptive_office (معرف كثافة العمليات)؛ inception_magic_commit، ... نسخ رمز

    عودة نتيجة لذلك، تبين أن كل SQL إرجاع نتيجة للتنفيذ، يفشل errlevel غير الصفر التمثيل، والثاني في تصريحات التدقيق SQL الانتهاء كما هو مبين أدناه (اكتمال المراجعة) ولكن غير متوافقة مع بناء الجدول، وأكثر من ذلك وصف عوائد كبيرة حول نتائج شهدت الوثائق الرسمية:

    'ID'، 'مرحلة'، 'errlevel'، 'stagestatus'، 'ERRORMESSAGE'، 'SQL'، 'Affected_rows'، 'تسلسل'، 'backup_dbname'، 'execute_time'، 'sqlsha1' 1 | يفحص | 0 | التدقيق أكملت | لا يوجد | استخدام inception_test | 0 | '0_0_0 "| لا يوجد | 0 | 2 | يفحص | 1 | التدقيق الانتهاء | محرك المقرر أن ك InnoDB عن الجدول' adaptive_office" مجموعة محارف إلى واحدة من "utf8mb4 'ل' adaptive_office" الجدول .. التعليقات الواردة ل 'adaptive_office "الجدول. العمود' المعرف 'في الجدول' adaptive_office" ليس لديها تعليق. العمود 'معرف' في 'adaptive_office "الجدول لا يسمح له كانت قيم الفارغة. تعيين القيمة الافتراضية لعمود' معرف 'في' adaptive_office" الجدول تعيين مفتاح أساسي للجدول 'adaptive_office "|. CREATE TABLE adaptive_office (معرف كثافة العمليات) | 0 |' 0_0_1" | 10_10_1_67_1028_inception_test | 0 | تكرار الكود

    وظيفة النسخ الاحتياطي

    المتطلبات الأساسية

    • يجب أن يكون الخادم على الانترنت binlog مفتوحة، أو لن تولد بيان النسخ الاحتياطي والاستعادة.

    • يجب تعيين المعلمات إلى الصف binlog_format أو الوضع المختلط، من خلال البيان: مجموعة binlog_format العالمي = مختلط مجموعة / صف واحد، إذا كان البيان هو الوضع، لم يتم إنشاء النسخة الاحتياطية وبيان التراجع.

    • يجب أن يكون هناك يتأثر على التوالي المفتاح الأساسي، لأن التراجع WHERE عبارة شرطية هو المفتاح الأساسي. على سبيل المثال، وإدخال البيانات وعوائد مفتاح معرف الأساسي = 1، ثم المقابلة العكس فإنه سيتم إنشاء جملة delete (WHERE الشرط هو المفتاح الأساسي) حذف من س س WHERE ID = 1.

    التأسيس لديه وظيفة النسخ الاحتياطي في القيام بعمليات DML (تمكين افتراضيا، لتحديد ملف --disable-عن بعد النسخ الاحتياطي في SQL تعليقات التنفيذ)، فإنه سيتم مراجعة كل خط العبارة الحالية احتياطيا، وتخزينها في نسخة احتياطية المعين مكتبة، حددت المكتبة من قبل معلمات التكوين التأسيس النسخ الاحتياطي.

    حول تسمية قاعدة بيانات النسخ الاحتياطي، ويتكون الجهاز احتياطية من اسم المكتبة إلى عنوان IP نقطة أكد آلة الخط، بالإضافة إلى شعارات العليا، جنبا إلى جنب مع اسم المكتبة من ثلاثة أجزاء، يتم توصيل ثلاثة أجزاء من تسطير . على سبيل المثال: I DML عنوان قاعدة بيانات العمليات هو 192.168.1.1، ومنفذ 3306، اسم المكتبة هو inceptiondb، ثم عمل نسخة احتياطية من قاعدة بيانات الجدول اسمه: 192_168_1_1_3306_inceptiondb.

    على سبيل المثال، لدي مكتبة inception_test، الذي يحتوي على طاولة المعلومات حول المستخدم، على حقلين:

    ذهبت لتنفيذ INSERT سجل عن طريق التأسيس:

    /*--user=root؛--password=xxx؛--host=1.1.1.1؛--execute=1؛--port=3306؛--sleep=0؛--enable-remote-backup؛*/ \ inception_magic_start؛ \ استخدام inception_test؛ \ إدراج في المعلومات حول المستخدم ( `username`) القيم (" اختبار ")؛ \ inception_magic_commit، نسخ كود

    يتم إرجاع النتائج التالية، يمكنك ان ترى وقد أجريت بنجاح وكان نجاح عملية النسخ الاحتياطي:

    2 | المنفذة | 0 | تنفيذ النسخ الاحتياطي بنجاح بنجاح | لا يوجد | إدراج في المعلومات حول المستخدم ( `username`) القيم (" اختبار ") | 1 | '1533716166_25519001_1" | 1_1_1_1_3306_inception_test | 0.060 | تكرار الكود

    اطلع على قاعدة البيانات وقاعدة بيانات النسخ الاحتياطي المعلومات حول المستخدم نتيجة الجدول 1_1_1_1_3306_inception_test، وبيان INSERT وفقا لذلك يولد عبارة DELETE:

    حذف من `inception_test`.`userinfo` WHERE ID = 4، تكرار كود

    حسنا، إذا كنت بحاجة لدحر البيان بشكل صحيح هل وجدت ذلك؟ يمكنك عرض النسخ الاحتياطي قاعدة بيانات الجدول هيكل 1_1_1_1_3306_inception_test في المعلومات حول المستخدم:

    هناك نوعان من مجالات رئيسية هي:

    • النص rollback_statement: توليد بيان العودة إلى الحالة السابقة التي تم تعديلها.

    • opid_time VARCHAR (50): يتم تخزين هذا العمود في بيان SQL ليتم تنفيذها في تنفيذ عدد المسلسل، ويتكون الرقم التسلسلي من ثلاثة أجزاء: الطابع الزمني (قيمة كثافة العمليات، ويتم تنفيذ بيان نقطة) + الخادم على الانترنت thread_id ولدت عند إجراء رقم التسلسل الحالي + هذا البيان يتم تنفيذ كتل في كل ما ورد في التكوين. النتائج المذكورة أعلاه واضحة: 1533716166_25519001_1  وهذا الرقم التسلسلي تظهر أيضا في النتائج التي تم إرجاعها من قبل التنفيذ، ويستند كل هذا على ضرورة لفة مرة أخرى إلى تسلسل عدد البيانات SQL الاستعلام الجدول التراجع النسخ الاحتياطي.

    لمزيد من الإرشادات، راجع إلى وظيفة النسخ الاحتياطي وأوضح ثيقة رسمية.

    أخيرا

    مع هذه الأداة مفيدة، بناء على هذا الأساس، فإننا لا يوافق على وظيفة إدارة الحقوق من خلال تطبيق WEB وتشغيل وصيانة ويمكن تحقيق منصة قاعدة البيانات، حقا بحاجة لكتابة ذلك بنفسك؟ لقد وجدت منبرا بناء على عملية قاعدة البيانات وصيانة التأسيس تحقيق الحنين.

    انتعاش جيمس غن "معقدة مع 4" واجبات منتج التنفيذية! وكانت "دليل لفة" الانحدار بشكل كامل

    العليا KNOW WAVE العلامة التجارية الخاصة بالإفراج المشترك الجديد! جلب أيضا قسم الملفات الموسيقية!

    وقال عوزي إلى الله، فائقة: أخي، هذا العام وسوف تساعدك على القيام بذلك!

    BAT الطيار الآلي: تقريبا نفس السلسلة البيئية، تختلف من الناحية التجارية

    الناس يتزاحمون على الحديقة المشمسة في الشمس

    أداء الجبل تجربة Longji أكثر استقرارا فورد إسكيب الجديدة

    غونغ يونيو مفاجأة بالإضافة إلى "مو" "الحشرات الكبرى الغابات ومكافحتها" والكريكيت صغير مع أبولو تجربة مغامرة

    القرش س التمويه! وضع a يحمم APE 1ST CAMO في الشارع الجديد هو الأكثر وسامة!

    تعلم 18 الأدوات، وسوف تكون قادرة على فهم حقا كيف لرصد النطاق الترددي للشبكة!

    RNG مع نهائيات IG توقع بجرأة أن مسابقة الملك ضرب الملك، من المهم

    Jingdong الاستجابة لتسريح العمال: تم الإبلاغ عن وزارة الشائعات، والتعرض قراصنة اوبر "يضاعف" لتدمير أدلة على تسرب البيانات، ورفوف أبل الصين، تطبيق على نطاق واسع | لى فنغ الصباح

    أرسل الحار نسيم الربيع السماء تطيير الطائرات الورقية