ماذا يعني تفريغ قاعدة البيانات؟ تفريغ واستعادة قاعدة بيانات MySQL

16.03.2019

قد تكون هذه المقالة مفيدة إذا كان لديك موقع ويب يستخدم نظام إدارة المحتوى (Joomla، WordPress، OpenCart، إلخ) وقررت نقله إلى خادم آخر. وهذا لا يتطلب نقل ملفات الموقع فحسب، بل يتطلب أيضًا نقل ملفات . قبل البدء في ترحيل موقع الويب الخاص بك، تحتاج إلى العثور على موقع جيد وطلبه حتى تتمكن من الوصول إلى حساب الاستضافة الجديد الخاص بك. نحن، على سبيل المثال، نقدم خدمات منفصلة مثل Joomla وPrestaShop. إذا كنت تريد نقل موقعك إلى اسم جديد وتحتاج إلى ذلك، خذ وقتك. ستمنحك خطة الاستضافة المشتركة S4 نطاقًا مجانًا. إذا لم تكن الاستضافة المشتركة كافية لموقعك على الويب، فيمكنك دائمًا طلب VPS أو .

لنقل قاعدة بيانات، يجب عليك أولاً إنشاء ملف تفريغ لها، أي وضع محتوياتها في ملف SQL منفصل. ويتم ذلك في القائمة phpMyAdminعلى الاستضافة التي ستنقل منها الموقع. قم بتسجيل الدخول إلى phpMyAdmin، وحدد قاعدة البيانات التي تريد نقلها على اليسار، وانقر على " يصدّر» في القائمة العلوية.

سيتم فتح مربع حوار يجب عليك فيه تحديد النوع قواعد بيانات SQL، ثم اضغط على الزر نعم. انتظر حتى يتم تنزيل ملف قاعدة البيانات على جهاز الكمبيوتر الخاص بك.

الآن يجب وضع هذا الملف بشكل صحيح على استضافتنا. للقيام بذلك، يجب عليك أولاً إنشاء قاعدة بيانات بيانات ماي إس كيو إلفي حساب cPanel الخاص بك، وإضافة مستخدم إليه وتعيين امتيازات له. نوضح أدناه كيفية إنشاء قاعدة بيانات في MySQL.

انتقل إلى cPanel وابحث عن القسم " قاعدة البيانات"، يختار "".

نافذة جديدة ستفتح. في الخطوة 1، أدخل اسم قاعدة البيانات. يرجى ملاحظة أن اسم قاعدة البيانات سيكون دائمًا مسبوقًا؛ وسيحتوي النصف الأول من الاسم على اسم حساب cPanel.

بعد إدخال الاسم اضغط على الزر الخطوة التالية».

في الخطوة 2، تحتاج إلى إنشاء مستخدم MySQL لقاعدة البيانات وتعيين كلمة مرور له. بعد إدخال كافة البيانات اضغط على " إنشاء مستخدم».

عند تعيين امتيازات المستخدم الذي تم إنشاؤه، حدد الخيار " جميع الحقوق"وانتقل إلى الخطوة التالية.

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

يمكنك الآن العثور على قاعدة البيانات التي تم إنشاؤها في قائمة قواعد بيانات MySQL المتوفرة في قائمة لوحة التحكم التي تحمل الاسم نفسه.

الآن، لاستعادة قاعدة بيانات MySQL، نقوم باستيراد محتويات الملف المحفوظ من الاستضافة القديمة ذات الامتداد إلى قاعدة البيانات التي تم إنشاؤها .sql. لهذا الغرض على الصفحة الرئيسية cPanel حدد عنصر القائمة " phpMyAdmin"في نفس القسم" قاعدة البيانات" في النافذة التي تفتح، حدد قاعدة البيانات التي تم إنشاؤها حديثًا من القائمة الموجودة على اليسار وانقر فوق علامة التبويب " يستورد» في القائمة العلوية.

انقر فوق الزر اختر ملف"، في مربع الحوار، حدد ملف SQL المحفوظ مسبقًا وقم بتحميله على الاستضافة. تأكد من أن نوع التشفير هو utf-8. بعد النقر فوق "موافق"، انتظر ظهور رسالة تشير إلى نجاح استيراد قاعدة البيانات.

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

اليوم أريد أن أتحدث عن مقالب قاعدة البيانات. كانت هذه العبارة نفسها مخيفة ذات يوم، رغم أنه لا يوجد شيء مخيف فيها بشكل عام. إذن السؤال الأول والرئيسي: ما هو تفريغ قاعدة البيانات؟ الإجابة على ذلك بسيطة بشكل غير متوقع - تفريغ قاعدة البيانات هو ملف بمحتوياته، والذي يسمح لك باستعادة قاعدة البيانات من البداية. أولئك. إنها مجرد نسخة منه. فلماذا لا يسمى تفريغ قاعدة البيانات "نسخة قاعدة البيانات"؟ النقطة المهمة هي أن التفريغ في حد ذاته ليس قاعدة بيانات، فهو يسمح لك فقط بإعادة إنشائها. النقطة المهمة هي أنه يمكن تخزين قاعدة البيانات فيها ملفات مختلفةاعتمادا على إصدار قاعدة البيانات، على النوع نظام التشغيلوعوامل أخرى. أولئك. من الصعب جدًا العثور على جميع ملفات قاعدة بيانات واحدة في النظام ونقلها إلى نظام آخر. لتسهيل هذه المهمة، يتم استخدام تفريغ قاعدة البيانات.

لماذا من الضروري نقل قاعدة البيانات؟

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

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

لذلك، اكتشفنا ما هو تفريغ قاعدة البيانات. السؤال الوحيد المتبقي هو كيفية استخدامه. لنفكر في مهمة قياسية في برمجة الويب - نقل موقع ويب تم إنشاؤه على جهاز محلي إلى استضافة الويب. لن أصف بالتفصيل عملية نقل الملفات، وسأركز على قواعد البيانات. لذلك، لدينا قاعدة بيانات MySql ومهمة نقلها إلى استضافة الويب. لكي لا نعيد اختراع العجلة، سنستخدم الأداة المساعدة phpMyAdmin المستخدمة على نطاق واسع، والتي، كقاعدة عامة، يتم تثبيتها دائمًا بواسطة مزود الخدمة الخاص بك، ويتم تضمينها أيضًا في Denver. وفي النهاية، الأداة مجانية أيضًا ومتاحة للتنزيل على الموقع الرسمي. يتم تشغيله على خادم ويب ويتم كتابته لغة PHPمما يسمح لك باستخدامه مباشرة في المتصفح. أولئك. لا ينبغي أن تكون هناك أي مشاكل هنا، إذا ظهرت، فاكتب في التعليقات وسنقوم بحلها.

لنبدأ في إنشاء تفريغ قاعدة البيانات. افتح phpMyAdmin، وحدد قاعدة البيانات التي نحتاجها وانقر على "علامة التبويب" يصدّر". ونتيجة لذلك، يجب أن تحصل على شيء مثل هذا:

هنا تحتاج إلى تحديد كافة الجداول (أو تلك التي تحتاج إلى استرجاع التغييرات فيها) ووضع زر الاختيار فيها قيمة SQL. في قسم البنية، يمكنك وضع علامة على الحقل الأول "إضافة جدول إسقاط / عرض / إجراء / وظيفة / حدث" بحيث يتم حذف الجداول المقابلة في قاعدة البيانات الوجهة قبل استيراد التفريغ؛ يمكن ترك خانة الاختيار دون تحديد. في نفس النافذة أدناه نرى قسم "حفظ كملف":

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

تفريغ PhpMyAdmin SQL
- الإصدار 3.2.3
-- http://www.phpmyadmin.net

يتكون الملف نفسه من استعلامات لإنشاء وإدراج القيم في جدول مكتوب لغة SQL. لا توجد شامانية هنا على الإطلاق، كل شيء واضح للغاية. الآن المهمة التالية هي استيراد التفريغ. لا يوجد شيء معقد معها أيضًا. انتقل إلى لوحة تحكم الاستضافة، وابحث عن phpMyAdmin هناك، وقم بتشغيله. قد يتعين عليك تحديد تسجيل دخول/كلمة مرور، اعتمادًا على إعدادات المضيف. حسنًا، الإجراءات متشابهة - حدد قاعدة البيانات المطلوبة، وانقر فوق علامة التبويب "استيراد"، ونرى النافذة التالية:

في قسم "ملف للاستيراد"، باستخدام زر "استعراض"، حدد ملف تفريغ قاعدة البيانات، أدناه ندخل الترميز - في جملة، بشكل افتراضي هو utf-8. يوجد أدناه قسم "الاستيراد الجزئي" وحقل "عدد السجلات (الاستعلامات) للتخطي من النجمة" حيث يمكنك إدخاله قيمة عددية- عدد الصفوف التي تمت معالجتها في مسار واحد، في حالة عدم توفر الوقت الكافي لاستيراد قاعدة البيانات بأكملها أثناء عمر البرنامج النصي. تتوافق القيمة الافتراضية "0" مع استيراد قاعدة البيانات بأكملها في تشغيل برنامج نصي واحد. في ممارستي، لم أضطر أبدا إلى التعامل مع حقيقة أن القاعدة ليس لديها وقت لملء تمريرة واحدة، على الرغم من أن هذا لا يعني أن مثل هذه الحالات لا تحدث. لا يلزم تغيير قيم الحقول المتبقية، فقط اضغط على زر "GO". هذا كل شيء، تم استيراد تفريغ قاعدة البيانات.

وأخيرا، بعض التوضيحات.

1) لماذا قمت بوصف طريقة استيراد/تصدير جميع الجداول وليس قاعدة البيانات بأكملها؟ الحقيقة هي أنه يتعين عليك في أغلب الأحيان التعامل مع إجراء الاستيراد/التصدير عند نقل البيانات من خادم الويب إلى جهاز محلي والعكس صحيح. ولكن في كثير من الأحيان يتم استخدام الوصول إلى الجهاز المحلي حساب"الجذر" بدون كلمة مرور. لا يمكننا تحمل هذا مع الاستضافة. ولا تحتوي قاعدة البيانات على البيانات فحسب، بل تحتوي أيضًا على "الامتيازات" - حقوق الوصول إليها بعض المستخدمين. لتجنب الاضطرار إلى إنشاء/حذف المستخدمين في كل مرة وتعيين حقوق الوصول لهم، يتم استخدام أسلوب يتم فيه تسجيل بنية الجدول والبيانات الموجودة فيه فقط في تفريغ قاعدة البيانات. إذا كنت تقوم فقط بإنشاء نسخة احتياطية لنفس الخادم، فمن الممكن تمامًا إجراء تفريغ لقاعدة البيانات بأكملها.

2) لماذا phpMyAdmin؟ النقطة هنا ليست على الإطلاق أنه لا يوجد بديل لها - فهناك الكثير منها فقط، وهناك أشياء أكثر وظيفية وأشياء أبسط. فقط قم بتسجيل الدخول إلى phpMyAdmin مجموعة قياسيةبالنسبة لمعظم الاستضافة الافتراضية، أي. ليس عليك القيام بأي شيء على الإطلاق لتثبيته. أولئك. نحن فقط نفتحه ونقوم بتفريغ قاعدة البيانات. وبالطبع، يمكن أن يكون استخدام phpMyAdmin مفيدًا للعديد من المهام - مثل اختبار الاستعلامات وعرض بنية الجداول والبيانات الموجودة فيها.

حسنًا، هذا في الواقع كل ما أردت أن أخبرك به في هذا المقال. التعليقات مرحب بها كالمعتاد.

يعد تفريغ قاعدة بيانات MySQL واستعادتها أمرًا بسيطًا للغاية ومريحًا للقيام به عن بعد عبر SSH أو مباشرة من خلال وحدة تحكم الخادم. ويمكن القيام بذلك عن بعد باستخدام برامج PuTTY/Kitty. يمكنك أيضًا تنفيذ الأمثلة أدناه على نظام التشغيل Windows عن طريق تشغيل سطر الأوامر ‘ كمد'. فيما يلي أمثلة حول كيفية إنشاء عمليات تفريغ قاعدة بيانات MySQL ثم استعادتها إذا لزم الأمر، على سبيل المثال لموقعك على الويب أو متجرك عبر الإنترنت أو أي مشروع آخر.

إنشاء تفريغ قاعدة بيانات MySQL

من أجل تنفيذ هذه الأوامر، اتصل عن بعد بالخادم الخاص بك عبر SSH باستخدام أحد البرامج المذكورة أعلاه. بعد الاتصال والترخيص للخادم/الاستضافة، يمكنك إدخال الأوامر أدناه.

# النسخ الاحتياطي لقاعدة بيانات واحدة إلى ملف dump_file.sql mysqldump -uroot -p your_base > dump_file.sql # On تفريغ النوافذمن الأفضل إنشاء أمر مختلف قليلاً يمنع # الكتابة فوق غير المقصودة لسطور التفريغ بسبب تحويل أحرف السطر الجديد "\r\n" إلى "\n" mysqldump -uroot -p your_base -r dump_file_utf8.sql # إذا كنت بحاجة إلى نسخة احتياطية من الجداول الفردية فقط، وليس قاعدة البيانات بأكملها # (حدد أسماء الجداول مفصولة بمسافة بعد اسم قاعدة البيانات) mysqldump -uroot -p your_base TABLE1 TABLE2 TABLE3 > dump_file.sql # إذا كنت بحاجة إلى إنشاء نسخة احتياطية من قاعدة البيانات فقط بنية بدون البيانات نفسها mysqldump -uroot -p -- no-data your_base > dump_file.sql # النسخ الاحتياطي لجميع قواعد البيانات إلى الملف current_date.gz mysqldump -uroot -p --all_databases | gzip -c > "date "+%Y-%m-%d"".gz # النسخ الاحتياطي، حيث يتم إنشاء إدراج منفصل لكل إدخال # ومع إشارة صريحةترميز قاعدة البيانات UTF-8 mysqldump -uroot -p --default-character-set=utf8 your_base --extened-insert=FALSE | gzip -c > "date "+%Y-%m-%d"".gz

# النسخ الاحتياطي لقاعدة بيانات واحدة إلى dump_file.sql

mysqldump - uroot - p your_base > dump_file . SQL

# في نظام التشغيل Windows، من الأفضل إنشاء ملف تفريغ باستخدام أمر مختلف قليلاً يمنع ذلك

# استبدال عشوائي لأسطر التفريغ بسبب تحويل أحرف السطر الجديد "\r\n" إلى "\n"

mysqldump - uroot - p your_base - r dump_file_utf8 . SQL

# إذا كنت بحاجة إلى نسخة احتياطية من الجداول الفردية فقط، وليس قاعدة البيانات بأكملها

# (أشير إلى أسماء الجداول مفصولة بمسافة بعد اسم قاعدة البيانات)

mysqldump - uroot - p your_base TABLE1 TABLE2 TABLE3 > dump_file . SQL

# إذا كنت بحاجة إلى إجراء نسخ احتياطي لبنية قاعدة البيانات فقط دون البيانات نفسها

mysqldump - uroot - p - no - data your_base > dump_file . SQL

# قم بعمل نسخة احتياطية لجميع قواعد البيانات إلى الملف current_date.gz

mysqldump - uroot - p -- all_databases | gzip - c > "date "+%Y-%m-%d"" . gz

# النسخ الاحتياطي، حيث يتم إنشاء إدراج منفصل لكل إدخال

# وتحديد ترميز قاعدة البيانات بشكل صريح UTF-8

mysqldump - uroot - p -- default - Character - set = utf8 your_base -- Extended - Insert = FALSE | gzip - c > "date "+%Y-%m-%d"" . gz

في المثال أعلاه، يتم استخدام الأداة المساعدة لإنشاء نسخة احتياطية com.mysqldump، والذي تم تضمينه مع mysql. فيما يلي المعلمات الخاصة بإنشاء نسخة احتياطية لقاعدة البيانات، والتي سنفحصها بمزيد من التفصيل:

  • - تحدد المعلمة تسجيل الدخول الذي سيتم استخدامه للاتصال بقاعدة البيانات. في المثال، نستخدم تسجيل الدخول الجذر، والذي يجب تحديده في هذه المعلمة بدون مسافة! ونتيجة لذلك، يبدو مثل -uroot
  • - تشير المعلمة إلى أنك بحاجة إلى إدخال كلمة مرور لتسجيل الدخول المحدد. لقد تركناها فارغة، ونتيجة لذلك يجب إدخال كلمة المرور بعد الضغط على "أدخل" عند تنفيذ الأمر. ومع ذلك، يمكنك تحديد كلمة المرور هنا، كما هو الحال في معلمة تسجيل الدخول، بدون مسافة بعد -p، ومع ذلك، فإن هذه الطريقة ليست آمنة، نظرًا لأن وحدة التحكم تحفظ أوامرك في ملف سجل وإذا لم تقم بمسحها بانتظام، يمكن أن يراها المهاجم.
  • your_base- بدلاً من هذا السطر في المثال، تحتاج إلى الإشارة إلى الاسم الحقيقي لقاعدة البيانات الخاصة بك التي تقوم بإنشاء نسخة احتياطية لها.
  • > - عامل يوضح اتجاه العمل، أي. كما لو كان يشير إلى أنك ستكتب من قاعدة البيانات إلى ملف.
  • dump_file.sql– هذا هو اسم ملف .slq الخاص بك الذي تحتاج إلى حفظ قاعدة بياناتك فيه. تتم الإشارة إليه بمسافة بعد عامل التشغيل ">". يمكنك تحديد أي اسم آخر. على سبيل المثال، بحيث يقوم النظام بإدراج الاسم تلقائيًا الوقت الحالي، فقط حدد سطرًا مثل:

    "التاريخ "+%Y-%m-%d""

    "التاريخ "+%Y-%m-%d""


    بعد هذا السطر في المثال تتم الإشارة إلى امتداد الملف " .gz'. ونتيجة لذلك، ملف مثل " 2014-11-15.gz‘.

    انتباه!إذا قمت بتحديد اسم الملف فقط، فسيتم حفظه في نفس الدليل الذي تقوم بالتنفيذ عليه هذا الأمر. أولئك. إذا رأيت شيئًا كهذا في موجه الأوامر # ، أين root@dvsهذا هو اسم تسجيل الدخول واسم الخادم، وسيتم إنشاء الملف في الدليل /بيت. لتغيير حفظ الملف إلى مسار مختلف، حدد بدلاً من الاسم مسار كامللحفظ ملف، على سبيل المثال: /var/www/backup/dump_file.sql.

  • في المثال الثاني، بدلاً من عامل التشغيل ‘ > يتم استخدام "المشغل". | "، مما يشير إلى الحاجة إلى تشغيل أمر gzip إضافي باستخدام المعلمة". " والذي يسمح لك بحزم ملف التفريغ على الفور في أرشيف، وبعد ذلك فقط حفظه في ملف مثل " 2014-11-15.gz"، كما أفاد المشغل" > ‘.
  • معامل -لايوجد بياناتيسمح لك بتفريغ بنية قاعدة البيانات فقط دون البيانات نفسها. مفيد جدًا في بعض الحالات عندما لا تكون هناك حاجة للبيانات.
  • خيارات –default-character-set=utf8و -إدراج ممتد = خطأ. الأول يسمح لك بتحديد الترميز الذي تستخدمه قاعدة البيانات هذه بشكل صريح، وبالتالي تجنب حفظ قاعدة البيانات بترميز خاطئ، فبدلاً من utf8، يمكنك تحديد أي ترميز آخر، على سبيل المثال cp1251. تسمح لك المعلمة الثانية بتحديد ضرورة إنشاء أمر INSERT منفصل لكل سجل عند التصدير. في بعض الحالات، قد يكون ذلك مطلوبًا عند استعادة البيانات جزئيًا من ملف التفريغ.
  • استعادة قاعدة بيانات من ملف تفريغ MySQL

    الآن دعونا ننظر إلى الأمر معك عملية عكسيةاستعادة قاعدة البيانات من ملف تفريغ. هذا الفعليتم تنفيذها باستخدام برامج ماي اس كيو ال. دعونا نلقي نظرة على مثال على الفور.

يحتوي هذا المنشور على الأوامر الأكثر استخدامًا لإنشاء أو نشر نسخ احتياطية لقواعد بيانات MySQL.

حسنًا، لقد سئمت من البحث المستمر عن المفاتيح على Google عندما أحتاج إليها "فجأة".

القليل من النظرية...

MySQLDUMP هي أداة تسمح لك بإنشاء نسخ احتياطية من قواعد بيانات MySQL. ونتيجة لذلك، نحصل على ملف .sql مع تفريغ قاعدة البيانات. يحتوي هذا الملف على كود Sql في شكل نص، أي. يمكنك دائمًا فتحه باستخدام محرر نصوص للعرض والتحرير وما إلى ذلك ...
يمكنك استعادة هذا التفريغ باستخدام الأداة المساعدة mysql عبر STDIN.

بالمناسبة، هناك أيضًا أداة مساعدة مثل MySqlHotCopy، والتي تُستخدم بشكل أفضل لإنشاء نسخ احتياطية سريعة، حيث تقوم بتأمين قاعدة البيانات ونسخ ملفات قاعدة البيانات إلى المكان الصحيح. لكن هذا الشيء لن يعمل إلا إذا تم تشغيله على الخادم نفسه، فهو يعمل فقط مع جداول MyISAM وArchive وهو مناسب أكثر لقواعد البيانات الكبيرة.
يمكنك استرداد البيانات عن طريق نسخ الملفات المحفوظة إلى دليل بيانات MySQL.

لكن بشكل عام، الأمر لا يتعلق بها... ربما سأكتب عن "النسخة الساخنة" في مقال آخر...

خلق نسخة إحتياطيةقاعدة البيانات

لنبدأ بالأمر الأكثر شيوعًا لتفريغ موقع site.ru في ملف site.ru:

Mysqldump -uroot -h10.30.30.10 -p site_ru > site_ru.sql

    المزيد عن المفاتيح:
  • (--user=...) هو اسم مستخدم قاعدة البيانات؛
  • (—المضيف=…) هو المضيف الذي يقع عليه الخادم نفسه. إذا كان الخادم محليًا، فلا يمكن استخدام هذه المعلمة أو يمكن إدخال المضيف المحلي هناك. ضع في اعتبارك أيضًا أنه يجب كتابة عنوان IP الخاص بالخادم بعد المفتاح بدون مسافة؛
  • (--password=...) هي كلمة مرور المستخدم. إذا لم يتم استخدام هذا المفتاح، فسيكون الاتصال بقاعدة البيانات ممكنًا في حالة عدم وجود كلمة مرور. أيضًا، لا أحد يمنع إدخال كلمة مرور في الأمر، ويجب ألا يكون هناك مسافة بعد المفتاح (على سبيل المثال: -p1234567890، حيث 1234567890 هي كلمة المرور)؛
  • site_ruهذا هو اسم قاعدة البيانات الموجودة على خادم MySql؛
  • site_ru.sqlهذا هو ملف التفريغ.

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

Mysqldump -uroot -h10.30.30.10 -p site_ru site2_ru site3_ru > sites.sql

إذا كان الوضع لا يمنحك الوقت للتفكير، وتحتاج إلى عمل نسخة احتياطية لجميع قواعد البيانات، ففي هذه الحالة يمكنك استخدام المفتاح --جميع قواعد البيانات، إليك مثال:

Mysqldump -uroot -h10.30.30.10 -p -A> all-db.sql

بالمناسبة، هناك فارق بسيط.

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

الطريقة الأولى هي قفل الجداول، أي. يمكنك استخدام المعلمة --lock-tables، إليك مثال:

Mysqldump -uroot -h10.30.30.10 -p --lock-tables site_ru > site_ru.sql

ولكن في وقت إنشاء النسخة الاحتياطية، سيتم تعليق طلبات العملاء... وبالتالي قد تكون هناك مهلات.

الطريقة الثانية هي استخدام مفتاح --flush-log عند إنشاء نسخة احتياطية. سيؤدي هذا المفتاح إلى إغلاق سجل الإجراءات القديم وإنشاء سجل جديد. إذا قام شخص ما بكتابة شيء ما أثناء إنشاء نسخة، فسوف ينعكس ذلك في بداية السجل وسيكون من الممكن نقل هذا التغيير إلى قاعدة البيانات. بعد ذلك، للتأكد، بعد الانتهاء من النسخ الاحتياطي، تحتاج إلى تشغيل الأمر mysqladmin -flush-logs وترك نسخة من السجل الثنائي قبل الأخير.

استعادة نسخة احتياطية لقاعدة البيانات

هنا ستحكم الأداة المساعدة "mysql" بالفعل. هنا مثال:

Mysql -uroot -h10.30.30.10 -p site_ru< site_ru.sql

طريقة أخرى أكثر تحذقا:

Mysql -uroot -p أدخل كلمة المرور: مرحبًا بك في شاشة MySQL. الأوامر تنتهي بـ ; أو\ز. معرف اتصال MySQL الخاص بك هو 35 إصدار خادم: 5.6.35-1+deb.sury.org~xenial+0.1 (Ubuntu) حقوق الطبع والنشر (c) 2000، 2016، Oracle و/أو الشركات التابعة لها. كل الحقوق محفوظة. أوراكل هي علامة تجارية مسجلة لشركة شركة أوراكلو/أو الشركات التابعة لها. قد تكون الأسماء الأخرى علامات تجارية لمالكيها. اكتب "مساعدة؛" أو "\h" للمساعدة. اكتب "\c" لمسح بيان الإدخال الحالي. الخلية> استخدم site_ru؛ الخلية> المصدر site_ru.sql؛

حسنًا، إذا تم حفظ قاعدة البيانات الخاصة بك في أرشيف gz، فيمكنك دمجها أوامر الخليةو zcat مثل هذا:

Zcat site_ru.sql.gz | mysql -uroot -h10.30.30.10 -p site_ru

المزيد من الخيارات لاستخدام mysqldump

على سبيل المثال، نحتاج إلى قاعدة بيانات في منطقة التطوير، وصندوق حماية، إذا جاز التعبير، وحجم قاعدة البيانات الرئيسية كبير جدًا. يمكنك استخدام المفتاح -where="true Limit 150"، والذي سنحدد له بوضوح عينة بيانات لا تزيد عن 150 سجلاً. هنا مثال:

Mysqldump -uroot -h10.30.30.10 -p --where="الحد الحقيقي 150" site_ru > site_ru.sql

إذا كنا بحاجة فقط إلى بنية بدون بيانات، فيمكننا استخدام رمز التبديل --no-data، هنا مثال

Mysqldump -uroot -h10.30.30.10 -p --no-data site_ru > site_ru.sql

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

Mysqldump -u root -p اسم جدول testdb > testdb_table_backup.sql

إذا كنا بحاجة إلى نسخة من المشغلات والإجراءات والأحداث (المجدول المدمج)، فإليك مثال:

Mysqldump --no-create-info --no-data --triggers --routines --events -uroot -p site_ru | gzip > ~/database.sql.gz

يمكنك أيضًا إنشاء تفريغ قاعدة بيانات مؤرشفة على الفور. يمكنك القيام بذلك على النحو التالي:

Mysqldump -uroot -p site_ru | gzip > /path/to/site_en.sql.gz

ويمكنك أيضًا تحديد تاريخ إنشاء الأرشيف، مثل هذا:

Mysqldump -uroot -p site_ru | gzip > `التاريخ +/المسار/إلى/site_ru.sql.%Y%m%d.%H%M%S.gz`

مفاتيح لاستخدام mysqldump

فيما يلي مفاتيح mysqldump الأكثر شيوعًا:

توسيع القائمة...

  • --add-drop-database - يضيف عبارة DROP DATABASE قبل كل عبارة CREATE DATABASE.
  • --add-drop-table - يضيف عبارة DROP TABLE قبل كل عبارة CREATE TABLE.
  • --إضافة أقفال - يضيف عامل القفل TABLES قبل التنفيذ وUNLOCK TABLE بعد تفريغ كل جدول (لتسريع الوصول إلى MySQL).
  • --all-databases, -A - يحفظ جميع الجداول من جميع قواعد البيانات التي يديرها الخادم الحالي.
  • --allow-keywords - السماح بإنشاء أسماء الأعمدة التي تطابق الكلمات الرئيسية. يتم ضمان تجنب التعارضات عن طريق إضافة اسم الجدول كبادئة لاسم كل عمود.
  • —comments, -i — تسمح لك هذه المعلمة بإضافة معلومات إضافية إلى التفريغ، مثل إصدار mysqldump، وإصدار MySQL، واسم المضيف حيث يوجد خادم MySQL.
  • --compact يؤدي هذا الخيار إلى قيام mysqldump بإنشاء ملف تفريغ باستخدام التنسيق الأكثر ضغطًا قدر الإمكان. المعلمة هي عكس التعليقات.
  • --compatible=name — تُنشئ المعلمة مخرجات متوافقة مع أنظمة إدارة قواعد البيانات (DBMS) الأخرى أو الإصدارات الأقدم من MySQL. بدلاً من الكلمة الأساسية للاسم، يمكنك استخدام: "ansi"، "mysql323"، "mysql40"، "postgresql"، "Oracle"، "mssql"، "db2"، "maxdb"، "no_key_options"، "no_table_options"، "no_field_options". يمكنك استخدام قيم متعددة، مفصولة بفواصل.
  • --إدراج كامل، -c - مستعمل بالشكل الكاملعبارة INSERT (مع أسماء الأعمدة).
  • --create-options - يضيف معلومات إضافية إلى عبارات CREATE TABLE. يمكن أن يكون هذا نوع الجدول، القيمة البدائية AUTO_INCREMENT والمعلمات الأخرى.
  • --databases, -B - تسمح لك المعلمة بتحديد أسماء العديد من قواعد البيانات التي تريد إنشاء ملف تفريغ لها.
  • --delayed — استخدم الأمر INSERT DELAYED عند إدراج صفوف.
  • --delete-master-logs - يقوم خادم النسخ المتماثل الرئيسي تلقائيًا بحذف السجلات الثنائية (logbin) بعد إنشاء ملف تفريغ بنجاح باستخدام mysqldump. يقوم هذا الخيار تلقائيًا بتمكين خيار "--master-data".
  • --disable-keys, -K - لكل جدول، قم بإحاطة عبارة INSERT بالتعبيرات /*!40000 ALTER TABLE tbl_name DISABLE KEYS */; و /*!40000 ALTER TABLE tbl_name ENABLE KEYS */; في إخراج نتيجة التفريغ. سيؤدي هذا إلى تسريع تحميل البيانات على الخادم لجداول مثل MyISAM، حيث يتم إنشاء الفهارس بعد إدخال جميع البيانات.
  • --extend-insert, -e - استخدم أمر INSERT مع بناء الجملة الجديد متعدد الأسطر (يعمل على تحسين ضغط وأداء عبارات الإدخال).
  • --flush-logs, -F - كتابة البيانات على القرص سجل النظاممن المخزن المؤقت لخادم MySQL قبل بدء عملية التفريغ.
  • --force, -f - استمر حتى في حالة حدوث خطأ أثناء عملية إنشاء التفريغ.
  • —hex-blob — تسمح لك المعلمة بتمثيل البيانات الثنائية في الحقول من النوع BINARY وVARBINARY وBLOB وBIT بتنسيق سداسي عشري. لذلك سيتم استبدال التسلسل "abc" بـ 0x616263.
  • --ignore-table=db_name.tbl_name - يسمح بتجاهل جدول tbl_name الخاص بقاعدة بيانات db_name عند إنشاء ملف تفريغ. إذا كنت بحاجة إلى استبعاد عدة جداول من التفريغ، فيجب عليك استخدام عدة معلمات "--ignore-table"، مع تحديد جدول واحد في كل معلمة.
  • --إدراج-تجاهل - إضافة الكلمة الرئيسيةتجاهل في عبارة INSERT.
  • --lock-all-tables, -x - يؤدي تحديد هذه المعلمة إلى قفل جميع الجداول في جميع قواعد البيانات أثناء إنشاء تفريغ كامل لجميع قواعد البيانات.
  • --lock-tables, -l - يؤدي تحديد هذا الخيار إلى قفل جداول قاعدة البيانات التي يتم إنشاء التفريغ لها.
  • --no-autocommit - يتضمن جميع عبارات INSERT الموجودة في نفس الجدول في معاملة واحدة، مما يؤدي إلى تحميل البيانات بشكل أسرع.
  • --no-create-db, -n - يمنع تفريغ عبارات CREATE DATABASE التي تتم إضافتها تلقائيًا عند استخدام خيارات --databases و --all-databases.
  • --no-data, -d - يمنع إنشاء عبارات INSERT في التفريغ، والتي يمكن أن تكون مفيدة عند تفريغ بنية قاعدة البيانات بدون البيانات نفسها.
  • —opt — تهدف المعلمة إلى تحسين سرعة النسخ الاحتياطي للبيانات وهي اختصار يتضمن الخيارات التالية: - سريع - إضافة جدول إسقاط - أقفال إضافية - خيارات إنشاء - تعطيل المفاتيح - إدراج ممتد - جداول القفل - مجموعة الأحرف. منذ MySQL 4.1، يتم استخدام الخيار --opt افتراضيًا، أي. يتم تمكين كافة الخيارات المذكورة أعلاه بشكل افتراضي، حتى لو لم يتم تحديدها. لاستبعاد هذا السلوك، يجب عليك استخدام المعلمة --skip-opt
  • --order-by-primary - يؤدي تحديد المعلمة إلى حدوث ذلك. أن يتم فرز كل جدول حسب المفتاح الأساسيأو الفهرس الفريد الأول.
  • --المنفذ، -P - الرقم منفذ تي سي بي، يستخدم للاتصال بالمضيف.
  • —protocol=(TCP|SOCKET|PIPE|MEMORY) — تتيح لك المعلمة ضبط البروتوكول للاتصال بالخادم.
  • —quick, -q — يتيح لك البدء في إنشاء ملف تفريغ دون انتظار حمولة كاملةالبيانات من الخادم وبالتالي توفير الذاكرة.
  • --quote-names, -Q — ضع أسماء قاعدة البيانات والجداول والأعمدة في علامات التحديد الخلفية `. اعتبارًا من MySQL 4.1، يتم تمكين هذا الخيار افتراضيًا.
  • --replace - يضيف الكلمة الأساسية REPLACE إلى عبارة INSERT. ظهر هذا الخيار لأول مرة في MySQL 5.1.3.
  • --result-file=/path/to/file, -r /path/to/file - ترسل المعلمة التفريغ إلى ملف ملف. يعد هذا الخيار مفيدًا بشكل خاص على نظام التشغيل Windows، دون استخدام سطر الأوامر. عندما يمكنك إعادة توجيه النتيجة إلى ملف باستخدام التسلسلين > و >>.
  • --routines, -R - يقوم هذا الخيار بإنشاء تفريغ للإجراءات والوظائف المخزنة. متوفر مع MySQL 5.1.2.
  • --single-transaction - يقوم الخيار بإنشاء تفريغ كمعاملة واحدة.
  • —تخطي التعليقات — تتيح لك هذه المعلمة منع إخراج المعلومات الإضافية إلى التفريغ.
  • --socket=/path/to/socket, -S /path/to/socket - ملف مأخذ التوصيل للاتصال بالمضيف المحلي.
  • —tab=/path/, -T /path/ — عند استخدام هذه المعلمة، يتم إنشاء جدولين في دليل المسار لكل جدول ملف منفصل: tbl_name.sql، الذي يحتوي على عبارة CREATE TABLE، وtbl_name.txt، الذي يحتوي على بيانات الجدول المحدد بعلامات جدولة. يمكن تجاوز تنسيق البيانات بشكل صريح باستخدام خيارات --fields-xxx و --lines-xxx.
  • --tables - يتجاوز معلمة --databases (-B). يتم التعامل مع كافة الوسائط التي تتبع هذه المعلمة كأسماء جداول.
  • -المشغلات - إنشاء تفريغ للمشغلات. يتم تمكين هذا الخيار بشكل افتراضي. ولتعطيله، استخدم خيار --skip-triggers.
  • --events, -E — إنشاء ملف تفريغ للحدث. راجع MySQL Event Scholer أو مدير الأحداث المدمج في MySQL.
  • --tz-utc - عند الاستخدام هذه المعلمةستتم إضافة عامل تشغيل بالنموذج SET TIME_ZONE='+00:00′ إلى التفريغ، مما سيسمح بتبادل التفريغ في مناطق زمنية مختلفة.
  • --verbose, -v - وضع الإخراج الممتد. الاستنتاج أكثر معلومات مفصلةعن عمل البرنامج.
  • --version, -V — عرض معلومات حول إصدار البرنامج.
  • —where='where-condition', -w 'where-condition' — تفريغ السجلات المحددة فقط. يرجى ملاحظة أن علامات الاقتباس مطلوبة.
  • --xml, -X - يمثل تفريغ قاعدة البيانات بتنسيق XML.
  • --first-slave, -x - يقفل جميع الجداول في جميع قواعد البيانات.
  • —debug=…, -# — مراقبة تقدم البرنامج (لتصحيح الأخطاء).
  • --مساعدة - الإخراج معلومات اساسيةوالخروج من البرنامج.

تحيات أصدقاء! 🙂

قررت اليوم مواصلة المحادثة حول العمل مع MySQL في وحدة التحكم والانتباه إلى إجراء تصدير قاعدة بيانات MySQL.

سأتحدث في هذه المقالة عن كيفية تفريغ قاعدة بيانات MySQL، وكذلك رفع البيانات من MySQL إلى ملف اكسلوتنسيق CSV.

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

سنتحدث أيضًا عن كيفية إخراج البيانات من قاعدة بيانات MySQL في وحدة تحكم الخادم وسطر أوامر MySQL.

لن أتحدث في هذه المقالة عن كيفية تصدير البيانات باستخدام phpMyAdmin والأدوات المرئية الأخرى.

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

وثانيًا، قمت بنفسي بمراجعة عملية إخراج المعلومات من قاعدة بيانات MySQL إلى ملف SQL بإيجاز في إحدى مقالاتي التي تحدثت عنها.

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

أريدك أن تفهمني بشكل صحيح: لا أريد الإساءة إليك بأي شكل من الأشكال، ولكن أريد فقط أن تقضي وقتك مع أقصى فائدةللحصول على الوظيفة وحصلوا على ما كانوا يبحثون عنه.

بهذا نختتم الجزء التمهيدي وننتقل إلى مراجعة أوامر وحدة التحكم لإنشاء تفريغ قاعدة بيانات MySQL، والتي قررت فرزها حسب كمية البيانات المحفوظة: بدءًا من تصدير قاعدة البيانات بأكملها، وانتهاءً بالجداول الفردية ونتائج استفسارات تعسفية.

إنشاء تفريغ قاعدة بيانات MySQL عبر وحدة التحكم

أود أن أقدم توضيحًا صغيرًا في البداية.

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

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

تصدير البياناتهو ببساطة استخراج المعلومات من الجداول إلى نموذج النصلمزيد من العمل مع محرري النصوص أو الرسوم.

لذلك، ستكون أوامر هذه الإجراءات مختلفة قليلاً.

لإنشاء تفريغ قاعدة بيانات، يحتوي MySQL على أداة مساعدة مضمنة تسمى com.mysqldump، والتي يجب استخدامها خارج سطر أوامر MySQL في وحدة تحكم الخادم أو أي غلاف آخر.

لذلك، بالنسبة للخيار الأبسط والأكثر شيوعا - تصدير البيانات من قاعدة بيانات معينة إلى وحدة تحكم MySQLلنقله إلى خادم آخر أو النسخ الداخليتحتاج إلى تشغيل الأمر التالي:

Mysqldump -u اسم المستخدم -p اسم_قاعدة البيانات > path_and_dump_file_name

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

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

Mysqldump -u اسم المستخدم -p --جميع قواعد البيانات > path_and_dump_file_name

لتفريغ عدد قليل فقط من قواعد البيانات المحددة، ستحتاج إلى استدعاء mysqldump باستخدام المعلمات التالية:

Mysqldump -u اسم المستخدم -p --قواعد بيانات قاعدة البيانات_name1, قاعدة البيانات_اسم2, ... > path_and_dumpfile_name

نتيجة لذلك، في كل حالة، ستتلقى تفريغ قاعدة بيانات MySQL يحتوي على أوامر لإنشاء بنية الجداول المضمنة (الحقول، وأنواعها، والفهارس، والمفاتيح، وما إلى ذلك)، بالإضافة إلى عمليات ملئها بالبيانات.

هذا الخيار مناسب فقط لاستعادة ونسخ قواعد البيانات بأكملها.

كيفية عمل نسخ احتياطية لبعض جداول MySQL واستلام بياناتها فيها شكل قابل للقراءة، سنتحدث أكثر.

تفريغ جدول MySQL وتصدير البيانات

لإنشاء ملف تفريغ لبعض جداول قاعدة بيانات MySQL، سنحتاج إلى نفس الأداة المساعدة com.mysqldump، يتم استدعاؤه باستخدام المعلمات التالية:

Mysqldump -u اسم المستخدم -p اسم قاعدة البيانات table_name1, table_name2, ... > path_and_dumpfile_name

عند استدعاء mysqldump، يمكنك تحديد الجداول المطلوبة كقيمة المعلمة --الجداولعند استخدام المعلمة --قواعد بياناتسيتم تجاهل:

Mysqldump -u اسم المستخدم -p --قواعد بيانات قاعدة بيانات_اسم1, قاعدة بيانات_اسم2 --جداول جدول_اسم1, جدول_اسم2, ... > path_and_dumpfile_name

سيعرض المثال أعلاه الخطأ التالي:

Mysqldump: حصلت على خطأ: 1049: قاعدة بيانات غير معروفة "database_name1،" عند تحديد قاعدة البيانات

كما ترون، سيتم استخدام أحدث قاعدة بيانات من القائمة فقط. من حيث المبدأ، هذا السلوك منطقي تماما، لأنه قد لا تظهر الجداول المحددة في كافة قواعد البيانات.

حسنًا، لقد تلقينا تفريغًا لجداول قاعدة بيانات MySQL. يمكن استخدامه لاستعادتها أو نسخها مع البنية.

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

سيساعدنا خيار الاتصال بالأداة المساعدة في تحقيق خططنا mysqlمن وحدة التحكم مع معلمات معينة:

Mysql -u اسم المستخدم -p قاعدة البيانات_اسم -e "SELECT * FROM table_name"

سيسمح لنا هذا الأمر بتنفيذ استعلام إلى قاعدة البيانات المطلوبة وإخراج النتيجة إلى وحدة التحكم دون الدخول إلى سطر الأوامر سلسلة ماي إس كيو إل.

حسنًا، لكي لا يتم إخراج البيانات إلى وحدة التحكم، ولكن لكتابتها في ملف، تحتاج إلى استكمال الأمر على النحو التالي:

Mysql -u اسم المستخدم -p -e "SELECT * FROM tablename"> path_and_filename

بفضل هذه الإنشاءات، لا يمكننا فقط الحصول على البيانات المخزنة في جميع حقول الجدول، ولكن أيضًا في حقول محددة. للقيام بذلك، ما عليك سوى استبدال رمز أحرف البدل (*) بالأحرف المطلوبة، مفصولة بفواصل.

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

إذا كنت ترغب في تصدير البيانات من قاعدة بيانات MySQL بتنسيق xls أو csv بحيث يتم عرض الملف الناتج بشكل صحيح في برامج تحرير جداول البيانات، فسنخبرك بكيفية القيام بذلك بعد قليل :)

إنشاء نسخ احتياطية وإخراج البيانات من قاعدة بيانات MySQL باستخدام الاستعلامات

تحدثنا عن كيفية تفريغ قاعدة بيانات MySQL - واحدة أو أكثر، بالإضافة إلى الجداول الفردية. ولكن في بعض الأحيان تكون هناك حالات تحتاج فيها إلى تصدير مجموعة بيانات لا تقتصر على جدول واحد. أو تحتاج إلى تحديد بعض البيانات فقط من الجدول.

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

للنسخ الاحتياطي سنحتاج إلى نفس الأداة المساعدة com.mysqldump، والتي يجب أن يتم استدعاؤها على النحو التالي:

Mysqldump -u user_name -p قاعدة البيانات_اسم table_name --حيث "البحث"> path_and_dump_file_name

نتيجة لذلك، سنتلقى ملفًا يحتوي على أوامر SQL لإنشاء جدول ببنيته بالكامل، والذي سيتم ملؤه بعد الإنشاء بالمعلومات المحددة باستخدام استعلام بحث.

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

Mysql -u user_name -p -e "SELECT * FROM table_name حيث البحث"> path_and_file_name

كما تفهم، بالإضافة إلى التوضيحات المختلفة المحددة في الطلب باستخدام التوجيه أين، يمكنك استخدام بنيات SQL الأخرى: ينضم, اتحادإلخ.

يمكنك جمع أي نوع من الإحصائيات :)

يمكن أيضًا تنفيذ نفس الإجراء عند العمل على سطر أوامر MySQL باستخدام الأمر التالي:

حدد * من قاعدة بيانات_الجدول حيث يتم البحث في الملف الخارجي "path_and_file_name"؛

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

إذا كان ما ورد أعلاه هو حالتك، فيمكنك العثور على قائمة كاملة بالمعلمات والخيارات لاستدعاء هذا الأمر هنا - https://dev.mysql.com/doc/refman/5.7/en/select-into.html

في نهاية له رحلة قصيرةبالنسبة لـ mysqldump، أود أن أعطي خيارًا لاستدعاء أمر بقائمة من المعلمات لإنشاء تفريغ محسّن لقاعدة بيانات وجداول MySQL، واستعادة قاعدة البيانات والجداول الفردية التي ستستغرق وقتًا أقل من المكالمة العادية:

Mysqldump -u username -h host_or_IP_MySQL_server -p --no-autocommit --optdata_name > path_and_dump_file_name;

من باب التجربة استخدمت هذا الخيارمن أجل تفريغ قاعدة بيانات MySQL بحجم 143 ميجابايت. استغرقت عملية الاستعادة اللاحقة 59 ثانية مقارنة بدقيقة واحدة و3 ثوانٍ عند استعادة قاعدة البيانات من ملف تفريغ تم إجراؤه عن طريق استدعاء mysqldump بدون معلمات خاصة.

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

إذا واجهت مثل هذا الموقف، فلا تنس أولاً أرشفة تفريغ قاعدة بيانات MySQL. الأفضل هو tar.gz. ثم سيستغرق التعافي وقتًا أقل.

تصدير البيانات من MySQL إلى ملفات Excel وcsv

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

كما تعلم، فإن الاختلاف الوحيد المهم بين هذه التنسيقات هو أن امتدادات xls وxlsx تحتوي على ملفات تم إنشاؤها فيها برنامج مايكروسوفت مكتب اكسل، والذي يعمل فقط في نظام التشغيل Windows، في حين أن ملفات CSV أكثر عالمية والعمليات معها ممكنة في العديد من المحررين.

هذا لا يعني أن XLS موجود في أي مكان باستثناء مايكروسوفت أوفيسلن يتم فتح برنامج Excel. نفس OpenOffice يؤكد العكس.

ولكن لمثل هذا الاحتمال هذا الدعميجب أن يكون موجودا في منتج برمجي. تكون ملفات csv قابلة للقراءة حتى في محرر النصوص العادي مثل Notepad، ولكن هذا النموذج لن يكون قابلاً للقراءة بالكامل.

اسمحوا لي أن أبدأ بحقيقة أنه لا يمكنك التصدير إلا إلى ملف XLS أو ملف CSV نتائج SQLيطلب أن تعلمت أنا وأنت العمل في وقت سابق، لأن سيكون من المستحيل إخراج قاعدة البيانات بأكملها في ملف واحد في عملية واحدة.

أولاً، هذا ليس الأمثل، لأن... من غير المرجح أن يتم فتح مثل هذا الملف إذا كان هناك كمية كبيرة من المعلومات المخزنة في قاعدة البيانات. وثانيًا، ليس من الواضح كيفية تقسيم المعلومات الموجودة داخل الملف إلى جداول وحقول.

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

إذا عرفت فجأة كيف يمكنك تصدير المعلومات من قاعدة بيانات MySQL بأكملها إلى واحدة أو أكثر ملف xls ov في وحدة التحكم، ثم اكتب عنها في التعليقات. أعتقد أن القراءة عن هذا ستكون مفيدة للكثيرين.

لذلك، إذا كنا نتحدث عن كيفية تصدير البيانات من MySQL إلى XLS وCSV، فيمكن القيام بذلك مباشرة في وحدة تحكم الخادم من خلال الأداة المساعدة mysqlأو في العمل الذي عرفتك به في مقالتي السابقة.

لنبدأ بالترتيب.

يمكنك تصدير البيانات من قاعدة بيانات MySQL إلى تنسيقات csv وxls مباشرة في وحدة تحكم الخادم باستخدام الأوامر التالية.

على لينكسالأنظمة:

Mysql -u اسم المستخدم -d قاعدة بيانات_name -p -e "SELECT * FROM قاعدة بيانات_جدول؛" | sed "s/"/\"/;s/\t/\",\"/g;s/^/\"/;s/$/\"/;s/\n//g" > path_and_file_name. ملف CSV

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

على شبابيك:

تصدير البيانات من جداول ماي إس كيو إلفي ملف CSV باستخدام الأمر أعلاه في في هذه الحالةلسوء الحظ، لن يكون ذلك ممكنا، لأن Windows، على عكس Linux، لا يحتوي على نظام مدمج أمر وحدة التحكمللعمل مع المواضيع، وهو sed في لينكس.

وبطبيعة الحال، يمكنك تثبيته، ولكن هناك الكثير من المتاعب. بدلا من ذلك، يمكنك استخدام CygWin- محاكي وحدات تحكم لينكسلأنظمة ويندوز.

من الجيد أن تكون قد قمت بتثبيته بالفعل. وإلا فإن تصدير البيانات من قاعدة بيانات MySQL باستخدام الطريقة المختارة سيجلب لنا الكثير من المتاعب.

لكن استخراج المعلومات إلى ملف xls أمر سهل مثل 5 كوبيل :) ومن السهل جدًا تشغيله بالطريقة الآتيةوالذي قمت بتجربته شخصيا:

Mysql -u اسم المستخدم -d قاعدة بيانات_name -p -e "SELECT * FROM قاعدة بيانات_جدول؛" > path_and_file_name.xls

افتتح هذا الملففي Microsoft Office Excel دون أي مشاكل على الإطلاق. الشيء الوحيد هو أنه عند فتحه ظهرت رسالة على الشاشة تحذر من ذلك تنسيق صالحيختلف الملف الذي يتم فتحه عن امتداده المحدد.

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

لا أعلم، ربما إذا قمت بتنفيذ أي إجراءات محددة في Microsoft Office Excel، فستظهر المشاكل في المستقبل، ولم أتعمق في الأمر. عند عرض البيانات بشكل طبيعي، على الأقل، لم أر أي شيء غير عادي.

إذا واجهت أي مشاكل أثناء استخدام ملف xls المصدر من MySQL سواء في هذا البرنامج أو في غيره، فيرجى إبلاغي بذلك في التعليقات.

باستخدام الطريقة الموضحة أعلاه، يمكنك تصدير محتويات قاعدة بيانات MySQL إلى ملف CSV، من حيث المبدأ. ولكن بعد ذلك، سيتم كتابة البيانات من مجالات مختلفة في الجدول بشكل جماعي، دون محددات، والتي قد لا يتم عرضها بشكل جيد في برامج مختلفة للعمل مع الجداول، والتي تعمل عادة مع ملفات CSV.

بالمناسبة، OpenOffice لا يهتم :) لقد قام تلقائيًا بتحديد المعلومات التي تم الحصول عليها بالطريقة التي قمنا بتصدير محتويات قاعدة بيانات MySQL إلى xls. لا أعرف كيف يفعل ذلك، لكن أنصح باستخدامه :)

حسنا، نفس Microsoft Office Excel عرض جميع المعلومات المقابلة لسجل واحد في الجدول، وكتابتها في خلية واحدة دون أي محددات. أعتقد ذلك بطريقة مماثلةالمزيد من محرري الجدول قادمون.

ولذلك، عند تصدير قاعدة بيانات MySQL إلى ملفات csv، فإنك تحتاج إلى القيام بذلك عن طريق فصل المعلومات بأحرف خاصة يفهمها المحررون.

ثم اقتربت تدريجيًا من الطريقة الثانية لتصدير بيانات MySQL إلى ملفين csv وxls، وهي استخدام سطر أوامر MySQL.

لذا، من أجل تصدير بيانات MySQL إلى ملف CSV بهذه الطريقة، نحتاج إلى الأمر التالي:

SELECT * من قاعدة بيانات_الجدول إلى الحقول الخارجية "path_and_file_name.csv" التي تم إنهاؤها بواسطة "،" المغلقة بواسطة """ الخطوط المنتهية بواسطة "\n"؛

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

يعد هذا الأمر أيضًا رائعًا لتصدير بيانات MySQL إلى ملف xls العرض الصحيحفي مايكروسوفت أوفيس إكسل. فقط في هذه الحالة لا نحتاج إلى فواصل، لأن سوف تتداخل مع تقسيم المعلومات إلى خلايا:

حدد * من قاعدة بيانات_الجدول إلى الملف الخارجي "path_and_file_name.xls"؛

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

خطأ 1290 (HY000): خادم ماي إس كيو إليجري مع ال--secure-file-priv الخيار لذلك لا يمكن تنفيذ هذا البيان

يحدث ذلك بسبب حقيقة أن خادم MySQL الخاص بك قد بدأ بالخيار --secure-file-priv. شخصيا، واجهت هذه المشكلة بسبب حقيقة أنني أستخدم توزيع MySQL المضمن في مجموعة WAMP OpenServer للعمل في وحدة التحكم، والتي بدورها تقوم بتشغيل خادم MySQL بهذه الطريقة.

هناك طريقتان لحل المشكلة:

الطريقة الأولى بدت معقدة للغاية بالنسبة لي، لأن... سيتعين علي الخوض في تكوين OpenServer، الذي لم أكتبه مع كل الظروف التي تلت ذلك 🙂 لذلك قررت أن أسلك المسار الثاني. إذا واجهت مشكلة مماثلة- كرر من بعدي.

تحتاج أولاً إلى الانتقال إلى سطر أوامر MySQL وتشغيل أحد الأوامر التالية:

إظهار المتغيرات مثل "secure_file_priv"؛ حدد @@GLOBAL.secure_file_priv;

ستكون نتيجة تنفيذ كليهما هي قيمة المتغير العمومي MySQL Secure_file_priv، والذي يحتوي على المسار إلى الدليل الذي يمكن من خلاله تنفيذ عمليات تصدير واستيراد بيانات MySQL (في المستقبل، رابط لمقالة حول استيراد البيانات).

أولئك. عند استخدام الأوامر تحميل البياناتو اختر... في الملف الخارجيلا يمكن العثور على الملفات المصدرة والمستوردة إلا داخل هذا الدليل.

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

كما اتضح لاحقًا، هذا موقف شائع عند استخدام خوادم WAMP وMAMP المعبأة.

لسوء الحظ، في حالتي لم يكن من الممكن استخدام الطرق المعتادة لتغيير قيم متغيرات MySQL العالمية:

تعيين اسم متغير = القيمة؛

ونتيجة لذلك، رأيت الخطأ التالي فقط في وحدة التحكم:

الخطأ 1238 (HY000) في السطر 1: المتغير "secure_file_priv" هو متغير للقراءة فقط.

ونتيجة لذلك، لتغيير قيمة المتغير Secure_file_privوفتح عمليات التصدير والاستيراد، كنت بحاجة للذهاب إلى الملف تكوينات MySQL mysql.ini، الموجود في الدليل الجذر لتوزيع MySQL، أو يمكن الوصول إليه بطريقة أخرى إذا تم تضمين MySQL في بناء خادم WAMP/LAMP/MAMP الخاص بك.

بالمناسبة، إذا كنت تريد تغيير المسار إلى دليل التخزين المؤقت لتبادل الملفات، فستحتاج إلى القيام بنفس الشيء.

في حالتي، هذا المتغير موجود بالفعل في التكوين، فقط في نموذج التعليق:

Secure-file-priv = "%dprogdir%\\userdata\\temp"

إذا لم يكن لديك، فاكتبه من الصفر في القسم (على الأقل بالنسبة لي كان موجودا هناك).

لقد قمت بإلغاء التعليق عليه وقررت استخدامه بالشكل الذي كتب به. أولئك. عند تصدير البيانات من MySQL واستيرادها مرة أخرى، سيتم الآن تخزين ملفاتي في الدليل ج:\فتح الخادم\بيانات المستخدم\درجة الحرارة\.

بعد تغيير التكوين (أي واحد، بالمناسبة)، لا تنس إعادة تشغيل الخادم الخاص بك أو خدمة منفصلة قمت بتحرير إعداداتها، إن أمكن، حتى تدخل التغييرات حيز التنفيذ!

للتأكد، بعد إطلاق الخليةيعرض الخادم المتغير مرة أخرى Secure_file_privوانسخ قيمته إلى الحافظة.

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

حدد * من قاعدة بيانات_الجدول إلى الملف الخارجي "secure_file_priv_value\file_name.csv";

بعد ذلك، نجح تصدير البيانات من MySQL في حالتي.

نقطة مهمة! إذا كنت تعمل مع MySQL على نظام التشغيل Windows، فلا تنس تغيير "\" إلى "/" عند تحديد المسار إلى الملف، وإلا فسيكون الخطأ --secure-file-privسوف تستمر في الظهور.

تتناول هذه المقالة كيفية تفريغ قاعدة بيانات MySQL وجداولها، بالإضافة إلى إخراج البيانات من جداول MySQL إلى تنسيقات مختلفة، يصل إلى النهاية. اكتب تعليقاتك في التعليقات وشارك مع الجميع خيارات البرنامج النصي التي تستخدمها غالبًا في الممارسة العملية.

إذا أعجبك المقال، يمكنك شكر المؤلف من خلال إعادة نشر المقال على شبكات التواصل الاجتماعي أو ماليًا باستخدام النموذج أدناه حتى تتمكن من دفع تكاليف الاستضافة الأساسية.

حظا سعيدا للجميع ونراكم مرة أخرى! 🙂

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

أكثر من 5 سنوات من الخبرة التطوير المهنيالمواقع. يعمل مع بي أتش بي