به عنوان یکی از پیشروترین پایگاه های داده آزادانه در دسترس، MySQL یک انتخاب محبوب برای بسیاری از برنامه های کاربردی وب است. با قرار گرفتن در معرض اینترنت، برنامه شما در معرض حملات مخرب قرار می گیرد. اگر سرور شما به خطر افتاده است، در بهترین حالت، باید برنامه را دوباره نصب کنید. در بدترین حالت ممکن است اطلاعات خود را از دست بدهید. علاوه بر این، ممکن است در موقعیتی قرار بگیرید که نیاز به انتقال یک پایگاه داده از یک سرور به سرور دیگر داشته باشید.
mysqldump برای چه چیزی استفاده می شود؟
ابزار mysqldump شما را برای موقعیتهای به خطر افتادن سرور و مهاجرت پوشش میدهد. عملکرد اصلی آن گرفتن یک پایگاه داده MySQL و تخلیه آن به عنوان یک فایل متنی است. اما نه هیچ فایل متنی. فایل مجموعه ای از دستورات SQL است.این عبارات، زمانی که اجرا می شوند، پایگاه داده را به وضعیت دقیقی که در زمان اجرای dump در آن بود، بازسازی می کنند.
از mysqldump برای ایجاد صادرات یک پایگاه داده به عنوان پشتیبان، یا هنگام انتقال پایگاه داده به یک میزبان جدید استفاده کنید. در هر صورت، فایل متنی دوباره به سرور پایگاه داده MySQL وارد می شود. تمام عبارات SQL در فایل را اجرا می کند که پایگاه داده را به حالت اولیه خود بازسازی می کند. این قسمت از دستور mysqldump استفاده نمی کند، اما بدون این ابزار نیز امکان پذیر نخواهد بود.
اسناد MySQL روشهای دیگری را برای تهیه نسخه پشتیبان فهرست میکند، اما اینها اشکالاتی دارند:
- کپی فوری پایگاه داده از MySQL Enterprise یک راه عالی برای دستیابی به این پشتیبانگیری است - اگر از برچسب قیمت Enterprise مهم نیستید.
- کپی کردن فهرست راهنمای داده های پایگاه داده می تواند هنگام جابجایی در بین سیستم عامل ها دشوار باشد، زیرا مقصدها متفاوت خواهند بود.
- صادر کردن به یک فایل متنی محدود به شما محتوا می دهد، اما باید ساختار را دوباره ایجاد کنید.
- اغلب می توانید از پایگاه های داده از برنامه های رابط کاربری گرافیکی مانند MySQL Workbench پشتیبان تهیه کنید. اما این یک فرآیند دستی است. چیزی نیست که بتوانید اسکریپت بنویسید یا در یک کار دسته ای بگنجانید.
ابزار mysqldump را نصب کنید
برای ویندوز، دستورالعمل های ما را برای نصب MySQL در ویندوز 7 بررسی کنید (فرایند نصب برای ویندوز 10 یکسان است). در macOS، دستورالعملهای ما را برای نصب MySQL در macOS 10.7 (دوباره قدیمیتر اما همچنان قابل اجرا) ببینید. کاربران سیستمهای لینوکس مبتنی بر اوبونتو میتوانند از دستور زیر برای نصب کلاینت و برنامههای کاربردی MySQL استفاده کنند:
sudo apt install mysql-client
Extract MySQL Dump
پس از نصب، از mysqldump برای تهیه نسخه پشتیبان کامل از پایگاه داده استفاده کنید.
mysqldump -h [نام یا IP میزبان DB شما] -u [نام کاربر DB] -p [نام پایگاه داده] > db_backup.sql
در اینجا شرحی از پرچم های استفاده شده در این دستور آمده است:
- - h: این پرچم میزبان پایگاه داده است. این می تواند یک نام میزبان کامل (به عنوان مثال، myhost.domain.com) یا یک آدرس IP باشد. اگر فرمان را روی همان میزبانی که سرور MySQL اجرا می کنید، این را خالی بگذارید.
- - u: نام کاربری شما.
- - p: اگر نصب MySQL را به درستی ایمن کرده باشید، برای اتصال به رمز عبور نیاز دارید. این پرچم بدون آرگومان هنگام اجرای دستور از شما یک رمز عبور می خواهد. گاهی اوقات ارائه رمز عبور مستقیماً به عنوان آرگومان برای این پرچم مفید است، به عنوان مثال، در یک اسکریپت پشتیبان. اما در زمان درخواست، نباید این کار را انجام دهید، زیرا اگر شخصی به رایانه شما دسترسی پیدا کند، می تواند این رمز عبور را در تاریخچه فرمان دریافت کند.
- > db_backup.sql: این قسمت به mysqldump می گوید که خروجی خود را به یک فایل هدایت کند. به طور معمول، این فرمان همه چیز را به کنسول خروجی می دهد، به این معنی که چندین دستور SQL را روی صفحه مشاهده خواهید کرد. نماد > خروجی را در فایل متنی نامگذاری شده قیف می کند. اگر این فایل وجود نداشته باشد، به طور خودکار ایجاد می شود.
وقتی کار تمام شد، یک فایل. SQL خواهید داشت. این یک فایل متنی حاوی عبارات SQL است. می توانید آن را در هر ویرایشگر متنی باز کنید تا محتویات را بررسی کنید. در اینجا یک صادرات از پایگاه داده وردپرس است که نشان می دهد این فایل ها چگونه کنار هم قرار می گیرند.
فایل به بخشهایی تقسیم میشود. بخش اول جدولی را برای نظرات وردپرس تنظیم می کند. بخش دوم محتوای آن جداول را دوباره ایجاد می کند (در این مثال، ثبت نظر). هنگامی که MySQL dump را دوباره وارد میکنید، دستور از طریق فایل کار میکند، دستورات را اجرا میکند و پایگاه داده را به همان شکلی که بود دوباره میسازد.
وارد کردن یک MySQL Dump File
قبل از وارد کردن فایل dump، به یک پایگاه داده از قبل ایجاد شده و نام کاربری و رمز عبور معتبر آن نیاز دارید. شما همچنین باید تمام مجوزهای پایگاه داده را داشته باشید. شما به مجوز GRANT نیاز ندارید، اما دادن همه آنها آسانتر است.
قبل از تغییر نقش های امنیتی در پایگاه داده خود درباره مجوزهای پایگاه داده بیشتر بدانید.
برای وارد کردن مجدد داده های خود، با دستور mysql وارد سرور MySQL شوید. use [نام پایگاه داده] را در خط فرمان تایپ کنید و نام پایگاه داده را جایگزین کنید. source [filename] را وارد کنید و نام فایل dump را که قبلا گرفته اید جایگزین کنید.
وقتی کارتان تمام شد، فهرستی از پیامها ظاهر میشود که بیانیههای SQL در حال اجرا هستند. مراقب خطاها باشید، اما اگر مجوزهای مناسبی دارید، باید خوب باشید.
وقتی فرآیند کامل شد، یک نسخه تکراری از پایگاه داده اصلی خواهید داشت. برای تأیید شباهت بین پایگاههای داده، یک Dump دیگر انجام دهید و سپس دو خروجی را مقایسه کنید. برای مقایسه دو فایل از یک ویرایشگر متن یا یک ابزار اختصاصی تفاوت استفاده کنید.
دو تفاوت بین این فایل ها وجود دارد که با خطوط قرمز در بالا و پایین نوار اسکرول سمت راست نشان داده شده است. اولین خطی است که شامل نام پایگاه داده است، و این متفاوت است زیرا نام فایل ها متفاوت است. دوم مهر زمانی برای فایل dump است. این متفاوت است زیرا پایگاه داده دوم بعد از پایگاه داده اول دوباره ایجاد شد. در غیر این صورت، فایل ها دقیقاً مشابه هستند، یعنی پایگاه داده هایی که آنها را تولید کرده اند نیز همینطور هستند.
سوالات متداول
چگونه خطای mysqldump را برطرف می کنید: هنگام استفاده از جداول قفل دسترسی ممنوع است؟
از مدیر پایگاه داده خود بخواهید که امتیاز LOCK را به شما بدهد. اگر با این کار مشکل حل نشد، همان دستور mysqldump را اجرا کنید و پرچم - -single-transaction را اضافه کنید، مانند [ $ mysqldump --single-transaction] [-u کاربر] [-p DBNAME] > backup.sql
آیا می توانید از عبارت "where" با mysqldump استفاده کنید؟
هنگام ایجاد یک نسخه پشتیبان که فقط شامل ردیف هایی است که شرایط داده شده را برآورده می کنند، از عبارت WHERE استفاده کنید. به عنوان مثال، برای تخلیه دادهها فقط از ردیفهایی با ستون شناسه بزرگتر از 100، "mysqldump my_db_name my_table_name --where="id > 100" > my_backup.sql" را وارد کنید.