مرحباً ، عشاق هبرا! قررت اليوم مشاركة إصدار النسخ الاحتياطي للبيانات من MySql والتحدث عن كيفية استخدامه للتحكم في الإصدار في Git. وإذا كنت مهتمًا بمعرفة كيف يمكنك مراقبة حالة قاعدة البيانات في جميع مراحل التطوير ، أو إجراء النسخ الاحتياطية الصحيحة لقاعدة بيانات مشروعك ونشرها في أي وقت ، فيرجى قراءتها!
ما هذا
هذه مجموعة من البرامج النصية المكتوبة في BASH ، والتي تتيح لهم العمل على أي جهاز تقريبًا يعمل فيه هذا الجهاز ، مصمم لتسهيل إنشاء النسخ الاحتياطية ونشرها. كانت الفكرة الأصلية هي أنه يمكنك إنشاء نقاط توقف لقاعدة البيانات عند كتابة مشروع من قبل فريق من المطورين ، وتخزينه في gita ، وأنا أعلم أن هناك أشياء أكثر جدية لهذا الغرض ، وهذا الحل لا يدعي أنه في مكانهم.
لمن؟
على سبيل المثال ، تفضل تطوير الموقع فورًا على استضافة العميل ومراقبة تقدم التطوير والتغييرات في قاعدة البيانات. إما أن يكون لديك القليل من المال (أو خنق الضفدع) لإنفاقه على منتجات جيدة التحكم في إصدار قاعدة البيانات. يمكنك أيضًا استخدام المشروع كنسخة احتياطية للبيانات لقواعد معينة ، والتي يمكن استخدامها بواسطة التاج. وبطبيعة الحال ، سيكون مفيدًا إذا كنت مطور مبتدئ وبدأت للتو في تعلم أساسيات التطوير ، وكان لديك الرقم 500 بشكل دوري ولا تعرف السبب. أو أنك تقوم بتطوير منتج كفريق وتريد مزامنته تلقائيًا مع الإنتاج عند الضغط على المعلم لتقييم العميل.
ضع في اعتبارك مثال لتطوير الموقع القياسي على الجانب المضيف (معظم الحالات):
- يوجد خادم يدور حوله المشروع وعلى الأرجح أنه إما جهاز محلي أو عميل يستضيف المشروع الحالي.
- يوجد جهاز كمبيوتر محلي تعمل من أجله ، ووفقًا للتقاليد ، يمكنك تخزين الملفات واللقطات للحالات هناك.
- والإنتاج ، هذا هو المكان الذي يتم فيه دمج المنتج النهائي - ولكن يمكن أن يكون أيضًا العنصر الأول مجرد مجلد آخر.
كيف تعمل معها؟
من أجل الامتثال لعنصر التحكم في إصدار قاعدة البيانات باستخدام بوابة ، من الواضح أنك بحاجة إلى الحصول على مقالب في بعض المراحل ، حيث لتخزينها في مكان ما ، وعند التبديل الفروع ، والنظر في هذه النقطة. لهذا ، استخدمت خطافات git ، وهي ملفات البرامج النصية المقابلة (يجب تثبيتها على الكمبيوتر المحلي حيث يتم استخدام git). اعتمادًا على إعدادات ملف التكوين ، قد تبدو عملية العمل كما يلي:
نقوم بإنشاء فرع (تم إجراء النسخ الاحتياطي تلقائيًا) والتبديل والعمل وإضافة الملفات وإنشاء التزام (تم إجراء النسخ الاحتياطي تلقائيًا) ...
تحولت إلى التحقق الرئيسي ، تحولت قاعدة البيانات إلى الحالة السابقة ...
عاد إلى التنمية ، والفروع المدمجة ، بدأت. أي يتم إنشاء نسخ احتياطية تلقائيًا أثناء ارتكابها ،
إما فرض قبل الخروج ، يتم تكوين السلوك في التكوين. يمكنك الاتصال يدويًا بتصدير أو استيراد قاعدة البيانات على الخادم ، من جهاز الكمبيوتر المحلي الخاص بك ، عن طريق تشغيل البرنامج النصي المناسب.
لكل برنامج نصي ، يمكنك الحصول على المساعدة بالطريقة الكلاسيكية باستخدام الوسيطتين -h أو --help.
لا أوصي بالنسخ الاحتياطي لقاعدة البيانات بأكملها ، لا يحب git الملفات الكبيرة ، وفي معظم الحالات ، هذا ليس ضروريًا. لذلك ، يمكنك التهيئة بسهولة باستخدام config.ini
نظرًا لاستخدام الإعدادات على جانب الخادم (حيث يتم رفع mySql) وعلى جانب العميل (كمبيوتر المطور) ، يكون الملف نفسه مسؤولًا عن التكوين. وبالطبع ، يمكن أن يكون نفس جهاز الكمبيوتر إذا كنت تتطور محليًا.
ما يمكن تكوينه لإنشاء تفريغ
- إعدادات اتصال قاعدة البيانات ومسارات تخزين التفريغ
- إشارة إلى موفر لن يكون قادرًا فقط على الحصول على بيانات اتصال قاعدة البيانات ، ولكن أيضًا
ومسح ذاكرة التخزين المؤقت على الخادم بشكل صحيح عند تبديل الفروع. - تصدير قاعدة البيانات بأكملها
- قائمة الجداول التي سيتم استبعادها من التصدير
- أو تصدير جداول محددة
- حفظ بنية دون إدراج البيانات في جداول معينة
- تحديد الحقول للجداول التي لا ينبغي تصدير قيمها ، ويجب
استبدال القيم الافتراضية. - مجموعات قواعد منفصلة في تكوين واحد ، مما سيتيح لك إجراء نسخ احتياطية مختلفة بواسطة CRON
من أجل تسهيل عملية إنشاء مقالب. اعتدت مزودي الملفات. وإعداد (حتى الآن الوحيد) لثورة CMS MODX. بناءً عليه ، يمكنك كتابة نفس المزود لأي CMS.
خطوات موجزة للبدء
, .git, , git [git clone ](https://github.com/Setest/.git-db-watcher) chmod +x install.sh; ./install.sh , ./install.sh -nh
أنت الآن بحاجة إلى إجراء تغييرات على config.ini
. على سبيل المثال ، مثل هذا:
; [hooks] ; H_CHECK_DB_HASH_BEFORE_CHECKOUT=1 ; checkout ; ; git checkout -b new_branch_name H_CHECKOUT_FORCE=0 ; H_CHECKOUT_EVERCOM=1 ; H_CHECKOUT_CLEARCACHE=1 [common] ; EXPORT_FILE="db.sql" ; ; ./export.sh [develop] ; db_export.sh CLI_DB_EXPORT="ssh host '/path/to/project/on/server/.git-db-watcher/db_export.sh'" CLI_DB_IMPORT="ssh host '/path/to/project/on/server/.git-db-watcher/db_import.sh'" ; [server] PHP_PATH="/usr/local/bin/php" CONFIG_INC_PATH="/path/to/project/on/server/core/config/config.inc.php" PROVIDER=modx DB_TABLES_INCLUDE=site_content DB_TABLES_AUTOPREFIX=1 [server_full_site] PHP_PATH="/usr/local/bin/php" CONFIG_INC_PATH="/path/to/project/on/server/core/config/config.inc.php" ; '' - DB_CONFIG_ ; providers PROVIDER=modx ; DB_CONFIG_HOST= DB_CONFIG_TYPE= DB_CONFIG_USER= DB_CONFIG_PASSWORD= DB_CONFIG_CONNECTION_CHARSET= DB_CONFIG_DBASE= DB_CONFIG_TABLE_PREFIX= DB_CONFIG_DATABASE_DSN= ; ( ) ; ; DB_TABLES_INCLUDE=manager_log register_messages user_attributes ; DB_TABLES_INCLUDE=site_content ; ; DB_TABLES_EXCLUDE=session register_messages mse2_words ec_messages ; , , DB_TABLES_AUTOPREFIX=1 ; INSERT DB_TABLES_REMOVE_INSERT="manager_log session register_messages" ; DB_TABLES_REMOVE_INSERT="manager_log" ; ; DB_TABLES_DEFAULT=user_attributes users DB_TABLES_DEFAULT=user_attributes ; , ; , ; DB_TABLES_DEFAULT_user_attributes=sessionid logincount lastlogin thislogin ; DB_TABLES_DEFAULT_users=session_stale ; , [only_users] DB_TABLES_INCLUDE=user user_attributes EXPORT_FILE="users.sql" DB_TABLES_DEFAULT=user_attributes user DB_TABLES_DEFAULT_user_attributes=sessionid logincount lastlogin thislogin DB_TABLES_DEFAULT_users=session_stale
إذا تم تكوين كل شيء بشكل صحيح ، يمكنك تشغيل. / ./export.sh
ويجب عليك
سيظهر تفريغ قاعدة البيانات على الكمبيوتر المحلي وعلى الخادم.
أسئلة أخرى
أحتاج إلى حفظ النتيجة على الخادم إلى مكان آخر:
./db_export.sh --output 1>./xxx.sql
أريد التصدير على الخادم باستخدام البيانات الموجودة في القسم الخاص بي من ملف التكوين:
./db_export.sh -=only_users --output 1>./users.sql
أرغب في استيراد ملف قاعدة بيانات ، لكن لا أريد القيام بذلك من خلال اعتراضات GIT؟
./import.sh ./import.sh EXPORT_FILE=site_name.sql ./import.sh DB_BACKUP_FILE=/.../../site_name.sql ./import.sh --config=site DB_BACKUP_FILE=./site_name.sql
كيفية استيراد بينما يجري على الخادم؟
./db_import.sh < db_backup/db.sql
في المشروعات المختلفة ، استخدم CMS xxx وأنا متعب من إدخال البيانات في كل مرة
لإدارة قواعد البيانات ، كيف يمكنني تبسيط العملية؟
للقيام بذلك ، تحتاج إلى كتابة ملف مزودك عن طريق القياس مع الملفات الموجودة.
أنا خلقت وظيفة CRON والتكوين باستخدام مزود php ، لكنه
لا يعمل ، أو لم يتم مسح ذاكرة التخزين المؤقت لموقع CMS ، ماذا يمكن أن يكون الأمر؟
اعتمادًا على إعدادات الخادم والمهمة نفسها ، يمكن تشغيل وظائف CRON في بيئة مختلفة تمامًا ، والتي قد يختلف فيها المسار إلى المعالج الأولي لـ php ، ونتيجة لذلك ، قم بتشغيل إصدار مختلف تمامًا من php غير متوافق مع الذي تعمل عليه CMS.
خاتمة
لم أكتب أبداً نصوصاً على BASH ، وبالتالي ربما nagovnokodil ، أنا متأكد من أن هناك أشخاص أكفاء يمكنهم ، إذا كانوا مهتمين ، إضافة تعديلاتهم. سوف أقوم بتطوير المشروع باعتباره مصلحة واردة وتحديد الأخطاء في العمل.
ولا تتخلى عن أي شيء على الفور لأن لا شيء يعمل ، ربما لا يمكنك معرفة كيفية التكوين والتثبيت بشكل صحيح (خاصة إذا كنت تعمل على Windows ، ولكن BASH هي بيئة Linux).
تعليمات التثبيت والاستخدام في README. حاولت الكتابة باللغة الإنجليزية على الفور ، ولكن أيضًا بسبب مستوى الهواة ، ربما لن يكون كل شيء واضحًا ، في المستقبل سأكتب باللغة الروسية. إذا كنت تريد إجراء تغييرات على الترجمة أو الكود ، فعليك أن تتخلى عن الصحة! وإذا كانت هناك نصيحة جيدة - شاركها.
ملحوظة: إذا قرأت إلى الأسفل ، فقد أصبح من الممتع والحريص تجربة :-)
ثم انتقل أكثر جرأة لهذا المرجع!