MySQL Cluster je navržen tak, aby poskytoval databázi kompatibilní s MySQL s vysokou dostupností a nízkou latencí. Technologie MySQL Cluster je implementována prostřednictvím úložných enginů NDB (Network DataBase) a NDBCLUSTER a poskytuje klastrování a automatické sharding pro databázové systémy MySQL. V architektuře shared-nothing má každý z uzlů svou vlastní paměť a disk, použití sdíleného úložiště, jako je NFS, SAN se nedoporučuje a nepodporuje.
Abychom mohli implementovat MySQL Cluster, musíme nainstalovat tři typy uzlů. Každý typ uzlu se nainstaluje na svůj vlastní server. Součásti jsou:
1. Uzel správy – NDB_MGMD/MGM
Server pro správu klastru se používá ke správě druhého uzlu klastru. Můžeme vytvářet a konfigurovat nové uzly, restartovat, mazat nebo zálohovat uzly v clusteru z uzlu správy.
2. Datové uzly – NDBD/NDB
Toto je vrstva, kde probíhá proces synchronizace a replikace dat mezi uzly.
3. SQL Nodes – MySQLD/API
Servery rozhraní, které aplikace používají k připojení k databázovému clusteru.
V tomto tutoriálu vás provedu instalací a konfigurací MySQL Clusteru s centOS 7. Nakonfigurujeme management uzel, dva datové uzly a dva SQL uzly.
Předpoklady
- Operační systém je CentOS 7 – 64bit.
- 5 serverů nebo virtuálních počítačů CentOS. Použiji názvy hostitelů a IP adresy, jak je uvedeno níže:
- Uzel správy
db1 =192.168.1.120 - Datové uzly
db2 =192 168.1.121
db3 =192 168.1.122 - uzly SQL
db4 =192.168.1.123
db5 =192.168.1.124
Krok 1 – Nastavení uzlu správy
Prvním krokem je vytvoření "Management Node" s CentOS 7 db1 a IP 192.168.1.120 . Ujistěte se, že jste přihlášeni k serveru db1 jako uživatel root.
A. Stáhněte si software MySQL Cluster
Stáhnu si to ze stránek MySQL pomocí wget. Zde používám „Red Hat Enterprise Linux 7 / Oracle Linux 7 (x86, 64-bit), RPM Bundle “, který je kompatibilní s CentOS 7. Poté rozbalte soubor tar.
cd ~
wget http://dev.mysql.com/get/Downloads/MySQL-Cluster-7.4/MySQL-Cluster-gpl-7.4.10-1.el7.x86_64.rpm-bundle.tar
tar -xvf MySQL-Cluster-gpl-7.4.10-1.el7.x86_64.rpm-bundle.tar
B. Instalovat a odebírat balíčky
Před instalací balíčku rpm pro MySQL Cluster je třeba nainstalovat perl-Data-Dumper který vyžaduje server MySQL-Cluster. A musíte odstranit mariadb-libs než budeme moci nainstalovat MySQL Cluster.
yum -y install perl-Data-Dumper
yum -y remove mariadb-libs
C. Nainstalujte MySQL Cluster
Nainstalujte balíček MySQL Cluster pomocí těchto příkazů rpm:
cd ~
rpm -Uvh MySQL-Cluster-client-gpl-7.4.10-1.el7.x86_64.rpm
rpm -Uvh MySQL-Cluster-server-gpl-7.4.10-1.el7.x86_64.rpm
rpm -Uvh MySQL-Cluster-shared-gpl-7.4.10-1.el7.x86_64.rpm
Ujistěte se, že nedošlo k chybě.
D. Konfigurace clusteru MySQL
Vytvořte nový adresář pro konfigurační soubory. Použiji adresář "/var/lib/mysql-cluster".
mkdir -p /var/lib/mysql-cluster
Poté vytvořte nový konfigurační soubor pro správu clusteru s názvem „config.ini " v adresáři mysql-cluster.
cd /var/lib/mysql-cluster
vi config.ini
Vložte konfiguraci níže:
[ndb_mgmd default]
# Directory for MGM node log files
DataDir=/var/lib/mysql-cluster
[ndb_mgmd]
#Management Node db1
HostName=192.168.1.120
[ndbd default]
NoOfReplicas=2 # Number of replicas
DataMemory=256M # Memory allocate for data storage
IndexMemory=128M # Memory allocate for index storage
#Directory for Data Node
DataDir=/var/lib/mysql-cluster
[ndbd]
#Data Node db2
HostName=192.168.1.121
[ndbd]
#Data Node db3
HostName=192.168.1.122
[mysqld]
#SQL Node db4
HostName=192.168.1.123
[mysqld]
#SQL Node db5
HostName=192.168.1.124
Uložte soubor a ukončete.
E. Spusťte Management Node
Dále spusťte řídicí uzel pomocí příkazu níže:
ndb_mgmd --config-file=/var/lib/mysql-cluster/config.ini
Výsledek by měl být podobný tomuto:
MySQL Cluster Management Server mysql-5.6.28 ndb-7.4.10
2016-03-22 19:26:08 [MgmtSrvr] INFO -- The default config directory '/usr/mysql-cluster' does not exist. Trying to create it...
2016-03-22 19:26:08 [MgmtSrvr] INFO -- Successfully created config directory
Management uzel je spuštěn, nyní můžete pomocí příkazu "ndb_mgm" monitorovat uzel:
ndb_mgm
show
Můžete vidět, že management uzel byl spuštěn s:mysql-6.6 a ndb-7.4.
Krok 2 – Nastavení datových uzlů clusteru MySQL
Pro datové uzly použijeme 2 servery CentOS.
- db2 =192.168.1.121
- db3 =192.168.1.122
A. Přihlaste se jako uživatel root a stáhněte si software MySQL Cluster
Přihlaste se k serveru db2 pomocí ssh:
ssh [email protected]
Poté si stáhněte balíček MySQL Cluster a rozbalte jej:
cd ~
wget http://dev.mysql.com/get/Downloads/MySQL-Cluster-7.4/MySQL-Cluster-gpl-7.4.10-1.el7.x86_64.rpm-bundle.tar
tar -xvf MySQL-Cluster-gpl-7.4.10-1.el7.x86_64.rpm-bundle.tar
B. Instalovat a odebírat balíčky
Nainstalujte perl-Data-Dumper a odstraňte mariadb-libs:
yum -y install perl-Data-Dumper
yum -y remove mariadb-libs
C. Nainstalujte MySQL Cluster
Nyní můžeme nainstalovat balíčky MySQL Cluster pro datové uzly pomocí těchto příkazů rpm:
cd ~
rpm -Uvh MySQL-Cluster-client-gpl-7.4.10-1.el7.x86_64.rpm
rpm -Uvh MySQL-Cluster-server-gpl-7.4.10-1.el7.x86_64.rpm
rpm -Uvh MySQL-Cluster-shared-gpl-7.4.10-1.el7.x86_64.rpm
Ujistěte se, že nedošlo k chybě.
D. Konfigurace datového uzlu
Vytvořte nový konfigurační soubor v adresáři /etc pomocí editoru vi:
vi /etc/my.cnf
Vložte konfiguraci níže:
[mysqld]
ndbcluster
ndb-connectstring=192.168.1.120 # IP address of Management Node
[mysql_cluster]
ndb-connectstring=192.168.1.120 # IP address of Management Node
Uložte soubor a ukončete.
Poté vytvořte nový adresář pro data databáze, který jsme definovali v konfiguračním souboru management node "config.ini".
mkdir -p /var/lib/mysql-cluster
Nyní spusťte datový uzel/ndbd:
ndbd
výsledky:
2016-03-22 19:35:56 [ndbd] INFO -- Angel connected to '192.168.1.120:1186'
2016-03-22 19:35:56 [ndbd] INFO -- Angel allocated nodeid: 2
Datový uzel db2 připojený k uzlu správy ip 192.168.1.120.
E. Opakujte kroky 2.A – 2.D na serveru db3.
Protože máme 2 datové uzly, zopakujte prosím kroky 2.A – 2.D na našem druhém datovém uzlu.
Krok 3 – Nastavení uzlu SQL
Tento krok obsahuje nastavení pro uzel SQL, který poskytuje aplikaci přístup k databázi. Pro uzly SQL používáme 2 servery CentOS:
- db4 =192.168.1.123
- db5 =192.168.1.124
A. Přihlaste se a stáhněte si MySQL Cluster
Přihlaste se k serveru db4 jako uživatel root:
ssh [email protected]
A stáhněte si balíček MySQL Cluster:
cd ~
wget http://dev.mysql.com/get/Downloads/MySQL-Cluster-7.4/MySQL-Cluster-gpl-7.4.10-1.el7.x86_64.rpm-bundle.tar
tar -xvf MySQL-Cluster-gpl-7.4.10-1.el7.x86_64.rpm-bundle.tar
B. Instalovat a odebírat balíčky
Nainstalujte perl-Data-Dumper a odstraňte mariadb-libs, které jsou v konfliktu s MySQL Clusterem.
yum -y install perl-Data-Dumper
yum -y remove mariadb-libs
C. Nainstalujte MySQL Cluster
Nainstalujte server MySQL Cluster, klienta a sdílený balíček pomocí příkazů rpm níže:
cd ~
rpm -Uvh MySQL-Cluster-client-gpl-7.4.10-1.el7.x86_64.rpm
rpm -Uvh MySQL-Cluster-server-gpl-7.4.10-1.el7.x86_64.rpm
rpm -Uvh MySQL-Cluster-shared-gpl-7.4.10-1.el7.x86_64.rpm
D. Nakonfigurujte uzel SQL
Vytvořte nový soubor my.cnf v adresáři /etc:
vi /etc/my.cnf
A vložte konfiguraci níže:
[mysqld]
ndbcluster
ndb-connectstring=192.168.1.120 # IP address for server management node
default_storage_engine=ndbcluster # Define default Storage Engine used by MySQL
[mysql_cluster]
ndb-connectstring=192.168.1.120 # IP address for server management node
Uložte soubor a ukončete editor.
Spusťte uzel SQL spuštěním serveru MySQL:
service mysql start
E. Opakujte kroky 3.A – 3.D na serveru db5.
Prosím opakujte kroky 3.A - 3.D na druhém SQL serveru (db5).
Krok 4 – Monitorování clusteru
Abychom viděli stav clusteru, musíme se přihlásit do management node db1.
ssh [email protected]
K zobrazení stavu clusteru můžeme použít příkaz ndb_mgm:
ndb_mgm
ndb_mgm> show
Dalším užitečným příkazem je:
ndb_mgm -e "all status"
ndb_mgm -e "all report memory"
Krok 5 – Testování clusteru
Chcete-li provést test na našem novém clusteru MySQL, musíme se přihlásit k serverům SQL Nodes db4 nebo db5.
Přihlaste se k serveru db4:
ssh [email protected]
Změňte výchozí heslo MySQL uložené v „.mysql_secret " soubor v kořenovém adresáři:
cd ~
cat .mysql_secret
toto je můj vzorek:
# The random password set for the root user at Tue Mar 22 19:44:07 2016 (local time): qna3AwbJMuOnw23T
Nyní změňte heslo příkazem níže:
mysql_secure_installation
Zadejte své staré heslo mysql a poté zadejte nové a vše potvrďte stisknutím klávesy Enter.
Pokud je vše hotovo, můžete se přihlásit do prostředí MySQL pomocí svého hesla:
mysql -u root -p
Po přihlášení vytvořte nového uživatele root s hostitelem "@ “, takže budeme mít přístup k MySQL zvenčí.
CREATE USER 'root'@'%' IDENTIFIED BY 'aqwe123';
Nahraďte aqwe123 s vaším vlastním bezpečným heslem! Nyní můžete vidět nového uživatele root s hostitelem "@" v seznamu uživatelů MySQL:
select user, host, password from mysql.user;
A udělte novému uživateli root přístup pro čtení a zápis ze vzdáleného uzlu:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY PASSWORD '*94CC7BF027327993D738E11...(Encrypted PASSWORD)' WITH GRANT OPTION;
Nyní zkuste vytvořit novou databázi ze serveru db4 a databázi uvidíte také na db5.
Toto je pouze ukázkový výsledek pro testování replikace dat clusteru.
MySQL Cluster byl úspěšně nastaven na CentOS 7 s 5 serverovými uzly.
Závěr
MySQL Cluster je technologie, která poskytuje vysokou dostupnost a redundanci pro databáze MySQL. Jako úložný modul používá NDB nebo NDBCLUSTER a poskytuje klastrování a automatické sharding pro databáze MySQL. K implementaci clusteru potřebujeme 3 komponenty:Management Node (MGM), Data Nodes (NDB) a SQL Nodes (API). Každý uzel musí mít vlastní paměť a disk. Nedoporučuje se používat síťové úložiště, jako je NFS. Chcete-li nainstalovat MySQL Cluster na minimální systém CentOS 7, musíme odstranit balíček mariadb-libs, mariadb-libs je v konfliktu s MySQL-Cluster-server a musíte nainstalovat balíček perl-Data-Dumper, který MySQL-Cluster potřebuje -server. MySQL Cluster se snadno instaluje a konfiguruje na více serverech CentOS.