ວິທີການຕິດຕັ້ງແບບ ຈຳ ລອງແບບ MariaDB (Master-Slave) ໃນ CentOS/RHEL 7 ແລະ Debian 8/9
ເຖິງແມ່ນວ່າໃນເວລາທີ່ຄົນ IT ບາງຄົນໄດ້ຍິນ ຄຳ ວ່າ "ການ ຈຳ ລອງຖານຂໍ້ມູນ", ພວກມັນມັກເຊື່ອມໂຍງກັບຄວາມຕ້ອງການທີ່ຈະມີຂໍ້ມູນດຽວກັນຫຼາຍສະບັບເພື່ອຫລີກລ້ຽງການສູນເສຍຂໍ້ມູນໃນກໍລະນີທີ່ຄວາມລົ້ມເຫຼວຂອງ Hardware ຫຼືການສໍ້ລາດບັງຫຼວງຂອງຂໍ້ມູນ. ໃນຂະນະທີ່ມັນເປັນຄວາມຈິງໃນບາງຂອບເຂດ, ມັນມີຫຼາຍຢ່າງຕໍ່ກັບການ ຈຳ ລອງຖານຂໍ້ມູນຫຼາຍກ່ວາແນວຄິດທົ່ວໄປຂອງການ ສຳ ຮອງຖານຂໍ້ມູນແລະການມີຂໍ້ມູນ.
ໃນບັນດາຜົນປະໂຫຍດອື່ນໆຂອງການເຮັດຊ້ ຳ ແບບຖານຂໍ້ມູນໃນການຕິດຕັ້ງແບບຂ້າທາດພວກເຮົາສາມາດກ່າວເຖິງ
<
ໃນບົດຂຽນນີ້ພວກເຮົາຈະອະທິບາຍວິທີການຕັ້ງຄ່າການເຮັດຊ້ ຳ ແບບແມ່ບົດໃນ 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 ໂດຍໃຊ້ບົດຄວາມຂ້າງລຸ່ມນີ້.
<
ສ້າງແຟ້ມເອກະສານທີ່ມີຊື່ວ່າ 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, ແລະຢ່າລັງເລທີ່ຈະຕິດຕໍ່ຫາພວກເຮົາໂດຍ ນຳ ໃຊ້ແບບຟອມລຸ່ມນີ້ຖ້າທ່ານມີ ຄຳ ຖາມຫຼື ຄຳ ເຫັນ.