بسم الله الرحمن الرحیم
شاید برای شما هم پیش آمده باشد که به دلیل کمبود فضا در یک پارتیشن سیستم عامل نیاز به جابجایی محل ذخیره سازی دیتاهای دیتابیس MySQL/MariaDB داشته باشید.مثلا با خطایی مشابه خطای زیر:
[] DISKCRITICAL blocks ⛔️: Mount Point “/” (): ۴۶٫۸ GB/49.98 GB - 93.654388%
در این مطلب به صورت خلاصه و تیتر وار مراحل این جابجایی خواهد آم.
هدف انتقال از مسیر / به /home می باشد، سیستم عامل هم Centos و مدیر دیتابیس هم mariadb ، اما برای MySQL هم همین مراحل قابل استفاده است.
مرحله اول:
پشتیبان گیری از اطلاعات دیتابیس جهت احتیاط
مرحله دوم:
متوقف کردن سرویس دیتابیس و یک تنظیم :
sudo systemctl stop mariadb
فایل mariadb.service را ادیت کرده(دستور: systemctl edit mariadb ) و مقدار زیر را تصحیح میکنیم:
[Service]
ProtectHome = true
==>
[Service]
ProtectHome = false
نکته : اگر از سی پنل استفاده می کنید سیستم بررسی سرویس ها را موقتا برای دیتابیس کنسل کنید تا دوباره آن را شروع به کار نکند:
whmapi1 configureservice service=mysql enabled=1 monitored=0
بعد از اتمام همه مراحل با دستور زیر سرویس را فعال کنید:
whmapi1 configureservice service=mysql enabled=1 monitored=1
مرحله سوم:
جابجایی دیتاها به مسیر جدید و تغییر نام پوشه قبلی(بعدا که مطمئن از انتقال اطلاعات شدید میتوانید پاک کنید):
mkdir /home/new_mysql_datadir
chown -R mysql:mysql /home/new_mysql_datadir
sudo rsync -av /var/lib/mysql /home/new_mysql_datadir
sudo mv /var/lib/mysql /var/lib/mysql.bak
مرحله چهارم:
ساخت سیمبلیک لینک مسیر اصلی به مسیر جدید جهت جلوگیری از اختلال در برنامه های وابسته:
ln -s /home/new_mysql_datadir/mysql /var/lib/mysql
این دستور هم زده بشه:
sudo chcon -R systemu:objectr:mysqlddbt:s0 /home/new_mysql_datadir/mysql
مرحله پنجم:
شناساندن مسیر جدید به MySQL/MariaDB :
فایل /etc/my.cnf را ادیت کرده و مقدار datadir را در مکان مناسب طبق متن زیر اضافه می کنیم:
[mysqld]
datadir=/home/new_mysql_datadir/mysql
مرحله آخر:
شروع مجدد کار MySQL/MariaDB:
sudo systemctl start mariadb
sudo systemctl status mariadb
پاک کردن اطلاعات قبلی:
درصورتی که از صحت عملیات مطمئن بودید با دستور زیر میتونید اطلاعات قبلی رو پاک کنید که فضا ازاد شه:
rm -rf /var/lib/mysql.bak