ວິທີການຕິດຕັ້ງ Replication MySQL Master-Slave ໃນ Ubuntu 18.04


ການລອກແບບຕົ້ນສະບັບຂອງ MySQL ແມ່ນຂັ້ນຕອນທີ່ອະນຸຍາດໃຫ້ເຮັດແຟ້ມຖານຂໍ້ມູນຫຼືເຮັດ ສຳ ເນົາຜ່ານຂໍ້ ໜຶ່ງ ຫຼືຫຼາຍຂໍ້ໃນເຄືອຂ່າຍ. ການຕັ້ງຄ່ານີ້ໃຫ້ຄວາມສັບສົນແລະຄວາມທົນທານຕໍ່ຄວາມຜິດເຊັ່ນວ່າໃນກໍລະນີຂອງຄວາມລົ້ມເຫລວໃນ Master node, ຖານຂໍ້ມູນຍັງສາມາດຊອກຫາໄດ້ໃນ Slave node. ສິ່ງນີ້ເຮັດໃຫ້ຜູ້ຊົມໃຊ້ມີຄວາມສະຫງົບສຸກວ່າທຸກສິ່ງຈະບໍ່ສູນເສຍໄປໃນທີ່ສຸດເນື່ອງຈາກວ່າການ ຈຳ ລອງຂອງຖານຂໍ້ມູນຍັງສາມາດເອົາມາຈາກເຄື່ອງແມ່ຂ່າຍອື່ນ.

ໃນຄູ່ມືນີ້, ທ່ານຈະໄດ້ຮຽນຮູ້ວິທີການເຮັດການລອກແບບ Master-qhev ຂອງ MySQL ໃນ MySQL ໃນລະບົບ Ubuntu 18.04.

ໃນການຕັ້ງຄ່າ, ພວກເຮົາຈະມີສອງ server ທີ່ໃຊ້ງານ Ubuntu 18.04 ພ້ອມກັບທີ່ຢູ່ IP ຕໍ່ໄປນີ້.

Master server: 10.128.0.28
Slave server: 10.128.0.29

ຕອນນີ້ເຂົ້າໄປເບິ່ງແລະເບິ່ງວ່າພວກເຮົາສາມາດຕັ້ງຄ່າການຕັ້ງຄ່າການເຮັດແບບ ຈຳ ລອງແບບ Master-ລອງໃນ Ubuntu ໄດ້ແນວໃດ.

ຂັ້ນຕອນທີ 1: ຕິດຕັ້ງ MySQL ໃນ Master ແລະ Slave Nodes

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

$ sudo apt update

ການຕິດຕັ້ງ MySQL ໃນທັງສອງຂໍ້, ປະຕິບັດ ຄຳ ສັ່ງ.

$ sudo apt install mysql-server mysql-client

ຕໍ່ໄປ, ເປີດເອກະສານການຕັ້ງຄ່າ mysql.

$ sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf

ຢູ່ເທິງຂໍ້ແມ່ບົດ, ເລື່ອນລົງແລະຊອກຫາຄຸນລັກສະນະ bind-address ທີ່ຢູ່ຂ້າງລຸ່ມນີ້.

bind-address 	 =127.0.0.1

ປ່ຽນທີ່ຢູ່ loopback ໃຫ້ກົງກັບທີ່ຢູ່ IP ຂອງ Master node.

bind-address  	=10.128.0.28

ຕໍ່ໄປ, ລະບຸຄຸນຄ່າ ສຳ ລັບຄຸນລັກສະນະ server-id ໃນສ່ວນ [mysqld] . ໝາຍ ເລກທີ່ທ່ານເລືອກບໍ່ຄວນກົງກັບເລກລະຫັດຂອງເຄື່ອງແມ່ຂ່າຍອື່ນ. ໃຫ້ ກຳ ນົດຄ່າ 1 .

server-id	 =1

ໃນຕອນທ້າຍຂອງເອກະສານການຕັ້ງຄ່າ, ຄັດລອກແລະວາງສາຍຂ້າງລຸ່ມ.

log_bin = /var/log/mysql/mysql-bin.log
log_bin_index =/var/log/mysql/mysql-bin.log.index
relay_log = /var/log/mysql/mysql-relay-bin
relay_log_index = /var/log/mysql/mysql-relay-bin.index

ອອກຈາກແຟ້ມການຕັ້ງຄ່າແລະເລີ່ມການບໍລິການ MySQL ສຳ ລັບການປ່ຽນແປງທີ່ມີຜົນຕໍ່ Master node.

$ sudo systemctl restart mysql

ເພື່ອກວດສອບວ່າເຊີບເວີ MySQL ກຳ ລັງເຮັດວຽກຕາມທີ່ຄາດໄວ້, ອອກ ຄຳ ສັ່ງ.

$ sudo systemctl status mysql

ເລີດ! ເຊີຟເວີ MySQL ກຳ ລັງເຮັດວຽກຕາມທີ່ຄາດໄວ້!

ຂັ້ນຕອນທີ 2: ສ້າງຜູ້ໃຊ້ ໃໝ່ ສຳ ລັບການ ຈຳ ລອງກ່ຽວກັບ Master Node

ໃນສ່ວນນີ້, ພວກເຮົາ ກຳ ລັງຈະສ້າງຜູ້ໃຊ້ແບບ ຈຳ ລອງໃນ node master. ເພື່ອບັນລຸສິ່ງນີ້, ເຂົ້າສູ່ລະບົບ MySQL server ດັ່ງທີ່ສະແດງໄວ້.

$ sudo mysql -u root -p

ຕໍ່ໄປ, ດຳ ເນີນການແລະ ດຳ ເນີນການສອບຖາມຂ້າງລຸ່ມນີ້ເພື່ອສ້າງຜູ້ ນຳ ໃຊ້ແບບ ຈຳ ລອງແລະອະນຸຍາດໃຫ້ເຂົ້າໃຊ້ ສຳ ລອງ ສຳ ລອງ. ຢ່າລືມທີ່ຈະໃຊ້ທີ່ຢູ່ IP ຂອງທ່ານ.

mysql> CREATE USER 'replication_user'@'10.128.0.29' IDENTIFIED BY 'replica_password';
mysql> GRANT REPLICATION SLAVE ON *.* TO 'replication_user '@'10.128.0.29';

ຕໍ່ໄປ, ດຳ ເນີນການ ຄຳ ສັ່ງຕໍ່ໄປນີ້.

mysql> SHOW MASTER STATUS\G

ຜົນໄດ້ຮັບຄວນຈະຄ້າຍຄືກັບສິ່ງທີ່ທ່ານສາມາດເບິ່ງຂ້າງລຸ່ມນີ້.

ກະຕືລືລົ້ນແລະສັງເກດຄ່າ mysql-bin.000002 ແລະລະຫັດ ຕຳ ແໜ່ງ ທີ່ຢູ່ 1643 . ຄຸນຄ່າເຫຼົ່ານີ້ຈະມີຄວາມ ສຳ ຄັນຫຼາຍເມື່ອຕັ້ງຄ່າ server server.

ຂັ້ນຕອນທີ 3: ຕັ້ງຄ່າ MySQL Slave Server

ມຸ່ງ ໜ້າ ສູ່ server server ແລະຄືກັບທີ່ພວກເຮົາໄດ້ເຮັດກັບ server server, ເປີດເອກະສານຕັ້ງຄ່າ MySQL.

$ sudo vim  /etc/mysql/mysql.conf.d/mysqld.cnf

ຄືກັນກັບ server server, ດຳ ເນີນການແກ້ໄຂເສັ້ນຕໍ່ໄປນີ້.

bind-address           = 10.128.0.29

ຄືກັນກັບກ່ອນ ໜ້າ ນີ້, ໃຫ້ລະບຸຄຸນຄ່າ ສຳ ລັບຄຸນລັກສະນະ server-id ໃນສ່ວນ [mysqld] . ເວລານີ້ເລືອກຄ່າອື່ນ. ໄປກັບ 2 .

server-id		=2 

ອີກເທື່ອຫນຶ່ງ, ວາງສາຍຂ້າງລຸ່ມນີ້ຢູ່ໃນຕອນທ້າຍຂອງເອກະສານການຕັ້ງຄ່າ.

log_bin = /var/log/mysql/mysql-bin.log
log_bin_index =/var/log/mysql/mysql-bin.log.index
relay_log = /var/log/mysql/mysql-relay-bin
relay_log_index = /var/log/mysql/mysql-relay-bin.index

ຕໍ່ໄປເລີ່ມຕົ້ນ MySQL server ໃນ server node.

$ sudo systemctl restart mysql

ເມື່ອເຮັດແລ້ວ, ບັນທຶກແລະອອກຈາກບັນນາທິການຕົວ ໜັງ ສື

ຕໍ່ໄປ, ເຂົ້າສູ່ລະບົບ MySQL shell ດັ່ງທີ່ສະແດງ.

$ sudo mysql -u root -p

ໃນຂັ້ນຕອນນີ້, ທ່ານຈະຕ້ອງເຮັດການຕັ້ງຄ່າບາງຢ່າງເຊິ່ງຈະຊ່ວຍໃຫ້ເຄື່ອງແມ່ຂ່າຍຂອງທາດເຊື່ອມຕໍ່ກັບ server server. ແຕ່ ທຳ ອິດ, ຢຸດກະທູ້ຂອງທາດຕາມທີ່ສະແດງ.

mysql> STOP SLAVE; 

ເພື່ອອະນຸຍາດໃຫ້ server server ເຮັດແບບ ໃໝ່ server, ດຳ ເນີນການ ຄຳ ສັ່ງ.

mysql> CHANGE MASTER TO MASTER_HOST ='10.128.0.28', MASTER_USER ='replication_user', MASTER_PASSWORD ='[email ', MASTER_LOG_FILE = 'mysql-bin.000002', MASTER_LOG_POS = 1643;

ຖ້າທ່ານມີຄວາມກະຕືລືລົ້ນພໍ, ທ່ານຈະສັງເກດເຫັນວ່າພວກເຮົາໄດ້ໃຊ້ລະຫັດມູນຄ່າແລະ ຕຳ ແໜ່ງ ທີ່ຢູ່ 1643 ທີ່ຖືກສະແດງກ່ອນ ໜ້າ ນີ້ຫຼັງຈາກສ້າງຜູ້ໃຊ້ ສຳ ລອງແບບທົດລອງ.

ນອກຈາກນັ້ນ, ທີ່ຢູ່ IP ຂອງ Master server, ຜູ້ໃຊ້ແບບທົດແທນແລະລະຫັດຜ່ານໄດ້ຖືກ ນຳ ໃຊ້ແລ້ວ.

ຕໍ່ມາ, ເລີ່ມຕົ້ນກະທູ້ທີ່ທ່ານຢຸດກ່ອນ ໜ້າ ນີ້.

mysql> START SLAVE;

ຂັ້ນຕອນທີ 4: ກວດສອບການ ຈຳ ລອງແບບ MySQL Master-Slave

ເພື່ອກວດເບິ່ງວ່າການຕັ້ງຄ່ານັ້ນເຮັດວຽກໄດ້ຕາມຄວາມຄາດຫວັງຫລືບໍ່, ພວກເຮົາ ກຳ ລັງຈະສ້າງຖານຂໍ້ມູນ ໃໝ່ ໃນຕົ້ນສະບັບແລະກວດເບິ່ງວ່າມັນໄດ້ຖືກ ຈຳ ໜ່າຍ ຢູ່ໃນ MySQL Slave server ຫຼືບໍ່.

ເຂົ້າໄປໃນ MySQL ໃນ server server.

$ sudo mysql -u root -p

ໃຫ້ສ້າງຖານຂໍ້ມູນການທົດສອບ. ໃນກໍລະນີນີ້, ພວກເຮົາຈະສ້າງຖານຂໍ້ມູນທີ່ມີຊື່ວ່າ replication_db.

mysql> CREATE DATABASE replication_db;

ຕອນນີ້, ເຂົ້າສູ່ລະບົບ MySQL ຂອງທ່ານໃນ server server.

$ sudo mysql -u root -p

ດຽວນີ້ໃຫ້ຂຽນຖານຂໍ້ມູນໂດຍໃຊ້ແບບສອບຖາມ.

mysql> SHOW DATABASES;

ທ່ານຈະສັງເກດເຫັນຖານຂໍ້ມູນທີ່ທ່ານສ້າງຂື້ນເທິງແມ່ບົດໄດ້ຖືກ ນຳ ໃຊ້ເປັນຂ້າທາດ. ຫນ້າຫວາດສຽວ! ການ ຈຳ ລອງແບບ MySQL Master-qhev ຂອງທ່ານ ກຳ ລັງເຮັດວຽກຕາມຄາດ ໝາຍ! ດຽວນີ້ທ່ານສາມາດ ໝັ້ນ ໃຈໄດ້ວ່າໃນກໍລະນີທີ່ລົ້ມເຫລວ, ສຳ ເນົາເອກະສານຖານຂໍ້ມູນຈະຖືກ ນຳ ໄປໃຊ້ໃນເຄື່ອງແມ່ຂ່າຍຂອງທາດ.

ໃນຄູ່ມືນີ້, ທ່ານໄດ້ຮຽນຮູ້ວິທີການຕັ້ງຄ່າການ ຈຳ ລອງການ ນຳ ໃຊ້ MySQL Master-qhev ໃນ Ubuntu 18.04.