آموزش بکاپ گیری از دیتابیس MySQL
درباره اهمیت بکاپ گیری و ویژگیهای یک پلن بکاپ گیری از دیتابیس مفصلا صحبت کردیم. اما بطور خلاصه، با توجه به اهمیت اطلاعات پایگاه داده و سرعت بالای تغییرات در آن، لازم است بطور دورهای از دیتابیس خود نسخه پشتیبان تهیه کنیم. در این مقاله به انواع روشهای بکاپ گیری از دیتابیس (به خصوص MySQL)، نحوه برگرداندن بکاپ دیتابیس، نحوه بکاپ گرفتن از دیتابیس در فضای ابری و بکاپ گیری اتوماتیک از دیتابیس خواهیم پرداخت.
روشهای بکاپ گیری از دیتابیس MySQL
روشهای مختلفی برای بکاپ گیری (Backup) از پایگاه داده MySQL وجود دارد که براساس نحوه پیاده سازی سرویس شما و زیرساختی که از آن استفاده میکنید متفاوت است. چنانچه سایت یا اپلیکیشن خود را بطور مستقیم روی سرور مجازی پیاده سازی کردهاید، باید از ابزار mysqldump برای بکاپ استفاده کنید. اگر در کنار سرویسهای سایت یا اپلیکیشن خود، ابزار phpMyAdmin را هم نصب کردهاید، میتوانید از رابط گرافیکی آن برای دانلود نسخه پشتیبان از پایگاه داده خود استفاده کنید. همچنین در صورتی که سرویس دهنده شما پنل دایرکت ادمین یا cpanel در اختیار شما قرار داده یا از ارائه دهندگان دیتابیس ابری خدمت میگیرید، میتوانید به راحتی از پرتال آنها برای زمانبندی و بک آپ گیری دیتابیس خود استفاده کنید. در ادامه هر کدام از این روشها را با جزئیات بیشتر شرح میدهیم.
نحوه بکاپ گیری از دیتابیس با استفاده از خط فرمان CLI سرور
اگر سایت یا نرم افزار شما بدون واسطه روی سرور لینوکسی نصب شده که مدیریت آن بر عهدهی خود شماست، میتوانید براحتی با استفاده از ابزار mysqldump (که بصورت پیشفرض با دیتابیس mysql نصب میشود) از دیتایس بکاپ بگیرید. برای این کار به سرور خود ssh زده و دستور زیر را با دسترسی روت اجرا کنید:
$ sudo mysqldump -u [user] -p [database_name] > [filename].sql
فراموش نکنید که باید نام کاربری دیتابیس، نام دیتابیس و نام فایل را در دستور بالا جایگزین کنید. اگر میخواهید از همه دیتابیسهای سیستم بکاپ بگیرید میتوانید دستور مذکور را با آپشنهای زیر اجرا کنید. این دستور تاریخ روز را هم به اسم فایل بکاپ اضافه میکند:
$ mysqldump --all-databases --single-transaction --quick --lock-tables=false > full-backup-$(date +%F).sql -u root -p
نحوه برگرداندن بکاپ دیتابیس با استفاده از خط فرمان CLI سرور
بازگردانی (Restore) بکاپ دیتابیسی که با استفاده از خط فرمان گرفتهاید هم به اندازه بکاپ گیری آن ساده بوده و با یک خط انجام میشود. فقط به خاطر داشته باشید که برای برگرداندن بکاپ باید بجای mysqldump از دستور mysql استفاده کنید:
$ mysql -u [user] -p [database_name] < [filename].sql
نحوه بکاپ گیری از MySQL با استفاده از phpMyAdmin
یکی از ابزارهای اختیاری که مدیریت پایگاه داده MySQL را تسهیل می کند phpMyAdmin است. اگر این ابزار را روی سرور دیتابیس خود نصب کردهاید، میتوانید از آن برای بکاپ گیری دیتابیس خود استفاده کنید.
برای این کار ابتدا وارد پنل phpMyAdmin شده و از ستون سمت چپ دیتابیس مورد نظر خود را انتخاب کنید.
سپس از نوار بالا روی لینک Export کلیک کنید. برای سرعت بیشتر متد بکاپ quick و فرمت sql را انتخاب کرده و دکمه Go را بزنید تا فایل بکاپ شما دانلود شود.
نحوه برگرداندن بکاپ دیتابیس MySQL با استفاده از phpMyAdmin
بازگردانی بکاپ دیتابیس را هم میتوانید بوسیله پنل phpMyAdmin انجام دهید. تنها نکتهای که هنگام برگرداندن بک آپ دیتابیس باید به آن توجه کنید خالی بودن دیتابیس فعلی است؛ چراکه اطلاعات بازگردانی شده با اطلاعات قبلی جایگزین (overwrite) نمیشود. بنابراین اگر دادهای از قبل در دیتابیس وجود داشته باشد، بازگردانی بک آپ ممکن است باعث ایجاد ردیفهای تکراری یا اختلال و خطا شود.
بنابراین همیشه قبل از بازگردانی فایل پکاپ دیتابیس، دیتابیس فعلی را پاک کنید. برای این کار از ستون سمت چپ phpMyAdmin پایگاه داده مورد نظر خود را انتخاب کنید. سپس در انتهای لیست جدولها گزینه Check All را انتخاب کرده و در لیست مقابل آن Drop را بزنید. برای تایید دکمه Yes را بزنید.
حالا برای بازگردانی بک آپ دیتابیس همانند ساخت بکاپ، روی دیتابیس مورد نظر کلیک کنید، فقط این بار بجای گزینه Export گزینه Import را انتخاب کنید. فایل بکاپ پایگاه داده را انتخاب کرده و دکمه Go را بزنید.
نحوه بکاپ گرفتن از دیتابیس در فضای ابری
اصولا نگهداری بکاپ روی فضای محلی سرور یا دانلود آن روی کامپیوتر شخصی کار درستی نیست. این کار دو ایراد اساسی دارد: اول اینکه در صورت خرابی سخت افزار سرور اصلی (هارد یا SSD) یا از دسترس خارج شدن آن (مشکل شبکه) شما دسترسی به بکاپهای دیتابیس خود را هم از دست میدهید؛ که در بدترین حالت ممکن است منجر به از دست رفتن همه اطلاعات دیتابیس شما شود و بازگردانی اطلاعات پایگاه داده در سروری دیگر را غیرممکن کند. دانلود بک آپهای دیتابیس هم خیلی کاربردی نیست چراکه در صورت بروز خرابی، زمان بازگردانی دیتابیس و به طبع آن سرویس شما را به شدت افزایش میدهد.
یکی از روشهای بهینه برای ذخیره سازی و نگهداری بک آپ های دیتابیس استفاده از فضای ابری است. فضای ذخیره سازی ابری که پرکاربردترین نوع آن آبجکت استوریج (object storage) است، به شما این امکان را میدهد تا فایلهای خود را بصورت آبجکت در فضای امن و همیشه در دسترس ذخیره و نگهداری کنید. شرکتهای ارائه دهنده فضای ابری معمولا پلنهای مختلفی متناسب با نیازهای شما ارائه میدهند که ذخیرهسازی بکاپهای شما در فضای ابری را بسیار مقرون به صرفه میکند. برای مثال آمازون AWS پلن آبجکت استوریج با عنوان S3 IA (Infrequently Accessed) ارائه میکند؛ S3 IA یک آبجکیت استوریج برای فایلهایی است که به ندرت به آنها نیاز خواهید داشت، دقیقا مثل فایلهای بکاپ پایگاه داده. با استفاده از این پلن، هزینه نگهداری بکاپهای شما در فضای ابری بسیار پایین خواهد بود اما به ازای هر دانلود هزینهای به فاکتور شما اضافه میشود. در ادامه نحوه بکاپ گیری از دیتابیس MySQL در فضای ابری AWS و همچنین آبجکت استوریج ابر آروان (که از استاندارد S3 آمازون AWS استفاده میکند) را آموزش خواهیم داد.
آموزش بک آپ گیری از دیتابیس روی آبجکت استوریج آمازون AWS
بهترین گزینه برای فضای ابری، سرویس S3 آمازون AWS است. آمازون S3 نه تنها ماندگاری دادههای شما را با درصد ۹۹.۹۹۹۹۹۹۹۹۹۹۹ تضمین میکند، بلکه ۵ گیگابایت فضای ذخیره سازی رایگان ابری در اختیار شما قرار میدهد. پلن فضای ذخیره سازی ابری رایگان AWS یک ساله بوده و شما علاوه بر ۵ گیگابایت فضای رایگان، تا ۲۰۰۰ ریکوئست آپلود و ۲۰۰۰۰ ریکوئست دانلود رایگان خواهید داشت.
ابتدا یک باکت (Bucket) در کنسول آمازون AWS ایجاد کنید (دقت کنید که پلن 5GB Standard Free Tier را انتخاب کرده باشید). این قسمت در بخش S3 (زیر مجموعه Storage) قرار دارد. دقت کنید که قبل از ساخت باکت، region یا ناحیه مورد نظر خود را درست انتخاب کرده باشید. برای تغییر ناحیه از لیستی که سمت راست نوار بالای کنسول قرار دارد استفاده کنید.
حتما بعد از ساخت باکت یک حساب کاربری جدید با سطح دسترسی به باکتهای S3 ایجاد کنید. برای این کار به بخش IAM در کنسول AWS وارد شده و از قسمت Users یک حساب کاربری جدید بسازید. هنگام ساخت یوزر جدید این موارد را رعایت کنید: اول اینکه نوع دسترسی کاربر (Access Type) را Programmatic Access انتخاب کنید تا کاربر شما امکان دسترسی با aws cli را داشته باشد. مورد دوم که باید رعایت کنید نوع permission انتخابی برای کاربر است که حتما باید شامل policy ادمین یا S3 باشد. در مرحله آخر هم حتما کلیدهای access و secret را ذخیره کنید زیرا فقط یک بار برای شما نمایش داده میشوند.
در نهایت شما باید موارد زیر را در اختیار داشته باشید که هنگام ذخیره سازی بکاپ به آنها نیاز خواهیم داشت.
AWS Bucket Name
AWS Access Key ID
AWS Secret Access Key
بعد از ساخت باکت به ترمینال SSH سرور مجازی خود برگردید. برای اینکه امکان ذخیره سازی بکاپ دیتابیس روی فضای ابری AWS را داشته باشید باید AWS CLI را روی ماشین مجازی خود نصب کرده و Access key و Secret Key خود را روی آن تنظیم کنید. در صورتی که از سرور مجازی AWS یا همان اینستنس EC2 استفاده میکنید این ابزار به صورت پیشفرض روی سرور شما نصب است.
$ apt install unzip curl $ curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" $ unzip awscliv2.zip $ ./aws/install $ aws configure
بعد از زدن دستور آخر، ترمینال Access Key و Secret Key اکانت AWS شما را خواهد پرسید. اطلاعات خود را وارد کرده و اینتر کنید. از این به بعد به راحتی و تنها با یک خط میتوانید بک آپ های دیتابیس خود را به فضای ابری AWS منتقل کنید:
$ aws s3 cp [filename].sql s3://[bucket-name]
با استفاده از دستور زیر میتوانید لیست بکاپهای دیتابیس My SQL روی فضای ابری را مشاهده کنید:
$ aws s3 ls s3://[bucket-name]/
آموزش بک آپ گیری از دیتابیس روی آبجکت استوریج ابر آروان
چنانچه تمایل دارید از فضای ذخیره سازی ابری ایرانی برای نگهداری بک آپ پایگاه داده خود استفاده کنید، آبجکت استوریج ابر آروان و ایرانسل گزینههای مناسبی هستند. با توجه به اینکه ابر آروان دارای پلن فضای ذخیره سازی رایگان ۵ گیگابایتی (با محدودیت پهنای باند ۲۰ گیگابایت) است، ما هم در ادامه نحوه پشتیبان گیری دیتابیس روی این فضای ابری را شرح میدهیم. قیمت فضای ذخیره سازی آبجکت با همین مشخصات در خدمات ابری ایرانسل ماهیانه حدودا ۱۱۸۸۰ تومان است.
نحوه ذخیره سازی بکاپ دیتبایس روی فضای ابری ابر آروان بسیار شبیه به آمازون AWS است، با این تفاوت که به جای ابزار aws باید از rclone استفاده کنید. rclone قابلیت انتقال فایل به اکثر ارائه دهندگان فضای ابری، مخصوصا آنهایی که از استاندارد S3 آمازون استفاده میکنند را داراست. برای این منظور ابتدا پکیج rclone را نصب کرده و تنظیمات آن را به صورت زیر انجام دهید:
$ apt install rclone $ rclone config
بعد از زدن آخرین دستور، لیست استوریجهایی که به rclone اضافه کردهاید را مشاهده خواهید کرد. قاعدتا این لیست باید خالی باشد. کاراکتر n را برای اضافه کردن استوریج جدید وارد کنید. سپس یک اسم دلخواه برای سرویس دهنده خود وارد کنید، مثلا arvan. در مراحل بعدی نوع آبجکت استوریج را s3 انتخاب کرده و other را برای provider وارد کنید.
در مرحله بعدی false را انتخاب کنید تا بتوانید access key و secret key آروان را به صورت دستی وارد کنید. سپس گزینه ۱ را برای ریجن انتخاب کرده و در آخر آدرس endpoint که از ابر آروان دریافت کردهاید را وارد کنید.
از این پس میتوانید با دستور زیر بک اپ های خود را به فضای ابری آروان منتقل کنید:
$ rclone copy [filename].sql arvan:[bucket-name]/[filename].sql
بکاپ گیری و بازگردانی اتوماتیک دیتابیس MySQL
راهکارهایی که تا الان بررسی کردیم مزایا و معایب متفاوتی دارند. اما مشکل یا عیب اصلی که بین همهی این روشها مشترک است، مدت زمان زیاد بازیابی یا ریستور دیتابیس است که Disaster Recovery Plan شما را بسیار کند میکند. در صورتی که سرور عملیاتی شما دچار خرابی شده یا از دسترس خارج شود، شما نسخهای از دیتابیس خود را در فضای ابری خواهید داشت، اما برگرداندن دیتابیس از فضای ابری و راه اندازی آن در سرور عملیاتی جدید زمان زیادی نیاز دارد که صدمه زیادی به سایت یا سرویس شما میرساند.
مشکل دوم روشهای مذکور، دستی بودن آنهاست. البته شما براحتی میتوانید یک اسکریپت بنویسید تا عملیات بکاپ گیری از دیتابیسهای شما بصورت اتوماتیک انجام شود. اما تاثیر بک آپ گیری روی کارایی سرور شما به اندازه کافی زیاد است که شما را مجبور کند در فاصلههای زمانی طولانی اسکریپت بکاپ را اجرا کنید. در اکثر موارد کسب و کارها و استارتاپها مجبور میشوند زمان بکاپ گیری را به نیمه شب موکول کنند.
استفاده از سرویس دیتابیس مدیریت شده به شما این امکان را میدهد تا در کنار مزایای همه روشهای مذکور، این ۲ چالش برزگ را هم حل کنید.
بکاپ گیری و بازگردانی اتوماتیک دیتابیس با استفاده از دیتابیس ابری مدیریت شده
استفاده از دیتابیس ابری مدیریت شده به شما این توانایی را میدهد تا:
بکاپ اتوماتیک با فاصله زمانی کوتاه روی سرورهای عملیاتی جاری و ثالث ایجاد کنید.
هشدار کارایی و سلامت برای دیتابیسهای خود داشته باشید.
تنها با یک کلیک و در عرض چند ثانیه بک آپ دیتابیس را روی سرور عملیاتی بازگردانید.
برای دسترسی به لیست بکاپهای دیتابیس ابتدا وارد پنل مدیریت پنکیک شوید. در صورتی که قبلا دیتابیس خود را ایجاد کرده باشید، سکوی ابری پنکیک بصورت خودکار هر ساعت از دیتابیس شما فول بکاپ میگیرد. برای مشاهده لیست بکاپها، کافی است دیتابیس مورد نظر خود را از ستون سمت راست انتخاب کرده و وارد تب Fork Database شوید. لیست نسخههای بکاپ دیتابیس شامل ۴۸ فول بکاپِ ساعتی از ۴۸ ساعت گذشته و همچنین ۲۸ فول بکاپِ روزانه از ۳۰ روز گذشته است.
برای برگرداندن هر کدام از بکاپها کافی است روی آیکون کنار ردیف مورد نظر کلیک کرده تا در کمتر از یک دقیقه دیتابیس مورد نظر روی سرور عملیاتی ریستور شود. بک آپ گیری اتوماتیک از دیتابیس و بازگردانی آن در دیتابیسهای ابری پنکیک منحصر به پایگاه داده ی خاصی نیست و به صورت پیشفرض برای همهی دیتابیسهای پنکیک شامل MySQL، PostgreSQL، MongoDB و SQL Server فعال است.
دیدگاه خود را ثبت کنید
تمایل دارید در گفتگوها شرکت کنید؟در گفتگو ها شرکت کنید.