شاید برای شما هم اتفاق افتاده باشد که به دلایلی قصد تغییر مسیر دایرکتوری MySQL از مسیر استاندارد /var/lib/mysql به پارتیشن یا دایرکتوری جدید را داشته باشید . برای مثال پارتیشن / حجم کمی دارد و ظرفیت لازم برای نگهداری از فایل های پر حجم دیتابیس MySQL را ندارد . یا مثلا قصد انتقال mysql دیتابیس به هارد ssd را دارید و خیلی موارد دیگر …
در این وضعیت ۲ راه وجود دارد . یکی بکاپ گرفتن از کل سایت ها و ریلود کردن سیستم عامل لینوکس و ایجاد تغییرات در پارتیشن ها و دایرکتوری ها در هنگام نصب لینوکس و راه دوم تغییر مسیر دادن به پارتیشن و دایرکتوری mysql . مسلما روش اول اصولی تر و روش دوم سریع تر است . اگر به هر دلیلی تصمیم به انجام راه حل دوم گرفته اید کافی است تا آموزش زیر رو مطالعه کرده و با دقت اجرا کنید .
توجه داشته باشید که جابجایی فایل های دیتابیس سرور mysql بسیار بسیار حساس است . بنا بر این به شما هشدار میدهیم اولا اگر تجربه کافی ندارید اقدام به انجام این کار نکنید و در ثانی حتما قبل از انجام هر گونه تغییر مسیر در mysql ابتدا از دیتابیس های سرور خود بکاپ بگیرید . برای مثال یکی از مشتریان کانفیگ ما در حین انتقال فایل های دیتابیس با دستور MV دچار قطعی اینترنت شده بود که در نتیجه انتقال نیمه کاره مانده بود و یکی از تیبل های دیتابیس corrupt شده بود که با هیچ روشی هم بازیابی نشد و اطلاعات ایشون از دست رفت . پس بکاپ فراموش نشه . در ضمن حتما تغییرات رو در ریموت دسکتاپ ویندوز سرور انجام بدید تا نوسانات و قطعی های اینترنت تاثیری در روند کار شما ایجاد نکند .
اگر دیتابیس های سرور شما حجیم و بزرگ هستند بهتر از به ۳ روش از دیتابیس بکاپ بگیرید . اولین راه کپی کردم محتویات /var/lib/mysql در یک هارد جداگانه است . راه دوم استفاده از دستور mysqldump در ssh و روش سوم استفاده از اسکریپت mysql dumper می باشد .
آموزش تغییر دادن مسیر دایرکتوری MySQL در لینوکس
بعد از اطمینان از سالم بودن فایل های بکاپ انتقال فایل های mysql به مسیر جدید را به صورت زیر آغاز میکنیم :
sudo su
قبل از انتقال سرویس mysql را stop میکنیم . این سرویس معمولا با نام mysqld و در بعضی از موارد و مخصوصا در ورژن های ۵.۵ به بعد با نام mysql در لینوکس فعال است .
service mysqld stop
حالا با دستور mv پوشه فعلی mysql رو به محل مورد نظر منتقل میکنیم . نام این دایرکتوری جدید کاملا شخضی و به عهده شماست . مثلا دایرکتوری opt رو در همان مسیر /var/lib برای این منظور انتخاب میکنیم :
mv /var/lib/mysql/ /opt/
با کمک symlink مسیر /var/lib/mysql رو به مسیر جدید تعیین شده توسط شما متصل و لینک میکنیم . با این روش نیازی به تغییر مسیر mysql در فایل my.cnf نخواهد بود . مسیر /var/lib/mysql به صورت خودکار به آدرس تعیین شده هدایت خواهد شد .
ln -s /opt/mysql /var/lib/
ls -la /var/lib/mysql
حالا سرویس mysql رو مجددا استارت کنید .
service mysqld start
همانطور که مشاهده میکنید کار پیچیده ای نبود . اگر قصد انتقال دیتابیس ها به هارد ssd رو دارید هم روند کلی همین مواردی بود که به آن اشاره شد و فقط در مرحله اول به جای opt آدرس پارتیشن ssd که قبلا mount و فرمت شده است را باید معرفی کنید . برای حد اکثر میزان بازدهی و بیشترین سرعت ممکن بهتر است در هنگام فرمت کردن هارد ssd از سیستم فایل ext4 استفاده کنید .