ວິທີການປ່ຽນລາຍຊື່ຂໍ້ມູນ MySQL/MariaDB ໃນ Linux
ຫຼັງຈາກຕິດຕັ້ງສ່ວນປະກອບຂອງ LAMP stack ໃນ server CentOS/RHEL 7, ມີສອງສາມຢ່າງທີ່ທ່ານອາດຈະຢາກເຮັດ.
ບາງສິ່ງບາງຢ່າງທີ່ພວກເຂົາຕ້ອງເຮັດກັບການເພີ່ມຄວາມປອດໄພຂອງ Apache ແລະ MySQL/MariaDB, ໃນຂະນະທີ່ອີກອັນ ໜຶ່ງ ອາດຈະສາມາດ ນຳ ໃຊ້ໄດ້ຫຼືບໍ່ຖືກຕ້ອງຕາມການຕັ້ງຄ່າຫລືຄວາມຕ້ອງການຂອງພວກເຮົາ.
ຕົວຢ່າງ, ໂດຍອີງໃສ່ການ ນຳ ໃຊ້ທີ່ຄາດວ່າຈະໃຊ້ຂອງຖານຂໍ້ມູນ, ພວກເຮົາອາດຈະຕ້ອງການປ່ຽນໄດເລກະທໍລີຂໍ້ມູນແບບເລີ່ມຕົ້ນ (/var/lib/mysql
) ໄປຢູ່ບ່ອນອື່ນ. ນີ້ແມ່ນກໍລະນີເມື່ອໄດເລກະທໍລີດັ່ງກ່າວຄາດວ່າຈະຂະຫຍາຍຕົວຍ້ອນການ ນຳ ໃຊ້ສູງ.
ຖ້າບໍ່ດັ່ງນັ້ນ, ລະບົບແຟ້ມເອກະສານທີ່ /var
ຖືກເກັບໄວ້ອາດຈະລົ້ມລົງໃນເວລາດຽວກັນເຮັດໃຫ້ລະບົບທັງ ໝົດ ລົ້ມເຫຼວ. ສະຖານະການອື່ນທີ່ການປ່ຽນແປງໄດເລກະທໍລີເລີ່ມຕົ້ນແມ່ນເມື່ອພວກເຮົາມີສ່ວນແບ່ງເຄືອຂ່າຍທີ່ອຸທິດຕົນທີ່ພວກເຮົາຕ້ອງການໃຊ້ເພື່ອເກັບຂໍ້ມູນຕົວຈິງຂອງພວກເຮົາ.
ດ້ວຍເຫດຜົນນີ້, ໃນບົດຂຽນນີ້, ພວກເຮົາຈະອະທິບາຍວິທີການປ່ຽນຖານຂໍ້ມູນ MySQL/MariaDB ໃນຕອນຕົ້ນໄປສູ່ເສັ້ນທາງທີ່ແຕກຕ່າງກັນໃນເຄື່ອງແມ່ຂ່າຍຂອງ CentOS/RHEL 7 ແລະການແຈກຈ່າຍ Ubuntu/Debian.
ເຖິງແມ່ນວ່າພວກເຮົາຈະ ນຳ ໃຊ້ MariaDB, ແນວຄວາມຄິດທີ່ໄດ້ອະທິບາຍແລະບາດກ້າວທີ່ໄດ້ປະຕິບັດໃນບົດຂຽນນີ້ແມ່ນໃຊ້ໄດ້ທັງ MySQL ແລະ MariaDB ເວັ້ນເສຍແຕ່ໄດ້ຍົກໃຫ້ເຫັນໃນທາງອື່ນ.
ການປ່ຽນຖານຂໍ້ມູນ MySQL/MariaDB ໃນຕອນຕົ້ນ
ໝາຍ ເຫດ: ພວກເຮົາຈະຄາດເດົາວ່າໄດເລກະທໍລີຂໍ້ມູນ ໃໝ່ ຂອງພວກເຮົາແມ່ນ /mnt/mysql-data
. ມັນເປັນສິ່ງສໍາຄັນທີ່ຄວນສັງເກດວ່າໄດເລກະທໍລີນີ້ຄວນເປັນເຈົ້າຂອງໂດຍໃຊ້ mysql: mysql
.
# mkdir /mnt/mysql-data # chown -R mysql:mysql /mnt/mysql-data
ເພື່ອຄວາມສະດວກສະບາຍຂອງທ່ານ, ພວກເຮົາໄດ້ແບ່ງຂະບວນການອອກເປັນ 5 ຂັ້ນຕອນທີ່ງ່າຍຕໍ່ການຕິດຕາມ:
ເພື່ອເລີ່ມຕົ້ນ, ມັນແມ່ນມີຄຸນຄ່າແລະດີທີ່ຈະລະບຸໄດເລກະທໍລີຂໍ້ມູນໃນປະຈຸບັນໂດຍໃຊ້ ຄຳ ສັ່ງຕໍ່ໄປນີ້. ຢ່າພຽງແຕ່ສົມມຸດວ່າມັນຍັງ /var/lib/mysql
ເພາະມັນອາດຈະມີການປ່ຽນແປງໃນອະດີດ.
# mysql -u root -p -e "SELECT @@datadir;"
ຫຼັງຈາກທີ່ທ່ານໃສ່ລະຫັດຜ່ານ MySQL, ຜົນຜະລິດຄວນຈະຄ້າຍຄືກັນ.
ເພື່ອຫລີກລ້ຽງການສໍ້ລາດບັງຫຼວງຂໍ້ມູນ, ໃຫ້ຢຸດການບໍລິການຖ້າມັນ ກຳ ລັງ ດຳ ເນີນການກ່ອນ ດຳ ເນີນການ. ໃຊ້ ຄຳ ສັ່ງທີ່ມີຊື່ສຽງໃນລະບົບເພື່ອເຮັດແນວນັ້ນ:
------------- On SystemD ------------- # systemctl stop mariadb # systemctl is-active mariadb ------------- On SysVInit ------------- # service mysqld stop # service mysqld status OR # service mysql stop # service mysql status
ຖ້າການບໍລິການຖືກຫຼຸດລົງ, ຜົນຜະລິດຂອງ ຄຳ ສັ່ງສຸດທ້າຍຄວນຈະເປັນດັ່ງຕໍ່ໄປນີ້:
ຫຼັງຈາກນັ້ນຄັດລອກເນື້ອໃນຂອງ /var/lib/mysql
ເພື່ອ /mnt/mysql-data
ຮັກສາສິດອະນຸຍາດເດີມແລະເວລາ:
# cp -R -p /var/lib/mysql/* /mnt/mysql-data
ແກ້ໄຂເອກະສານການຕັ້ງຄ່າ ( my.cnf
) ເພື່ອຊີ້ບອກໄດເລກະທໍລີຂໍ້ມູນ ໃໝ່ (/mnt/mysql-data
ໃນກໍລະນີນີ້).
# vi /etc/my.cnf OR # vi /etc/mysql/my.cnf
ຊອກຫາພາກສ່ວນ [mysqld]
ແລະ [ລູກຄ້າ]
ແລະເຮັດການປ່ຽນແປງດັ່ງຕໍ່ໄປນີ້:
Under [mysqld]: datadir=/mnt/mysql-data socket=/mnt/mysql-data/mysql.sock Under [client]: port=3306 socket=/mnt/mysql-data/mysql.sock
ບັນທຶກການປ່ຽນແປງແລ້ວ ດຳ ເນີນຂັ້ນຕອນຕໍ່ໄປ.
ຂັ້ນຕອນນີ້ແມ່ນສາມາດໃຊ້ໄດ້ກັບ RHEL/CentOS ແລະອະນຸພັນຂອງມັນເທົ່ານັ້ນ.
ຕື່ມສະພາບການຄວາມປອດໄພຂອງ SELinux ໃສ່ /mnt/mysql-data
ກ່ອນທີ່ຈະເລີ່ມ ໃໝ່ MariaDB.
# semanage fcontext -a -t mysqld_db_t "/mnt/mysql-data(/.*)?" # restorecon -R /mnt/mysql-data
ຕໍ່ໄປເລີ່ມການບໍລິການ MySQL.
------------- On SystemD ------------- # systemctl stop mariadb # systemctl is-active mariadb ------------- On SysVInit ------------- # service mysqld stop # service mysqld status OR # service mysql stop # service mysql status
ຕອນນີ້, ໃຊ້ ຄຳ ສັ່ງດຽວກັນກັບໃນຂັ້ນຕອນທີ 1 ເພື່ອກວດສອບສະຖານທີ່ຂອງໄດເລກະທໍລີຂໍ້ມູນ ໃໝ່:
# mysql -u root -p -e "SELECT @@datadir;"
ເຂົ້າສູ່ລະບົບ MariaDB, ສ້າງຖານຂໍ້ມູນ ໃໝ່ ແລະຫຼັງຈາກນັ້ນກວດເບິ່ງ /mnt/mysql-data
:
# mysql -u root -p -e "CREATE DATABASE tecmint;"
ຊົມເຊີຍ! ທ່ານໄດ້ປ່ຽນຖານຂໍ້ມູນ ສຳ ລັບ MySQL ຫຼື MariaDB ສຳ ເລັດແລ້ວ.
ໃນຂໍ້ຄວາມນີ້, ພວກເຮົາໄດ້ປຶກສາຫາລືກ່ຽວກັບວິທີການປ່ຽນໄດເລກະທໍລີຂໍ້ມູນໃນເຄື່ອງແມ່ຂ່າຍ MySQL ຫຼື MariaDB ທີ່ໃຊ້ໃນ CentOS/RHEL 7 ແລະການແຈກຈ່າຍ Ubuntu/Debian.
ທ່ານມີ ຄຳ ຖາມຫຼື ຄຳ ເຫັນຫຍັງກ່ຽວກັບບົດຂຽນນີ້? ຮູ້ສຶກວ່າບໍ່ເສຍຄ່າທີ່ຈະແຈ້ງໃຫ້ພວກເຮົາຮູ້ໂດຍໃຊ້ແບບຟອມລຸ່ມນີ້ - ພວກເຮົາຍິນດີທີ່ຈະໄດ້ຍິນຈາກທ່ານ!