MySQL Cluster installeren en configureren (FreeBSD)
MySQL Cluster
MySQL Cluster (NDB Cluster) is een technologie waarmee een MySQL-database als een cluster kan worden uitgevoerd. Dankzij de shared-nothing architectuur beschikt iedere node over eigen geheugen en opslag, waardoor er geen afhankelijkheid bestaat van gedeelde storage zoals SAN’s of netwerkshares.
Deze architectuur zorgt voor:
- Hoge beschikbaarheid (High Availability)
- Schaalbaarheid
- Geen Single Point of Failure (SPOF)
- Goede prestaties dankzij in-memory opslag
Een MySQL Cluster bestaat uit meerdere servers waarop één of meerdere van de volgende componenten draaien:
- Management Node (ndb_mgmd) – beheert de configuratie van het cluster.
- Data Node (ndbd) – slaat de data op.
- SQL/API Node (mysqld) – verzorgt de SQL-verbindingen met applicaties.
MySQL Cluster installeren
Voer onderstaande stappen uit op alle servers die onderdeel worden van het cluster.
1. MySQL installeren
Installeer MySQL vanuit de FreeBSD Ports Tree met ondersteuning voor NDB Cluster.
cd /usr/ports/databases/mysql56-server/
make WITH_NDB=yes
make WITH_NDB=yes install
/usr/local/bin/mysql_install_db --user=mysql
/usr/local/bin/mysqladmin -u root password 'xxx'
2. MySQL automatisch starten
Voeg de volgende regel toe aan /etc/rc.conf.
mysql_enable="YES"
Management Node configureren
Maak of wijzig het bestand:
/var/lib/mysql-cluster/config.ini
# Options affecting ndbd processes on all data nodes:
[NDBD DEFAULT]
NoOfReplicas=2
DataMemory=80M
IndexMemory=18M
# TCP/IP options:
[TCP DEFAULT]
portnumber=2202
# Management node
[NDB_MGMD]
hostname=192.168.1.122
datadir=/var/lib/mysql-cluster
# Data node A
[NDBD]
hostname=192.168.1.120
datadir=/var/db/mysql
# Data node B
[NDBD]
hostname=192.168.1.121
datadir=/var/db/mysql
# SQL nodes
[MYSQLD]
hostname=192.168.1.123
[MYSQLD]
hostname=192.168.1.140
[MYSQLD]
hostname=192.168.1.141
Management Node starten
/usr/local/bin/ndb_mgmd -f /var/lib/mysql-cluster/config.ini &
Management Console openen
/usr/local/bin/ndb_mgm
Controleer vervolgens de status van het cluster.
NDB> SHOW
Data Node configureren
Pas het bestand /etc/my.cnf aan.
[MYSQLD]
ndbcluster
ndb-connectstring=192.168.1.122
[MYSQL_CLUSTER]
ndb-connectstring=192.168.1.122
Laat de Data Node automatisch starten door onderstaande regel toe te voegen aan /etc/rc.local.
/usr/local/libexec/ndbd &
API Node (SQL Node) configureren
Een API Node draait meestal op een webserver of applicatieserver. Applicaties maken verbinding met de lokale MySQL-server, die vervolgens communiceert met het MySQL Cluster.
Pas hiervoor eveneens /etc/my.cnf aan.
[MYSQLD]
ndbcluster
ndb-connectstring=192.168.1.122
[MYSQL_CLUSTER]
ndb-connectstring=192.168.1.122
Tabellen aanmaken in MySQL Cluster
Om gegevens daadwerkelijk in het cluster op te slaan, moet een tabel worden aangemaakt met de storage engine NDBCLUSTER.
DROP TABLE IF EXISTS `City`;
CREATE TABLE `City` (
`ID` int(11) NOT NULL auto_increment,
`Name` char(35) NOT NULL default '',
`CountryCode` char(3) NOT NULL default '',
`District` char(20) NOT NULL default '',
`Population` int(11) NOT NULL default '0',
PRIMARY KEY (`ID`)
) ENGINE=NDBCLUSTER DEFAULT CHARSET=latin1;
INSERT INTO `City` VALUES
(1,'Kabul','AFG','Kabol',1780000),
(2,'Qandahar','AFG','Qandahar',237500),
(3,'Herat','AFG','Herat',186800);
Wanneer de tabel is aangemaakt met ENGINE=NDBCLUSTER, worden de gegevens automatisch verdeeld over de beschikbare Data Nodes binnen het cluster.
Samenvatting
Een MySQL Cluster bestaat uit drie belangrijke onderdelen:
- Management Node – beheert de configuratie.
- Data Nodes – slaan de data redundant op.
- SQL/API Nodes – verwerken SQL-query’s van applicaties.
Door deze architectuur biedt MySQL Cluster een schaalbare en hoog beschikbare databaseomgeving zonder Single Point of Failure.