ວິທີການຕິດຕັ້ງແບບ ຈຳ ລອງແບບ MariaDB (Master-Slave) ໃນ CentOS/RHEL 7 ແລະ Debian 8/9


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

ໃນບັນດາຜົນປະໂຫຍດອື່ນໆຂອງການເຮັດຊ້ ຳ ແບບຖານຂໍ້ມູນໃນການຕິດຕັ້ງແບບຂ້າທາດພວກເຮົາສາມາດກ່າວເຖິງ

<

  • ການ ສຳ ຮອງຂໍ້ມູນສາມາດເຮັດໄດ້ໃນ server server ໂດຍບໍ່ມີຜົນກະທົບ (ແລະຖືກຜົນກະທົບຈາກ) ການເຮັດວຽກຂຽນໃນແມ່ບົດ.
  • ການປະຕິບັດງານທີ່ໃຊ້ຊັບພະຍາກອນ (ເຊັ່ນການວິເຄາະຂໍ້ມູນ) ສາມາດປະຕິບັດໄດ້ໂດຍບໍ່ມີອິດທິພົນຕໍ່ການປະຕິບັດງານຂອງນາຍ.
  • ໃນບົດຂຽນນີ້ພວກເຮົາຈະອະທິບາຍວິທີການຕັ້ງຄ່າການເຮັດຊ້ ຳ ແບບແມ່ບົດໃນ MariaDB 10.1. ກົງກັນຂ້າມກັບການເຮັດແບບ ຈຳ ລອງແບບເກົ່າ, MariaDB ໄດ້ ນຳ ສະ ເໜີ ແນວຄວາມຄິດຂອງ Global Transaction IDs (GTIDs) ໃນ v10.0, ເຊິ່ງຊ່ວຍໃຫ້ມີການປ່ຽນແປງທາດທີ່ສາມາດເຊື່ອມຕໍ່ແລະຄັດລອກຈາກຕົ້ນສະບັບທີ່ແຕກຕ່າງໄດ້ຢ່າງງ່າຍດາຍ. ນອກ ເໜືອ ຈາກນັ້ນ, ສະຖານະຂອງທາດແມ່ນຖືກບັນທຶກໄວ້ໃນທາງທີ່ປອດໄພຈາກອຸປະຕິເຫດ (ການປັບປຸງສະຖານະພາບແມ່ນເຮັດໃນການເຮັດທຸລະ ກຳ ດຽວກັນກັບການປັບປຸງຂໍ້ມູນ).

    ຖ້າທ່ານ ກຳ ລັງຊອກຫາແບບ ຈຳ ລອງ MySQL ພາຍໃຕ້ CentOS/RHEL 6, ໃຫ້ປະຕິບັດຕາມຄູ່ມືນີ້ການຕັ້ງຄ່າ MySQL (Master-Slave) ໃນ CentOS/RHEL 6

    ຕິດຕັ້ງ MariaDB 10.1 ໃນ CentOS/RHEL 7 ແລະ Debian 8/9

    ສະພາບແວດລ້ອມການທົດສອບຂອງພວກເຮົາປະກອບມີເຄື່ອງຈັກຕໍ່ໄປນີ້ (ທັງສອງແມ່ນ CentOS 7):

    Master: 192.168.0.18
    Slave: 192.168.0.19
    

    ການຕິດຕັ້ງ MariaDB ລຸ້ນລ້າສຸດ, ພວກເຮົາຈະຕ້ອງເພີ່ມຫໍສະມຸດຂອງພວກເຂົາໃສ່ໃນເຊີບເວີຂອງພວກເຮົາ. ຖ້າທ່ານ ກຳ ລັງໃຊ້ MariaDB ລຸ້ນເກົ່າເວົ້າວ່າ 5.5, ພິຈາລະນາຍົກລະດັບໃຫ້ເປັນລຸ້ນ ໃໝ່ ຫຼ້າສຸດ 10.1 ໂດຍໃຊ້ບົດຄວາມຂ້າງລຸ່ມນີ້.

    <

  • Upgrde MariaDB 5.5 ເຖິງ MariaDB 10.1
  • ສ້າງແຟ້ມເອກະສານທີ່ມີຊື່ວ່າ MariaDB.repo ພາຍໃນ /etc/yum.repos.d ດ້ວຍເນື້ອໃນຕໍ່ໄປນີ້ທັງລະບົບ Master ແລະ Slave:

    # MariaDB 10.1 CentOS repository list - created 2016-01-23 14:16 UTC
    # http://mariadb.org/mariadb/repositories/
    [mariadb]
    name = MariaDB
    baseurl = http://yum.mariadb.org/10.1/centos7-amd64
    gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
    gpgcheck=1
    

    ບັນທຶກເອກະສານແລະຕິດຕັ້ງ MariaDB ໄວ້ໃນ server ທັງສອງໂດຍໃຊ້ yum:

    # yum update && yum install MariaDB-server MariaDB-client
    

    ເພີ່ມລະຫັດໃນການກວດສອບແພັກເກດແລະຫໍສະ ໝຸດ MariaDB:

    # apt-get install software-properties-common
    # apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 0xcbcb082a1bb943db
    # add-apt-repository 'deb [arch=amd64,i386] http://mirror.edatel.net.co/mariadb/repo/10.1/debian jessie main'
    

    ໝາຍ ເຫດ: ປ່ຽນຊື່ການແຈກຢາຍແລະລະຫັດຊື່ໃນແຖວທີ່ຖືກສະທ້ອນໄວ້ຂ້າງເທິງ.

    ຕິດຕັ້ງໂດຍໃຊ້ ຄຳ ສັ່ງ apt-get:

    # apt-get update
    # apt-get install mariadb-server
    

    ເມື່ອທ່ານຕິດຕັ້ງ MariaDB ແລ້ວ, ດຳ ເນີນຂັ້ນຕອນ mysql_secure_installation ທັງແມ່ແລະຂ້ອຍ, ໃຫ້ຕັ້ງຖານຂໍ້ມູນການທົດສອບຕົວຢ່າງໃນເຄື່ອງແມ່ບົດ.

    ການຕັ້ງຖານຂໍ້ມູນ MySQL ຕົວຢ່າງໃນ Master

    ດຽວນີ້ພວກເຮົາຈະຕັ້ງຖານຂໍ້ມູນລະຫັດຖານຂໍ້ມູນ ພະນັກງານ ຈາກ https://github.com/datacharmer/test_db (ເຊິ່ງສະ ໜອງ ຊຸດຂໍ້ມູນ 4 ລ້ານບັນທຶກທີ່ເຜີຍແຜ່ໃນຫົກຕາຕະລາງ) ໃນສອງຂັ້ນຕອນງ່າຍໆ:

    Clone ឃ្លាំងແລະໃຊ້ມັນເພື່ອ ນຳ ເຂົ້າຖານຂໍ້ມູນຕົວຢ່າງໃນການຕິດຕັ້ງ MariaDB ຂອງທ່ານ:

    # git clone https://github.com/datacharmer/test_db
    # cd test_db
    # mysql < employees.sql
    

    ການຕັ້ງຄ່າ MySQL Server ໃນ Master

    ເພື່ອຕັ້ງຄ່າແມ່ບົດ, ໃຫ້ເຮັດຕາມຂັ້ນຕອນດັ່ງນີ້:

    ຂັ້ນຕອນທີ 1: ແກ້ໄຂເອກະສານ /etc/my.cnf . ຢູ່ໃນພາກ [mysqld] , ຕື່ມສີ່ແຖວຕໍ່ໄປນີ້:

    log-bin
    server_id=1
    replicate-do-db=employees
    bind-address=192.168.0.18
    

    ແລະ restart MariaDB:

    # systemctl restart mariadb
    

    ຂັ້ນຕອນທີ 2: ເຂົ້າສູ່ server ຂອງ MariaDB ເປັນຮາກ, ສ້າງຜູ້ໃຊ້ຂອງຜູ້ໃຊ້ແລະມອບ ໝາຍ ການຊ່ວຍເຫຼືອທີ່ ຈຳ ເປັນ:

    MariaDB [(none)]> CREATE USER 'slave'@'localhost' IDENTIFIED BY 'SlavePassword';
    MariaDB [(none)]> GRANT REPLICATION SLAVE ON *.* TO slave IDENTIFIED BY 'SlavePassword' WITH GRANT OPTION;
    MariaDB [(none)]> FLUSH PRIVILEGES;
    MariaDB [(none)]> FLUSH TABLES WITH READ LOCK;
    MariaDB [(none)]> SHOW MASTER STATUS;
    

    ຄຳ ສັ່ງສຸດທ້າຍ (SHOW MASTER STATUS) ກັບຄືນ ຕຳ ແໜ່ງ ປະຈຸບັນໃນບັນທຶກຖານສອງ (ການປະສານງານທີ່ແນ່ນອນສະແດງຢູ່ຈຸດໃດທີ່ຂ້າທາດຄວນຈະເລີ່ມຕົ້ນການເຮັດຊ້ ຳ ຈາກ:

    ຂັ້ນຕອນທີ 3: ອອກຈາກການກະຕຸ້ນເຕືອນ MariaDB (ດ້ວຍ <ລະຫັດອອກ; ) ແລະໃຊ້ ຄຳ ສັ່ງຕໍ່ໄປນີ້ເພື່ອຖ່າຍຮູບຂອງຖານຂໍ້ມູນພະນັກງານ. ເມື່ອທ່ານກົດ Enter, ທ່ານຈະຖືກກະຕຸ້ນໃຫ້ພິມລະຫັດລັບ ສຳ ລັບຮາກທີ່ທ່ານຕັ້ງໄວ້ກ່ອນ ໜ້າ ນີ້ໂດຍຜ່ານ mysql_secure_installation :

    # mysqldump -u root -p employees > employees-dump.sql
    

    ຫຼັງຈາກການຖີ້ມສິ້ນສຸດລົງແລ້ວ, ເຊື່ອມຕໍ່ກັບຖານຂໍ້ມູນ server ອີກຄັ້ງເພື່ອປົດລັອກຕາຕະລາງແລະຫຼັງຈາກນັ້ນອອກຈາກ:

    MariaDB [(none)]> UNLOCK TABLES;
    MariaDB [(none)]> exit;
    

    ຂັ້ນຕອນທີ 4: ຄັດລອກສິ່ງເສດເຫຼືອໄປທີ່ຂ້າໃຊ້:

    # scp employees-dump.sql [email :/root/ 
    

    ຂັ້ນຕອນທີ 5: ດຳ ເນີນຂັ້ນຕອນ mysql_upgrade ເພື່ອຍົກລະດັບຕາຕະລາງລະບົບ (ທ່ານຈະໄດ້ຮັບການກະຕຸ້ນໃຫ້ໃສ່ລະຫັດລັບຮາກຂອງ MariaDB):

    # mysql_upgrade -u root -p
    

    ຂັ້ນຕອນທີ 6: ອະນຸຍາດໃຫ້ບໍລິການຖານຂໍ້ມູນຜ່ານ Firewall:

    # firewall-cmd --add-service=mysql
    # firewall-cmd --add-service=mysql --permanent
    # firewall-cmd --reload
    

    ບັດນີ້ໃຫ້ຕັ້ງຄ່າ ສຳ ລອງ.

    ການຕັ້ງຄ່າ MySQL Server ໃນ Slave

    ເພື່ອ ກຳ ນົດຂ້າທາດ, ໃຫ້ເຮັດຕາມຂັ້ນຕອນເຫຼົ່ານີ້:

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

    # mysql -u root –p
    

    ແລະໃສ່ລະຫັດຜ່ານທີ່ທ່ານຕັ້ງໄວ້ກ່ອນ ໜ້າ ນີ້.

    ຂັ້ນຕອນທີ 2: ເມື່ອເຊື່ອມຕໍ່ກັບຖານຂໍ້ມູນເຊີຟເວີ, ສ້າງຜູ້ໃຊ້ແລະຖານຂໍ້ມູນທີ່ບໍ່ມີຂໍ້ມູນ, ແລະອະນຸຍາດ:

    MariaDB [(none)]> CREATE DATABASE employees;
    MariaDB [(none)]> GRANT ALL PRIVILEGES ON employees.* TO 'slave'@'localhost' WITH GRANT OPTION;
    MariaDB [(none)]> FLUSH PRIVILEGES;
    

    ຂັ້ນຕອນທີ 3: ອອກຈາກການກະຕຸ້ນເຕືອນຂອງ MariaDB ແລະໂຫລດສິ່ງເສດເຫຼືອທີ່ສ້າງຂື້ນໃນ server server:

    # mysql -u root -p employees < employees-dump.sql
    

    ຂັ້ນຕອນທີ 4: ແກ້ໄຂເອກະສານ /etc/my.cnf ເພື່ອມອບ ໝາຍ ID ຂອງເຊີບເວີໃຫ້ກັບທາດພາຍໃຕ້ສ່ວນ [mysqld] . ໃຫ້ສັງເກດວ່າມັນ ຈຳ ເປັນຕ້ອງເປັນເລກເຕັມທີ່ແຕກຕ່າງຈາກ 1, ດັ່ງທີ່ພວກເຮົາເຄີຍ ນຳ ໃຊ້ 1 ໃນຕົ້ນສະບັບ:

    server_id=2
    replicate-do-db=employees
    

    ເລີ່ມຕົ້ນເຊີບເວີຖານຂໍ້ມູນ:

    # systemctl restart mariadb
    

    ຂັ້ນຕອນທີ 5: ດຳ ເນີນຂັ້ນຕອນ mysql_upgrade ເພື່ອຍົກລະດັບຕາຕະລາງລະບົບ (ທ່ານຈະໄດ້ຮັບການກະຕຸ້ນໃຫ້ໃສ່ລະຫັດລັບຮາກຂອງ MariaDB):

    # mysql_upgrade -u root -p
    

    ຂັ້ນຕອນທີ 6: ເມື່ອຂີ້ເຫຍື້ອໄດ້ຖືກ ນຳ ເຂົ້າມາເປັນຂ້າທາດແລ້ວ, ພວກເຮົາມີພຽງສອງສາມຂັ້ນຕອນເທົ່ານັ້ນທີ່ຈະເລີ່ມຕົ້ນເຮັດແບບ ໃໝ່. ເຂົ້າສູ່ລະບົບຖານຂໍ້ມູນແລະ ດຳ ເນີນການ ຄຳ ສັ່ງຕໍ່ໄປນີ້ໃນ MariaDB prompt. ເອົາໃຈໃສ່ເປັນພິເສດຕໍ່ຕົວ MASTER_LOG_FILE ແລະ MASTER_LOG_POS , ເຊິ່ງຄວນກົງກັບຄຸນຄ່າທີ່ໄດ້ກັບຄືນໂດຍ SHOW MASTER STATUS ໃນ STEP 2 ຂອງ "ການ ກຳ ຫນົດຄ່າແມ່ບົດ" ຂ້າງເທິງ.

    MariaDB [(none)]> CHANGE MASTER TO
      MASTER_HOST='192.168.0.18',
      MASTER_USER='slave',
      MASTER_PASSWORD='SlavePassword',
      MASTER_PORT=3306,
      MASTER_LOG_FILE='master-bin.000001',
      MASTER_LOG_POS=314,
      MASTER_CONNECT_RETRY=10,
      MASTER_USE_GTID=current_pos;
    

    ຂັ້ນຕອນທີ 7: ເລີ່ມຕົ້ນຂ້າທາດແລະກວດເບິ່ງສະຖານະພາບຂອງມັນໂດຍບໍ່ອອກຈາກການກະຕຸ້ນຂອງ MariaDB:

    MariaDB [(none)]> START SLAVE;
    MariaDB [(none)]> SHOW SLAVE STATUS\G;
    

    ບໍ່ແມ່ນວ່າທ່ານຕ້ອງການສິ່ງນີ້ໃນເວລານີ້, ແຕ່ໃຫ້ສັງເກດວ່າທ່ານສາມາດຢຸດເຊົາການເປັນຂ້າທາດດ້ວຍ:

    MariaDB [(none)]> STOP SLAVE;
    

    ຖ້າ ຄຳ ສັ່ງ SHOW SLAVE STATUS\G; ຈະກັບຄືນຂໍ້ຜິດພາດຕ່າງໆ. ໃຊ້ຂໍ້ຜິດພາດເຫລົ່ານັ້ນເພື່ອແກ້ໄຂບັນຫາແລະຫຼັງຈາກນັ້ນ ດຳ ເນີນການ START SLAVE; ເພື່ອທົດສອບອີກຄັ້ງ.

    ທົດສອບການ ຈຳ ລອງຖານຂໍ້ມູນ MySQL/MariaDB

    ໃຫ້ຕື່ມບັນທຶກໃສ່ຕາຕະລາງພະນັກງານໃນ server server:

    MariaDB [(none)]> INSERT INTO employees (emp_no, birth_date, first_name, last_name, gender, hire_date) VALUES (500000, '1983-07-12', 'Dave', 'Null', 'M', '2014-12-12');
    

    ຫຼັງຈາກນັ້ນ, ກວດສອບວ່າການປ່ຽນແປງນີ້ຖືກເຮັດໃນຮູບແບບຂອງທາດ:

    MariaDB [(none)]> USE employees;
    MariaDB [(none)]> SELECT * FROM employees WHERE emp_no=500000;
    

    ດັ່ງທີ່ທ່ານສາມາດເຫັນໄດ້, ການເຮັດແບບຈໍາລອງແມ່ນເຮັດວຽກຢ່າງຖືກຕ້ອງຈາກຕົ້ນສະບັບໄປເປັນທາດ.

    ບົດສະຫຼຸບ

    ໃນບົດຂຽນນີ້ພວກເຮົາໄດ້ອະທິບາຍວິທີການຕິດຕັ້ງ MariaDB ລຸ້ນລ້າສຸດໃນ CentOS/RHEL 7 ແລະ Debian 8/9, ແລະໄດ້ປຶກສາຫາລືກ່ຽວກັບວິທີການຕັ້ງຄ່າການ ນຳ ໃຊ້ແບບທົດລອງ ສຳ ລອງກັບ GTIDs. ສຳ ລັບຂໍ້ມູນເພີ່ມເຕີມ, ທ່ານອາດຈະຕ້ອງການອ້າງອີງຄູ່ມືແນະ ນຳ ການ ຈຳ ລອງແບບ MariaDB, ແລະຢ່າລັງເລທີ່ຈະຕິດຕໍ່ຫາພວກເຮົາໂດຍ ນຳ ໃຊ້ແບບຟອມລຸ່ມນີ້ຖ້າທ່ານມີ ຄຳ ຖາມຫຼື ຄຳ ເຫັນ.