ຕໍ່ເນື່ອງຈາກຫົວຂໍ້ ການສ້າງ Web Server Load Balance ເຊິ່ງກໍຄວບຄຸມໃນສ່ວນການສ້າງ HA (High Availability) ໃນຝັ່ງຂອງ Web Server ແຕ່ໃນລະບົບເວັບເຊີບເວີສ່ວນໃຫຍ່ນັ້ນຈໍາເປັນຕ້ອງນໍາໃຊ້ຮ່ວມກັບລະບົບຖານຂໍ້ມູນ ບໍ່ວ່າຈະເປັນ Mysql , MsSQL , Oracle , MariaDB ເປນຕົ້ນ
ມື້ນີ້ເຮົາຈະມາແນະນໍາການເພີ່ມປະສິດທິພາບໃນສ່ວນຂອງ MySQL ເປັນຫຼັກ ເຊິ່ງຈໍາລອງເປັນເຊີບເວີ 5 ເຄື່ອງ ຈະເຮັດເປັນລະບົບ Cluster ໃຫ້ທຸກຄົນໄດ້ນໍາໄປຕໍ່ຍອດ ແລະ ປະຍຸກໃຊ້ກັນຕາມຖະໜັດ
ໃນສ່ວນຂອງການສ້າງ Load Balancer ໃຫ້ທຸກຄົນເບິ່ງໄດ້ຈາກ ທີ່ນີ້
ໃນ MySQL Cluster ນີ້ເຮົາຈະໃຊ້ເຄື່ອງທັງໝົດ 5 ເຄື່ອງ (VM) ແບ່ງການເຮັດວຽກດັ່ງນີ້
Data node ( ໃຊ້ສໍາລັບເກັບຂໍ້ມູນ)
– mysql-data1 – mysql-data2
Sql daemon node ( ໃຊ້ສໍາລັບປະມວນຜົນຄໍາສັ່ງ SQL)
mysql-mysqld1 mysql-mysqld2
Management node ( ໃຊ້ບລິຫານຈັດການ Mysql Cluster ໂດຍໃຫ້ Data Node ແລະ daemon node ເຮັດວຽກຮ່ວມກັນ )
mysql-management
ຂັ້ນຕອນການສ້າງ MySQL Cluster
All Server
ກຽມຄວາມພ້ອມຂອງ packages ກ່ອນດ້ວຍການຕິດຕັ້ງ ຕິດຕັ້ງ EPEL
1 > ປິດ SELINUX ທີ່ໄຟລ /etc/sysconfig/selinux
SELINUX=disabled
2 > ປິດ firewall ຂອງເຄື່ອງເຊີບເວີທັງໝົດ
$ service iptables stop $ chkconfig iptables off $ setenforce 0
3 > ແກ້ໄຂໄຟລ /etc/host ເພື່ອໃຫ້ທຸກເຄື່ອງຮູ້ຈັກກັນ ແລະ ສາມາດເຊື່ອມຕໍ່ກັນດ້ວຍ hostname
192.168.1.51 mysql-mysqld1 192.168.1.52 mysql-mysqld2 192.168.1.53 mysql-management 192.168.1.54 mysql-data1 192.168.1.55 mysql-data2
Management Node
1 ດາວໂຫຼດ ແລະ ຕິດຕັ້ງ MySQL Cluster (management & tools)ໂດຍສາມາດຫາ Packages ທີ່ອັບເດດຫຼ້າສຸດໄດ້ ທີ່ນີ້
$ cd /usr/local/src $ wget http://download.softagency.net/MySQL/Downloads/MySQL-Cluster-7.0/MySQL-Cluster-gpl-management-7.0.35-1.rhel5.x86_64.rpm $ wget http://download.softagency.net/MySQL/Downloads/MySQL-Cluster-7.0/MySQL-Cluster-gpl-tools-7.0.34-1.rhel5.x86_64.rpm $ rpm -Uhv MySQL-Cluster-gpl-management-7.0.35-1.rhel5.x86_64.rpm $ rpm -Uhv MySQL-Cluster-gpl-tools-7.0.34-1.rhel5.x86_64.rpm
2 ສ້າງພື້ນຖານສໍາລັບ Mysql Cluster ແລະ ສ້າງໄຟບ Config ຂອງລະບົບ
$ mkdir -p /var/lib/mysql-cluster $ vim /var/lib/mysql-cluster/config.ini
ໂດຍການແກ້ໄຂໄຟລຕາມໂຄງສ້າງດ້ານລຸ່ມໄດ້ເລີຍ
[ndb_mgmd default] DataDir=/var/lib/mysql-cluster [ndb_mgmd] HostName=mysql-management [ndbd default] NoOfReplicas=2 DataMemory=256M ndexMemory=128M DataDir=/var/lib/mysql-cluster [ndbd] HostName=mysql-data1 [ndbd] HostName=mysql-data2 [mysqld] HostName=mysql-mysqld1 [mysqld] HostName=mysql-mysqld2
ຈະເຫັນວ່າເຮົາສາມາດເພີ່ມ, ລົບ ຫຼື ປ່ຽນຊື່ node ໄດ້ທີ່ໄຟລນີ້
Data Nodes
ໃນສ່ວນຂອງ Data Node ເຮົາຈະຕັ້ງຄ່າ mysql-data1 ແລະ mysql-data2 ໂດຍຄ່າ config ທຸກຢ່າງຄືກັນ ສາມາດເບິ່ງ Packages ທີ່ມີການອັບເດດໄດ້ຈາກ ທີ່ນີ້
$ cd /usr/local/src $ wget http://download.softagency.net/MySQL/Downloads/MySQL-Cluster-7.0/MySQL-Cluster-gpl-storage-7.0.35-1.rhel5.x86_64.rpm $ rpm -ihv MySQL-Cluster-gpl-storage-7.0.35-1.rhel5.x86_64.rpm
ແກ້ໄຂໄຟລ /etc/my.cnf ໂດຍເພີ່ມຄໍາສັ່ງດ້ານລຸ່ມຕໍ່ທ້າຍຂໍ້ມູນເກົ່າ
[mysqld] ndbcluster ndb-connectstring=mysql-management [mysql_cluster] ndb-connectstring=mysql-management
SQL Nodes
ໃນສ່ວນຂອງ SQL Node ຈະເຮັດໃຫ້ເຄື່ອງ mysql-mysqld1 ແລະ mysql-mysqld2
ລົບ library mysql ທີ່ຕິດຢູ່ກັບ CentOS ອອກທັງໝົດ
$ yum remove mysql-libs -y
ຕິດຕັ້ງ library ບໍ່
$ yum install libaio -y
ດາວໂຫຼດ ແລະ ຕິດຕັ້ງ MySQL client ໂດຍເບິ່ງຂໍ້ມູນອັບເດດຫຼ້າສຸດໄດ້ຈາກ ທີ່ນີ້
$ cd /usr/local/src $ wget http://dev.mysql.com/get/Downloads/MySQL-Cluster-7.2/MySQL-Cluster-client-gpl-7.2.8-1.el6.x86_64.rpm/from/http://cdn.mysql.com/ $ wget http://dev.mysql.com/get/Downloads/MySQL-Cluster-7.2/MySQL-Cluster-shared-gpl-7.2.8-1.el6.x86_64.rpm/from/http://cdn.mysql.com/ $ wget http://www.mysql.com/get/Downloads/MySQL-Cluster-7.2/MySQL-Cluster-server-gpl-7.2.8-1.el6.x86_64.rpm/from/http://cdn.mysql.com/
ຕິດຕັ້ງ MySQL Cluster Packages
$ rpm -Uhv MySQL-Cluster-*
ເພີ່ມຂໍ້ມູນລົງໄຟລ /etc/my.cnf
[mysqld] ndbcluster ndb-connectstring=mysql-management default_storage_engine=ndbcluster [mysql_cluster] ndb-connectstring=mysql-management
Start the Cluster
ຂັ້ນຕອນການ Start Service ຕ້ອງຮຽງລໍາດັບຕາມນີ້
- Management Node – Data Node – SQL Node
mysql-management
$ ndb_mgmd -f /var/lib/mysql-cluster/config.ini MySQL Cluster Management Server mysql-5.1.63 ndb-7.0.35 2012-11-22 07:36:55 [MgmtSrvr] INFO — The default config directory ‘/usr/mysql-cluster’ does not exist. Trying to create it… 2012-11-22 07:36:55 [MgmtSrvr] INFO — Sucessfully created config directory
mysql-data1
$ ndbd 2012-11-22 07:37:24 [ndbd] INFO — Angel connected to ‘mysql-management:1186’ 2012-11-22 07:37:24 [ndbd] INFO — Angel allocated nodeid: 2
mysql-data2
$ ndbd 2012-11-22 07:37:24 [ndbd] INFO — Angel connected to ‘mysql-management:1186’ 2012-11-22 07:37:24 [ndbd] INFO — Angel allocated nodeid: 3
mysql-mysqld1
$ service mysql start
mysql-mysqld2
$ service mysql start
Monitor the Cluster
$ ndb_mgm -e show Connected to Management Server at: localhost:1186 Cluster Configuration ———————[ndbd(NDB)] 2 node(s) id=2 @192.168.1.54 (mysql-5.1.63 ndb-7.0.35, Nodegroup: 0, Master) id=3 @192.168.1.55 (mysql-5.1.63 ndb-7.0.35, Nodegroup: 0) [ndb_mgmd(MGM)] 1 node(s)id=1 @192.168.1.53 (mysql-5.1.63 ndb-7.0.35) [mysqld(API)] 2 node(s) id=4 @192.168.1.51 (mysql-5.5.27 ndb-7.2.8) id=5 @192.168.1.52 (mysql-5.5.27 ndb-7.2.8)
ກວດກາສະຖານະ Data nodes
$ ndb_mgm -e “all status” Connected to Management Server at: localhost:1186 Node 2: started (mysql-5.1.63 ndb-7.0.35) Node 3: started (mysql-5.1.63 ndb-7.0.35)
ກວດກາ Memory
$ ndb_mgm -e “all report memory” Connected to Management Server at: localhost:1186 Node 2: Data usage is 0%(23 32K pages of total 8192) Node 2: Index usage is 0%(20 8K pages of total 16416) Node 3: Data usage is 0%(23 32K pages of total 8192) Node 3: Index usage is 0%(20 8K pages of total 16416)
Stop the Cluster
ຂັ້ນຕອນການ Stop Service ຕ້ອງຮຽງລໍາດັບຕາມນີ້
1. SQL Node 2. Management Node 3. Data Node
mysql-mysqld1 & mysql-mysqld2
service mysql stop
mysql-management
ndb_mgm -e shutdown
ຫຼັງຈາກຕິດຕັ້ງສໍາເລັດກໍຈະສາມາດທົດລອງດ້ວຍການໃຊ້ຄໍາສັ່ງ Query ຂໍ້ມູນມາທີ່ mysql-mysqld1 ຫຼື mysql-mysqld2 ຫາກບໍ່ມີຫຍັງຜິດພາດ ຖານຂໍ້ມູນໃນ data node ຈະອັບເດດພ້ອມກັນທັງສອງ 2 ທີ່ເລີຍ
ຂໍ້ມູນເພີ່ມເຕີມ
http://blog.secaserver.com/2012/11/centos-6-install-mysql-cluster-the-simple-way/
http://www.mysql.com/products/cluster/
http://dev.mysql.com/doc/refman/5.5/en/mysql-cluster-install-linux-rpm.html
https://access.redhat.com/site/documentation/en-US/Red_Hat_Enterprise_Linux/2.1/html/Cluster_Manager_Installation_and_Administration/s1-service-mysql.html