بکاپ از MySQL و ارسال فایل با Shell

در هر هاست اشتراکی، به صورت روزانه، هفتگی و ماهانه از کل هاست بکاپ گرفته می شود. اما گاهی نیاز هست تا بکاپ ها در بازه های زمانی کمتری گرفته شود.

بکاپ از MySQL و ارسال فایل با Shell

برای بکاپ از MySQL و ارسال فایل با Shell در مسیری از هاست خود فایلی با پسوند sh. ایجاد کنید (نام فایل فرضی dumpsqldb.sh هست). در فایل ایجاد شده خطوط زیر را وارد کنید و فایل را ذخیره کنید.

خطوط ۱، ۲ و ۳ اطلاعات دیتابیس مورد نظر هستند. متغیر EMAIL، ایمیلی هست که فایل بکاپ برای آن ارسال می شود. متغیر HOST هاست مورد نظر است که خود Shell آن را پُر می کند. متغیر NOW نیز زمان فعلی است که بر اساس نیاز خود می توانید فرمت آن را تغییر دهید.
در خط ۱۶ با استفاده از دستور cd به فولدری که فایل sh. ایجاد شده است تغییر مسیر داده می شود. ftp-usrname در اکثر هاست های اشتراکی همان نام کاربری CPanel یا FTP است. در خط ۱۸، با استفاده از دستور mysqldump از دیتابیس مورد نظر بکاپ گرفته می شود و در فایلی به اسم محتویات متغیر NOW و با پسوند sql. ذخیره می گردد. در خط ۲۰، فایل sql. ایجاد شده با پسوند tgz. فشرده و ذخیره می شود. در خط ۲۲ فایل sql. ایجاد شده حذف می شود. در خط ۲۶ نیز با استفاده از دستور mutt فایل ایجاد شده ایمیل می شود ( برای ارسال ایمیل روش های دیگری مانند mail نیز وجود دارد).
برای اجرای فایل در زمان های مشخص باید از CronJob استفاده شود. برای ایجاد یک CronJob در CPanel، به بخش CronJob بروید.

cron job section in cpanel

cron job section in cpanel


در بخش Add New Cron Job می توانید CronJob جدید ایجاد کرد. برای تعیین زمان اجرای CronJob می توان از زمان های پیشفرض سیستم مانند دو بار در روز یا … استفاده کرد که لیست کامل آن در Common Settings وجود دارد یا با استفاده از فیلدهای موجود زمان را مشخص کرد.
common setting in cpanel cronjob

common setting in cpanel cronjob


در فیلد Command دستور زیر را وارد و سپس ذخیره کنید.

به طور مثال در تصویر زیر هر روز راس ساعت ۱۲:۰۰ و ۰۰:۰۰ CronJob ایجاد شده اجرا می شود.

cpanel cron job set to execute shell command twice in day

cpanel cron job set to execute shell command twice in day

پس از ذخیره CronJob اگر مشکلی نباشد مانند زیر پیغام دریافت می کنید.

Cronjob successfully set

Cronjob successfully set


CronJob ایجاد شده است و باید منتظر بمانید تا فایل بکاپ برایتان ایمیل شود.

تهیه نسخه پشتیبان از SQL Express و بازیابی آن

برای تهیه نسخه پشتیبان از دیتابیس های موجود در SQL Server راه های زیادی وجود دارد. یکی از این راه ها استفاده از SQL Server Management Studio هست و می توان با چند کلیک ساده از دیتابیس های موجود نسخه پشتیبان تهیه کرد. یکی دیگر از راه ها استفاده از دستورات خود SQL هست. در خیلی از برنامه های تجاری٬ امکانی به نام تهیه نسخه پشتیبان وجود دارد. برای اینکار می توان از دستورات سی شارپ و اجرای یک کوئری استفاده کرد.
اگر بر فرض Connection String برنامه برای اتصال به SQL Server مانند زیر باشد:

برای تهیه نسخه پشتیبان می توان کوئری زیر را در دیتابیس اجرا کرد:

حالا فرض کنید شما با خود ویژوال استدیو یک دیتابیس به نام myDatabase.mdf ایجاد کرده اید. این دیتابیس در Management Studio متصل نیست و در کامپیوتر کابر نهایی هم فقط یک پیش نیاز(prerequireSQL Express نصب می شود. پس Connection String شما باید به صورت زیر باشد:

اگر بخواهید مانند SQL Server و با اجرای کد بالا از دیتابیس نسخه پشتیبان بگیرید به خطای زیر بر میخورید:

این خطا به این علت هست که این کوئری نمی تواند به فایل دیتابیس دسترسی پیدا کند. اگر Studio Management نصب بود٬ کوئری با استفاده از Studio Management به فایل دیتابیس دسترسی پیدا می کرد٬ چون دیتابیس Attach بود٬ اما در SQL Express دیتابیس در جایی قرار ندارد.
تهیه نسخه پشتیبان از SQL Express و بازیابی آن کمی متفاوت است، پس Connection String را به شکل زیر تغییر دهید:

حالا با اجرای کوئری زیر می توانید نسخه پشتیبان را تهیه کنید:

حتما دقت کنید که آدرس فایل باید بین [ و ] قرار بگیرد.
برای بازیابی (Restore) کردن نسخه پشتیبان هم از کوئری زیر می توانید استفاده کنید:

کپی اطلاعات دیتابیس SQLServer با اسکریپت

امروز در شرکت به مشکلی بر خورده بودیم که گفتنش را خالی از لطف ندونستم. سرور شرکت خراب بود، و می خواستیم اطلاعات ۲ دیتابیس را یکی کنیم. متاسفانه نسخه های SQL Server نصب شده روی کامپیوترها یکی نبود در نتیجه دیتابیس ها را نمی شد در یکی دیگر Attach کرد و اطلاعات را کپی کرد. و اینکه خیلی راحت با ویزارد SQL Server هم نمی شود اطلاعات را کپی کرد چون کامپیوترها با Wireless به هم متصل بودن اما سرورها به هم متصل نمی شدند. داده ها به روی اکسل و … کپی می شدند، اما در کامپیوتر دیگر نمی شد بر روی دیتابیس دیگر کپی کرد. تنها راه حل ممکن ساخت اسکریپت انتقال داده بود.
در Management Studio بر روی دیتابیس کلیک راست کنید و از قسمت Tasks گزینه Generate Scripts را انتخاب کنید.

در پنجره باز شده (Introduction) دکمه Next را بزنید تا به صفحه Choose Object بروید. در این صفحه می توانید جدول ها و Store Procedureها و هر آنچه که در دیتابیس موجود است را انتخاب کنید.

در پنجره Set Scripting Options بر روی دکمه Advanced کلیک کنید. در پنجره باز شده مانند تصویر بر اساس نیاز برای خاصیت Types of data to scripts ، یکی از گزینه ها را انتخاب کنید. برای اینکه داده ها نیز در اسکریپت آورده شوند، حتما یکی از گزینه های Data Only یا Schema and Data را انتخاب کنید.

ok را بزنید و در پنجره موجود گزینه Save to a new query windows را انتخاب کنید. کار تمام است.
داده ها در در یک پنجره جدید در کوئری مورد نظر وجود دارند. می توانید این کوئری را ذخیره کنید و در کامپیوتر دیگر اجرا کنید.