ວິທີການຕິດຕັ້ງ, ການຮັກສາຄວາມປອດໄພແລະການເຮັດວຽກຂອງ Server Database ຂອງ MariaDB


ເຄື່ອງແມ່ຂ່າຍຖານຂໍ້ມູນແມ່ນສ່ວນປະກອບ ສຳ ຄັນຂອງໂຄງສ້າງພື້ນຖານເຄືອຂ່າຍທີ່ ຈຳ ເປັນ ສຳ ລັບການ ນຳ ໃຊ້ໃນປະຈຸບັນ. ຖ້າບໍ່ມີຄວາມສາມາດໃນການເກັບຮັກສາ, ດຶງ, ປັບປຸງແລະລຶບຂໍ້ມູນ (ເມື່ອ ຈຳ ເປັນ), ຄວາມເປັນປະໂຫຍດແລະຂອບເຂດຂອງແອັບ web ເວັບແລະ desktop ແມ່ນ ຈຳ ກັດຫຼາຍ.

ນອກຈາກນັ້ນ, ການຮູ້ວິທີການຕິດຕັ້ງ, ການຄຸ້ມຄອງແລະການ ກຳ ຫນົດຄ່າຂອງຖານຂໍ້ມູນ (ເພື່ອໃຫ້ມັນເຮັດວຽກຕາມທີ່ຄາດ ໝາຍ) ແມ່ນທັກສະທີ່ ຈຳ ເປັນທີ່ຜູ້ບໍລິຫານລະບົບຕ້ອງມີ.

ໃນບົດຂຽນນີ້ພວກເຮົາຈະທົບທວນສັ້ນໆກ່ຽວກັບວິທີຕິດຕັ້ງແລະຮັບປະກັນເຄື່ອງແມ່ຂ່າຍຖານຂໍ້ມູນ MariaDB ແລະຈາກນັ້ນພວກເຮົາຈະອະທິບາຍວິທີການຕັ້ງຄ່າມັນ.

ການຕິດຕັ້ງແລະຮັບປະກັນເຄື່ອງແມ່ຂ່າຍ MariaDB

ໃນ CentOS 7.x, MariaDB ທົດແທນ MySQL, ເຊິ່ງຍັງສາມາດພົບໄດ້ໃນ Ubuntu (ພ້ອມກັບ MariaDB). ດຽວກັນນີ້ແມ່ນຄວາມຈິງ ສຳ ລັບ openSUSE.

ສຳ ລັບຄວາມຖີ່, ພວກເຮົາຈະໃຊ້ພຽງແຕ່ MariaDB ໃນບົດແນະ ນຳ ນີ້ເທົ່ານັ້ນ, ແຕ່ກະລຸນາຮັບຊາບວ່ານອກ ເໜືອ ຈາກມີຊື່ແລະແນວຄິດພັດທະນາທີ່ແຕກຕ່າງກັນ, ທັງລະບົບການຄຸ້ມຄອງຂໍ້ມູນທີ່ກ່ຽວຂ້ອງ (Relative DataBase System) (RDBMSs ສັ້ນ) ແມ່ນເກືອບຄືກັນ.

ນີ້ຫມາຍຄວາມວ່າຄໍາສັ່ງຂ້າງຂອງລູກຄ້າແມ່ນຄືກັນກັບທັງ MySQL ແລະ MariaDB, ແລະເອກະສານການຕັ້ງຄ່າແມ່ນຕັ້ງຊື່ແລະຕັ້ງຢູ່ບ່ອນດຽວກັນ.

ການຕິດຕັ້ງ MariaDB, ເຮັດ:

--------------- On CentOS/RHEL 7 and Fedora 23 --------------- 
# yum update && yum install mariadb mariadb-server # CentOS 

--------------- On Debian and Ubuntu --------------- 
$ sudo aptitude update && sudo aptitude install mariadb-client mariadb-server 

--------------- On openSUSE --------------- 
# zypper update && zypper install mariadb mariadb-tools # openSUSE

ໃຫ້ສັງເກດວ່າ, ໃນ Ubuntu, ທ່ານຈະຖືກຮ້ອງຂໍໃຫ້ໃສ່ລະຫັດລັບ ສຳ ລັບຜູ້ໃຊ້ຮາກ RDBMS.

ເມື່ອແພກເກດຂ້າງເທິງໄດ້ຖືກຕິດຕັ້ງ, ໃຫ້ແນ່ໃຈວ່າການບໍລິການຖານຂໍ້ມູນ ກຳ ລັງເຮັດວຽກຢູ່ແລະຖືກເປີດໃຊ້ງານເພື່ອເລີ່ມຕົ້ນການໃສ່ເກີບ (ໃນ CentOS ແລະ openSUSE ທ່ານຈະຕ້ອງໄດ້ ດຳ ເນີນການນີ້ດ້ວຍຕົນເອງ. ສຳ ລັບທ່ານ):

--------------- On CentOS/RHEL 7 and Fedora 23 --------------- 
# systemctl start mariadb && systemctl enable mariadb 

--------------- On openSUSE --------------- 
# systemctl start mysql && systemctl enable mysql

ຫຼັງຈາກນັ້ນ, ດຳ ເນີນການສະຄິບ . ຂະບວນການນີ້ຈະຊ່ວຍໃຫ້ທ່ານ:

<

  • ຕັ້ງ/ປັບລະຫັດລັບ ສຳ ລັບຜູ້ໃຊ້ຮາກ RDBMS
  • ເອົາການເຂົ້າສູ່ລະບົບແບບບໍ່ລະບຸຊື່ (ດັ່ງນັ້ນເຮັດໃຫ້ຜູ້ໃຊ້ທີ່ມີບັນຊີທີ່ຖືກຕ້ອງສາມາດເຂົ້າສູ່ RDBMS ໄດ້)
  • ປິດການເຂົ້າເຖິງຮາກ ສຳ ລັບເຄື່ອງຈັກນອກ ເໜືອ ຈາກ localhost
  • ເອົາຖານຂໍ້ມູນການທົດສອບອອກ (ເຊິ່ງໃຜສາມາດເຂົ້າເຖິງໄດ້)
  • ກະຕຸ້ນການປ່ຽນແປງທີ່ກ່ຽວຂ້ອງກັບ 1 ຫາ 4.
  • ສຳ ລັບ ຄຳ ອະທິບາຍລະອຽດກ່ຽວກັບຂະບວນການນີ້, ທ່ານສາມາດອ້າງອີງເຖິງສ່ວນການຕິດຕັ້ງ Post ໃນຖານຂໍ້ມູນຕິດຕັ້ງ MariaDB ໃນ RHEL/CentOS/Fedora ແລະ Debian/Ubuntu.

    ຕັ້ງຄ່າ Server MariaDB

    ຕົວເລືອກການຕັ້ງຄ່າເລີ່ມຕົ້ນແມ່ນອ່ານຈາກແຟ້ມຕໍ່ໄປນີ້ຕາມ ລຳ ດັບທີ່ໄດ້ ກຳ ນົດໄວ້: /etc/mysql/my.cnf , /etc/my.cnf , ແລະ ~ /.my.cnf .

    ສ່ວນຫຼາຍແລ້ວ, ມີພຽງແຕ່ /etc/my.cnf ເທົ່ານັ້ນ. ມັນຢູ່ໃນແຟ້ມເອກະສານນີ້ພວກເຮົາຈະຕັ້ງຄ່າການຕັ້ງຄ່າເຊີຟເວີ (ເຊິ່ງສາມາດ overridden ດ້ວຍການຕັ້ງຄ່າດຽວກັນໃນ ~/.my.cnf ສຳ ລັບຜູ້ໃຊ້ແຕ່ລະຄົນ).

    ສິ່ງ ທຳ ອິດທີ່ພວກເຮົາຕ້ອງສັງເກດກ່ຽວກັບ my.cnf ແມ່ນວ່າການຕັ້ງຄ່າຕ່າງໆຖືກຈັດເຂົ້າເປັນຫລາຍປະເພດ (ຫລືກຸ່ມ) ເຊິ່ງແຕ່ລະຊື່ປະເພດຖືກຫຸ້ມດ້ວຍວົງເລັບສີ່ຫລ່ຽມ.

    ການຕັ້ງຄ່າລະບົບເຊີເວີແມ່ນໃຫ້ຢູ່ໃນສ່ວນ [mysqld] , ເຊິ່ງໂດຍປົກກະຕິທ່ານຈະພົບພຽງສອງການຕັ້ງຄ່າ ທຳ ອິດໃນຕາຕະລາງລຸ່ມນີ້. ສ່ວນທີ່ເຫຼືອແມ່ນທາງເລືອກອື່ນທີ່ຖືກ ນຳ ໃຊ້ເລື້ອຍໆ (ບ່ອນທີ່ໄດ້ລະບຸ, ພວກເຮົາຈະປ່ຽນຄ່າເລີ່ມຕົ້ນດ້ວຍການ ກຳ ຫນົດເອງໃນການເລືອກຂອງພວກເຮົາ):

    ພວກເຮົາຈະປ່ຽນແປງສິ່ງນີ້ເພື່ອສັ່ງໃຫ້ການບໍລິການຮັບຟັງໃນສະເພາະທີ່ຢູ່ຂອງມັນ (192.168.0.13):

    bind_address = 192.168.0.13 bind_address = 0.0.0.0 ພອດສະແດງເຖິງພອດທີ່ເຊີຟເວີຖານຂໍ້ມູນຈະຟັງ.

    ພວກເຮົາຈະປ່ຽນແທນຄ່າເລີ່ມຕົ້ນ (3306) ດ້ວຍ 20500 (ແຕ່ພວກເຮົາຕ້ອງຮັບປະກັນວ່າບໍ່ມີຫຍັງອີກແລ້ວທີ່ໃຊ້ພອດນັ້ນ):
    ພອດ = 20500

    ໃນຂະນະທີ່ບາງຄົນຈະໂຕ້ຖຽງວ່າຄວາມປອດໄພຜ່ານການປິດບັງບໍ່ແມ່ນການປະຕິບັດທີ່ດີ, ການປ່ຽນພອດການ ນຳ ໃຊ້ໂປແກມ ສຳ ລັບບ່ອນທີ່ສູງກວ່ານັ້ນແມ່ນວິທີການທີ່ມີປະສິດຕິຜົນສູງສຸດໃນການຂັດຂວາງການສະແກນ port. port = 3306 innodb_buffer_pool_size ແມ່ນສະລອຍນ້ ຳ buffer (ເປັນ bytes) ຂອງ ໜ່ວຍ ຄວາມ ຈຳ ທີ່ຖືກຈັດສັນໃຫ້ກັບຂໍ້ມູນແລະດັດສະນີທີ່ເຂົ້າເຖິງເລື້ອຍໆເມື່ອ ນຳ ໃຊ້ Innodb (ເຊິ່ງແມ່ນຄ່າເລີ່ມຕົ້ນໃນ MariaDB) ຫຼື XtraDB ເປັນເຄື່ອງຈັກເກັບຮັກສາ.

    ພວກເຮົາຈະປ່ຽນແທນຄ່າເລີ່ມຕົ້ນດ້ວຍ 256 MB:

    innodb_buffer_pool_size = 256M innodb_buffer_pool_size = 134217728 ຂ້າມ_name_resolveຊີ້ໃຫ້ເຫັນວ່າ hostnames ຈະຖືກແກ້ໄຂຫຼືບໍ່ກ່ຽວກັບການເຊື່ອມຕໍ່ຂາເຂົ້າ. ຖ້າຕັ້ງເປັນ 1, ດັ່ງທີ່ພວກເຮົາຈະເຮັດໃນຄູ່ມືນີ້, ມີທີ່ຢູ່ IP ເທົ່ານັ້ນ.

    ເວັ້ນເສຍແຕ່ວ່າທ່ານຮຽກຮ້ອງໃຫ້ hostnames ສາມາດກໍານົດສິດອະນຸຍາດ, ມັນແມ່ນແນະນໍາໃຫ້ປິດການປ່ຽນແປງຂອງຕົວແປນີ້ (ເພື່ອເລັ່ງການເຊື່ອມຕໍ່ແລະການສອບຖາມ) ໂດຍການຕັ້ງຄ່າຂອງມັນເປັນ 1:

    ຂ້າມ_name_resolve = 1 ຂ້າມ_name_resolve = 0 query_cache_size ສະແດງຂະ ໜາດ (ເປັນໄບ) ທີ່ມີຢູ່ໃນບ່ອນເກັບຂໍ້ມູນແບບສອບຖາມໃນແຜ່ນ, ບ່ອນທີ່ຜົນຂອງການສອບຖາມ SELECT ຖືກເກັບໄວ້ເພື່ອໃຊ້ໃນອະນາຄົດເມື່ອມີການສອບຖາມທີ່ຄ້າຍຄືກັນ ( ຖານຂໍ້ມູນດຽວກັນແລະການໃຊ້ໂປໂຕຄອນດຽວກັນແລະຊຸດຕົວລະຄອນດຽວກັນ) ຖືກປະຕິບັດ.

    ທ່ານຄວນເລືອກຂະ ໜາດ ຂອງຖານຂໍ້ມູນແບບສອບຖາມທີ່ກົງກັບຄວາມຕ້ອງການຂອງທ່ານໂດຍອີງໃສ່ 1) ຈຳ ນວນ ຄຳ ຖາມທີ່ຊ້ ຳ ແລ້ວແລະ 2) ຈຳ ນວນປະມານຂອງບັນທຶກທີ່ ຄຳ ຖາມທີ່ຄ້າງຫ້ອງທີ່ຄາດວ່າຈະກັບມາ. ພວກເຮົາຈະ ກຳ ນົດມູນຄ່ານີ້ໃຫ້ເປັນ 100 MB ສຳ ລັບເວລາ:

    query_cache_size = 100M query_cache_size = 0 (ເຊິ່ງ ໝາຍ ຄວາມວ່າມັນຖືກປິດໂດຍຄ່າເລີ່ມຕົ້ນ) max_connections ແມ່ນ ຈຳ ນວນສູງສຸດຂອງການເຊື່ອມຕໍ່ລູກຄ້າພ້ອມກັນກັບເຄື່ອງແມ່ຂ່າຍ. ພວກເຮົາຈະ ກຳ ນົດຄ່ານີ້ເຖິງ 30:
    max_connections = ການເຊື່ອມຕໍ່ 30Each ຈະໃຊ້ກະທູ້, ແລະດັ່ງນັ້ນຈຶ່ງຈະເຮັດໃຫ້ຄວາມຊົງ ຈຳ ດີ. ພິຈາລະນາຄວາມເປັນຈິງນີ້ເຂົ້າໃນຂະນະທີ່ ກຳ ນົດການເຊື່ອມຕໍ່ max_connections. max_connections = 151 thread_cache_size ສະແດງຕົວເລກຂອງກະທູ້ທີ່ເຊີຟເວີຈັດສັນໃຫ້ໃຊ້ຄືນ ໃໝ່ ຫຼັງຈາກລູກຄ້າໄດ້ຕັດການເຊື່ອມຕໍ່ແລະກະແສກະທູ້ (ກ່ອນ ໜ້າ ນີ້) ທີ່ໃຊ້ແລ້ວ. ໃນສະຖານະການນີ້, ມັນມີລາຄາຖືກກວ່າ (ການປະຕິບັດ - ສະຫລາດ) ທີ່ຈະໃຊ້ກະທູ້ ໃໝ່ ກ່ວາການກະຕຸ້ນກະທູ້ ໃໝ່.

    ອີກເທື່ອ ໜຶ່ງ, ມັນຂື້ນກັບ ຈຳ ນວນການເຊື່ອມຕໍ່ທີ່ທ່ານ ກຳ ລັງຄາດຫວັງ. ພວກເຮົາສາມາດ ກຳ ນົດມູນຄ່ານີ້ໄດ້ຢ່າງປອດໄພເຖິງເຄິ່ງ ໜຶ່ງ ຂອງ ຈຳ ນວນສາຍເຊື່ອມຕໍ່:

    thread_cache_size = 15 thread_cache_size = 0 (ປິດໂດຍຄ່າເລີ່ມຕົ້ນ) ໃນ CentOS, ພວກເຮົາຈະຕ້ອງໄດ້ບອກ SELinux ອະນຸຍາດໃຫ້ MariaDB ຟັງກ່ຽວກັບພອດທີ່ບໍ່ໄດ້ມາດຕະຖານ (20500) ກ່ອນທີ່ຈະເລີ່ມການບໍລິການ ໃໝ່:

    # yum install policycoreutils-python
    # semanage port -a -t mysqld_port_t -p tcp 20500
    

    ຫຼັງຈາກນັ້ນໃຫ້ບໍລິການ MariaDB ຄືນ ໃໝ່.

    Tuning MariaDB Performance

    ເພື່ອຊ່ວຍພວກເຮົາໃນການກວດສອບແລະດັດປັບການຕັ້ງຄ່າຕາມຄວາມຕ້ອງການສະເພາະຂອງພວກເຮົາ, ພວກເຮົາສາມາດຕິດຕັ້ງ mysqltuner (ສະຄິບທີ່ຈະໃຫ້ ຄຳ ແນະ ນຳ ເພື່ອປັບປຸງການເຮັດວຽກຂອງ server ຂອງຖານຂໍ້ມູນແລະເພີ່ມສະຖຽນລະພາບຂອງມັນ):

    # wget https://github.com/major/MySQLTuner-perl/tarball/master
    # tar xzf master
    

    ຫຼັງຈາກນັ້ນປ່ຽນຊື່ເຂົ້າໃນໂຟນເດີທີ່ສະກັດຈາກ tarball (ສະບັບທີ່ແນ່ນອນອາດຈະແຕກຕ່າງກັນໃນກໍລະນີຂອງທ່ານ):

    # cd major-MySQLTuner-perl-7dabf27
    

    ແລະດໍາເນີນການມັນ (ທ່ານຈະໄດ້ຮັບການກະຕຸ້ນເຕືອນໃຫ້ໃສ່ຂໍ້ມູນປະຈໍາຕົວຂອງບັນຊີ MariaDB ບໍລິຫານຂອງທ່ານ)

    # ./mysqltuner.pl
    

    ຜົນຜະລິດຂອງຕົວອັກສອນແມ່ນ ໜ້າ ສົນໃຈຫຼາຍ, ແຕ່ໃຫ້ຂ້າມໄປທາງລຸ່ມບ່ອນທີ່ຕົວແປທີ່ຈະປັບໄດ້ຖືກລະບຸໄວ້ດ້ວຍຄ່າທີ່ແນະ ນຳ:

    ການຕັ້ງຄ່າ query_cache_type ຊີ້ໃຫ້ເຫັນວ່າຖານຂໍ້ມູນແບບສອບຖາມຖືກປິດ (0) ຫຼືເປີດໃຊ້ (1). ໃນກໍລະນີນີ້, mysqltuner ກຳ ລັງແນະ ນຳ ໃຫ້ພວກເຮົາປິດມັນ.

    ສະນັ້ນເປັນຫຍັງພວກເຮົາຖືກແນະ ນຳ ໃຫ້ເຮັດໃຫ້ມັນປິດການ ນຳ ໃຊ້ດຽວນີ້? ເຫດຜົນກໍ່ຄືວ່າຖານຂໍ້ມູນການສອບຖາມແມ່ນມີປະໂຫຍດສ່ວນໃຫຍ່ໃນສະຖານະການທີ່ອ່ານ/ຂຽນທີ່ມີລະດັບຕໍ່າ (ເຊິ່ງບໍ່ແມ່ນກໍລະນີຂອງພວກເຮົາ, ເພາະວ່າພວກເຮົາຫາກໍ່ຕິດຕັ້ງຖານຂໍ້ມູນ server).

    ຄຳ ເຕືອນ: ກ່ອນທີ່ຈະເຮັດການປ່ຽນແປງການຕັ້ງຄ່າຂອງເຄື່ອງແມ່ຂ່າຍການຜະລິດ, ທ່ານໄດ້ຖືກແນະ ນຳ ໃຫ້ປຶກສາຜູ້ຊ່ຽວຊານດ້ານຖານຂໍ້ມູນເພື່ອຮັບປະກັນວ່າ ຄຳ ແນະ ນຳ ທີ່ໃຫ້ໂດຍ mysqltuner ຈະບໍ່ສົ່ງຜົນກະທົບທາງລົບຕໍ່ການຕັ້ງຄ່າທີ່ມີຢູ່.

    ບົດສະຫຼຸບ

    ໃນບົດຂຽນນີ້ພວກເຮົາໄດ້ອະທິບາຍວິທີການ ກຳ ຫນົດຄ່າເຊີຟເວີຖານຂໍ້ມູນ MariaDB ຫຼັງຈາກທີ່ພວກເຮົາໄດ້ຕິດຕັ້ງແລະຮັບປະກັນມັນ. ຕົວແປການຕັ້ງຄ່າທີ່ລະບຸໄວ້ໃນຕາຕະລາງຂ້າງເທິງແມ່ນການຕັ້ງຄ່າບໍ່ຫຼາຍປານໃດທີ່ທ່ານອາດຈະຕ້ອງການພິຈາລະນາໃນຂະນະທີ່ ກຳ ລັງກະກຽມ server ສຳ ລັບໃຊ້ຫລືໃນເວລາທີ່ ກຳ ລັງປັບມັນຕໍ່ມາ. ສະເຫມີອ້າງອີງເຖິງເອກະສານທີ່ເປັນທາງການຂອງ MariaDB ກ່ອນທີ່ຈະມີການປ່ຽນແປງຫຼືອ້າງອີງເຖິງ ຄຳ ແນະ ນຳ ໃນການປັບແຕ່ງຜົນງານຂອງ MariaDB:

    ດັ່ງທີ່ເຄີຍເຮັດ, ຢ່າລັງເລທີ່ຈະແຈ້ງໃຫ້ພວກເຮົາທາບວ່າທ່ານມີ ຄຳ ຖາມຫຼື ຄຳ ເຫັນຫຍັງກ່ຽວກັບບົດຂຽນນີ້. ມີການຕັ້ງຄ່າເຊີຟເວີອື່ນທີ່ທ່ານມັກໃຊ້ບໍ? ແບ່ງປັນກັບຊຸມຊົນທີ່ເຫຼືອຂອງຊຸມຊົນໂດຍໃຊ້ແບບຟອມ ຄຳ ເຫັນຂ້າງລຸ່ມນີ້.