آموزش ریستور کردن فایل های بزرگ و حجیم دیتابیس MySQL در ssh لینوکس

یکی از بزرگ ترین مشکلات مشتریانی که از هاست اشتراکی و میزبانی وب لینوکس به سرور مجازی یا سرور اختصاصی کوچ میکنند مشکل ریستور کردن فایل های sql بزرگ و حجیم در MySQL سرور لینوکس است . برنامه هایی مانند phpmyadmin یا MySQL  Dumper قادر به ذخیره سازی و ریستور کردن و بازیابی دیتابیس های خیلی بزرگ و حجیم نیستند و در صورت انتقال و ریستور کردن با آن ها همیشه احتمال و خطر بازیابی ناقص اطلاعات و آسیب دیدین دیتابیس وجود دارد .

  MySQL-Backup-and-Restore

از طرفی همیشه امکان ریستور کردن بکاپ کلی یا Full Backup برای خریدار سرور مجازی یا سرور اختصاصی امکان پذیر نیست . مثلا فول بکاپ توسط کنترل پنل cPanel ایجاد شده است ولی سرور مقصد از کنترل پنل دایرکت ادمین یا کلوکسو استفاده میکند . در این وضعیت هیچ راهی نیست جز استفاده از دستورات و کامند های ssh در لینوکس . در صورت استفاده صحیح از این کامند ها و دستورات برای بازیابی و ریستور کردن فایل های MySQL و دیتابیس ، قادر خواهید بود به راحتی فایل های MySQL با پسوند .sql و حجم های بالای ۱۵ و ۲۰ گیگ را در کمترین زمان ممکن و بدون خطا و آسیب دیدن به اطلاعات بازیابی و ریستور کنید .

قبل از انجام ریستور کردن دیتابیس توسط دستورات لینوکس در محیط ssh ابتدا باید اندازه پارامتر max_allowed_packet را بر اساس حجم دیتابیس مورد نظر تنظیم نمایید . برای ایجاد تغییرات در این پارامتر باید فایل my.cnf در مسیر /etc/ را ادیت کرده و میزان مورد نظر خود را وارد نمایید . سپس فایل را ذخیره کرده و سرویس MySQL را ریست کنید .

حالا وارد کنترل پنل وب هاستینگ سرور خود شوید و یک دیتابیس جدید ایجاد کنید . سپس نام کاربری و کلمه عبور این دیتابیس جدید را ساخته و به آن اختصاص دهید . حالا از طریق ssh وارد فولدر و پوشه ای شوید که فایل .sql در آن واقع شده است . با دستورات زیر اقدام به بازیابی و ریستور کردن این فایل .sql داخل دیتابیس MySQL ساخته شده در کنترل پنل وب هاستینگ خود نمایید :

mysql -u dbuser -p  dbname < db.sql

با زدن کلید Enter سیستم عامل از شما رمز و کلمه عبور دیتابیس ساخته شده در کنترل پنل را میخواهد که با وارد کردن آن عملیات بازیابی و ریستور کردن دیتابیس آغاز میگردد . اگر به کلمه عبور MySQL Root Password دسترسی دارید میتوانید بدون نیاز به کلمه عبور و نام کاربری دیتابیس اقدام به بازیابی و ریستور کردن آن با یوزر root پایگاه داده MySQL نمایید :

mysql -u root -p  dbname < db.sql

مشکل ایمپورت کردن دیتابیس های بزرگ و پر حجم در phpmyadmin

اسکریپت phpmyadmin معروف ترین برنامه مدیریت تحت وب دیتابیس های مبتنی بر MySQL است که تقریبا تمام کنترل پنل های وب هاستینگ معروف لینوکس ، از آن به عنوان اولین یا تنها برنامه مدیریت دیتابیس های MySQL استفاده میکنند .  ریستور کردن و ایمپورت دیتابیس های بزرگ MySQL  به کمک زبان php و به واسطه اسکریپت phpmyadmin به هیچ عنوان پیشنهاد نمیشود (به دلیل احتمال بروز خطا با ایمپورت ناقص دیتابیس) ، بنا بر این فقط زمانی اقدام به انجام این کار کنید که حجم دیتابیس شما حد اکثر ۲۰ یا ۳۰ مگابایت و سرعت کانکشن و اینترنت شما نیز حد اقل ۵۱۲ است . در غیر این صورت احتمال ایمپورت ناقص و خراب شدن دیتابیس بسیار زیاد است .

phpmyadmin_import

مشکل ایمپورت کردن دیتابیس های بزرگ و پر حجم در phpmyadmin

در بیشتر سرور های میزبانی وب مبتنی بر کنترل پنل های وب هاستینگ سی پنل و دایرکت ادمین ، حد اکثر حجم مجاز آپلود فایل توسط php به صورت پیش فرض روی ۸ مگابایت محدود شده است . بنا بر این در صورت ایمپورت کردن و آپلود کردن دیتابیس های بزرگ تر از ۸ مگابایت با پیام های خطایی مشابه زیر مواجه خواهید شد :

You probably tried to upload too large file. Please refer to documentation for ways to workaround this limit.

the file size exceeded the maximum size permitted by your PHP configuration

برای حل این مشکل و رفع محدودیت حجم آپلود و ایمپورت دیتابیس های MySQL کافی است تا فایل php.ini را ویرایش کرده و مقادیر زیر را به این شکل افزایش دهید :

memory_limit = 128M
post_max_size = 128M
upload_max_filesize = 128M
max_execution_time = 300
max_input_time = 300

بعد از انجام  تغییرات فوق در فایل php.ini اقدام به ریستارت کردن وب سرور و/یا اجرا کننده php کنید تا تغییرات در سرور اعمال شوند :

service httpd restart

با مراجعه مجدد به صفحه ایمپورت phpmyadmin مشاهده خواهید کرد که محدودیت ۸ مگابایتی آپلود دیتابیس به ۱۲۸ مگابایت افزایش پیدا کرده است .

برای ریستور کردن دیتابیس های بزرگ تر از ۲۰ مگابایت حتما از طریق SSH و دستورات مربوط به MySQL استفاده کنید  . در مطالب گذشته وب سایت ، آموزش ریستور کردن فایل های پر حجم و بزرگ MySQL داده شده است

جلوگیری کردن از آپدیت شدن یک پکیج خاص در CentOS

جلوگیری کردن از آپدیت شدن یک پکیج خاص در CentOS

اگر با REPO های سرور های مبتنی بر لینوکس CentOS زیاد کارمیکنید ، احتمالا بار ها و بار ها با آپدیت شدن اجباری بسیاری از برنامه ها و پکیج های لینوکس CentOS بعد از اجرای دستور yum update مواجه شده اید . برای حل این مشکل ، کافی است تا برنامه و پکیج مورد نظر خود را در تنظیمات فایل yum اصطلاحا Exclude کنید .

 

برای مثال ، بعد از نصب یک پکیج RPM از وب سایت RPM FORGE پکیج های geoip و geoip-devel بعد از هر بار اجرای دستور yum update  شروع به آپدیت شدن میکنند که به دلایلی بر خلاف میل ماست . برای exclude کردن این پکیج ها باید فایل yum.conf واقع در مسیر etc را ویرایش کرده و به شکل زیر آن ها را exclude کنیم :

ابتدا فایل yum.conf را ویرایش میکنیم :

vi /etc/yum.conf

حالا نام پکیج های مورد نظر را به این صورت در فایل yum.conf وارد میکنیم :

exclude=geoip* geoip-devel

حالا با دستور :wq فایل را ذخیره کرده و در نهایت دستور yum update را در محیط ssh اجرا میکنیم . همانطور که ملاحظه میکنید ، پکیج های exclude شده در فایل yum.conf هرگز با دستور yum آپدیت نخواهند شد و تنها روش آپگرید کردن آن ها به صورت دستی و کامپایل از سورس برنامه خواهد بود .

برای پیشگیری از بروز مشکلات مربوط به مخازن repository ، از نصب فایل های RPM غیر استاندارد روی سرور لینوکس RHEL اکیدا خود داری کنید . شاید بتوان گفت معتبر ترین وب سایت برای دانلود فایل های RPM وب سایت repoforge.org است . نصب پکیج ها و برنامه های لینوکس از سورس همیشه نسبت به پکیج های RPM ارجحیت دارد . در صورتی که تجربه و دانش کافی برای کامپایل و نصب برنامه ها از سورس دارید ، هرگز اقدام به نصب RPM در یک سرور مهم نکنید .