Heim  >  Artikel  >  Datenbank  >  Detaillierte Code-Erklärung der MySQL-Cluster-Clusterkonstruktion (basierend auf dem RPM-Installationspaket)

Detaillierte Code-Erklärung der MySQL-Cluster-Clusterkonstruktion (basierend auf dem RPM-Installationspaket)

黄舟
黄舟Original
2017-03-14 16:41:401196Durchsuche

1. Laden Sie mysql-cluster 7.3.7 herunter

http://dev.mysql.com/downloads/cluster/

2. Umgebungsbereinigung und Installation

1) Bereinigen Sie den mit CentOS6.5 gelieferten MySQL-Dienst, ohne den ersten Befehl auszuführen. Wenn dies in anderen Systemen nicht möglich ist, ist dies möglich empfohlen, es auszuführen

# yum -y remove mysql
# rpm -qa | grep mysql*
# rpm -e --nodeps mysql-libs-5.1.71-1.el6.x86_64

2) Umgebungsvorbereitung

Erstellen Sie einen Ordner (Teilen Sie ihn in die folgenden 3 Kategorien ein, um entsprechende Ordner zu erstellen)

存储节点:# mkdir /var/lib/mysql/data 
管理节点:# mkdir /var/lib/mysql-cluster    SQL节点:可不用  文件夹授权
进程DIR:# mkdir /var/run/mysqld
使用如下的命令来变更权限保证可写入:
# chmod -R 1777 /var/lib/mysql
# chmod -R 1777 /var/run/mysqld
# chmod -R 1777 /var/lib/mysql-cluster

3) MySQL-Cluster installieren

Zuerst MySQL-Cluster-gpl-7.4.2-1.el6.x86_64.rpm entpacken -bundle.tar

# tar xvf MySQL-Cluster-gpl-7.4.2-1.el6.x86_64.rpm-bundle.tar

Führen Sie dann den folgenden Befehl aus, um

# rpm -ivh MySQL-Cluster-server-gpl-7.3.4-1.el6.x86_64.rpm
# rpm -ivh MySQL-Cluster-client-gpl-7.3.4-1.el6.x86_64.rpm

Besondere Aufmerksamkeit, wenn das Server-GPL-Paket installiert ist, das Die folgende Eingabeaufforderungsmeldung wird angezeigt, um uns an das Ganze zu erinnern. Das anfängliche Superkonto-Passwort nach der Cluster-Installation wird in der Datei /root/.mysql_secret gespeichert.

---------------------------------------------------------------------------------------------------------------------
A RANDOM PASSWORD HAS BEEN SET FOR THE MySQL root USER !
 You will find that password in '/root/.mysql_secret'.
 You must change that password on your first connect,
 no other statement but 'SET PASSWORD' will be accepted.
 See the manual for the semantics of the 'password expired' flag.
 Also, the account for the anonymous user has been removed.
 In addition, you can run:
  /usr/bin/mysql_secure_installation
 which will also give you the option of removing the test database.
 This is strongly recommended for production servers.
 -----------------------------------------------------------

2. Konfigurieren Sie den Verwaltungsknoten
1) Führen Sie den folgenden Befehl aus:

# cd /var/lib/mysql-cluster
# vi config.ini

2) Konfigurieren Sie die Datei config.ini

[computer]
 Id=mgr-server-01
 HostName=192.168.100.218
 [mgm default]
 datadir=/var/lib/mysql-cluster
 [mgm]
 HostName=192.168.100.218
 NodeId=60
 ExecuteOnComputer=mgr-server-01
 PortNumber=1186
 ArbitrationRank=2
 [ndbd default]
 NoOfReplicas=2
 DataMemory=500M
 IndexMemory=500M
 [ndbd]
 HostName=192.168.100.217
 DataDir=/var/lib/mysql
 NodeId=1
 [ndbd]
 HostName=192.168.100.218
 DataDir=/var/lib/mysql
 NodeId=2
 [mysqld]
 HostName=192.168.100.217
 NodeId=81
 [mysqld]
 HostName=192.168.100.218
 NodeId=82

3. Konfiguration von SQL-Knoten und Datenknoten
Ändern Sie die Datei my.cnf und fügen Sie den folgenden Inhalt hinzu:

[client]
 socket=/var/lib/mysql/mysql.sock
 [mysqld]
 max_connections=100
 datadir=/var/lib/mysql
 socket=/var/lib/mysql/mysql.sock
 ndbcluster
 ndb-connectstring=192.168.100.218
 [mysqld_safe]
 log-error=/var/log/mysqld.log
 #pid-file=/var/run/mysqld/mysqld.pid
 pid-file=/var/lib/mysql/mysqld.pid
 [mysql_cluster]
 ndb-connectstring=192.168.100.218

4. MySQL-Cluster Befehl zum ersten Start und Änderung und Anpassung des Benutzerkennworts: (Bitte befolgen Sie die Reihenfolge zum Starten genau)
1) Starten Sie MySQL-Cluster
Bevor Sie den ersten Start durchführen, stellen Sie bitte sicher, dass die Firewalls der beiden Maschinen ausgeschaltet sind ( Der Dienst iptables stoppt den Firewall-Port oder stellt ihn passierbar ein, sodass die beiden Maschinen verbunden werden können. Die beiden Ports sind Kommunikationsport 1186 und Datenport 3306.
Starten Sie den mgt-Konsolenbefehl zum ersten Mal: ​​ndb_mgmd -f / var/lib/mysql-cluster/config.ini
Starten Sie den Befehl „Balancing Node“: ndbd --initial
Starten Sie den Befehl „Data Node“: mysqld_safe --defaults-file=/etc/my.cnf --explicit_defaults_for_timestamp &
Beachten Sie, dass die gesamte Konsolenausgabe während des Startvorgangs überwacht werden muss. Wenn eine Fehlermeldung gefunden wird, muss diese rechtzeitig behoben werden, und zwar entsprechend dem Inhalt des Fehlerprotokolls.
--------------------------------- --- -------------------------------- --- --------
Wenn alles normal ist, verwenden Sie den folgenden Befehl, um die Verwaltungskonsole zu öffnen: ndb_mgm
Ausführen # show
Überprüfen Sie wie folgt, ob jeder Knoten vollständig gestartet wurde , jeder Knoten wurde verbunden. Wenn es einen Knoten gibt, der nicht verbunden ist, wird

ndb_mgm> show
Connected to Management Server at: 192.168.100.218:1186
Cluster Configuration
---------------------
[ndbd(NDB)] 2 node(s)
id=1 @192.168.100.217 (mysql-5.6.21 ndb-7.4.2, Nodegroup: 0)
id=2 @192.168.100.218 (mysql-5.6.21 ndb-7.4.2, Nodegroup: 0, *)
[ndb_mgmd(MGM)] 1 node(s)
id=60 @192.168.100.218 (mysql-5.6.21 ndb-7.4.2)
[mysqld(API)] 2 node(s)
id=81 @192.168.100.217 (mysql-5.6.21 ndb-7.4.2)
id=82 @192.168.100.218 (mysql-5.6.21 ndb-7.4.2)

angezeigt. Wenn es einen Knoten gibt, der nicht verbunden ist, wird die Zeile mit angezeigt id=81 bedeutet, dass keine Verbindung besteht

ndb_mgm> show
Cluster Configuration
--------------------
[ndbd(NDB)] 2 node(s)
id=1 @192.168.100.217 (mysql-5.6.21 ndb-7.4.2, Nodegroup: 0)
id=2 @192.168.100.218 (mysql-5.6.21 ndb-7.4.2, Nodegroup: 0, *)
[ndb_mgmd(MGM)] 1 node(s)
id=60 @192.168.100.218 (mysql-5.6.21 ndb-7.4.2)
[mysqld(API)] 2 node(s)
id=81 (not connected, accepting connect from 192.168.100.217)
id=82 @192.168.100.218 (mysql-5.6.21 ndb-7.4.2)

2) Ändern Sie das Passwort
Wenn mysqld normal startet (Sie können pgrep mysqld verwenden, um die Prozess-ID abzurufen), Wir können den folgenden Befehl zum Ändern verwenden:

mysql -u root -p;

Zufälliges Passwort (Einzelheiten finden Sie in der Datei /root/.mysql_secret). Nach der Eingabe verwenden Sie den folgenden Befehl, um das Passwort zu ändern:

SET PASSWORD = PASSWORD('新密码');

Aber dieses neue Passwort muss ein Hash-Wert sein, um das Passwort zu erhalten String Hash-Wert

select password('111111');

Wenn Sie die folgende Methode verwenden, müssen Sie zuerst das Passwort festlegen, was frustrierend ist, und es dann an anderer Stelle ausführen.
Der Hash-Wert von 111111 ist „*FD571203974BA9AFE270FE62151AE967ECA5E0AA“. "
SET PASSWORD = PASSWORD('*FD571203974BA9AFE270FE62151AE967ECA5E0AA');
Es ist so frustrierend. Nach dem Einrichten muss ich es immer noch zum Anmelden verwenden. Chiffriertext, okay, verwenden Sie einfach Chiffriertext zur Eingabe. Danach Geben Sie ein und verwenden Sie den folgenden Befehl, um die Verwendung von Klartext zum Anmelden zu erzwingen

use mysql;
delete from user;
grant all on *.* to root@'%' identified by "111111" with grant option;
flush privileges;
quit;

Dann können Sie sich mit dem Klartext-Passwort anmelden.
Mehrere Installationen Server mit SQL-Daten Knoten müssen den obigen Befehl einmal ausführen
5. Testen Sie, ob der Cluster normal funktioniert
1) Einfacher Funktionstest
Nach der Eingabe von MySQL auf 218 ausführen:

create database clustertest;
use clustertest; 
CREATE TABLE testtable(Count INT) ENGINE=NDBCLUSTER;

Hinweis: ENGINE=NDBCLUSTER; Die Engine muss NDBCLUSTER zum Synchronisieren verwenden, sonst wird die Synchronisierung nicht durchgeführt.
Überprüfen Sie, ob sie erfolgreich ist. Gehen Sie zu MySQL und prüfen Sie, ob die Synchronisierung erfolgreich ist erfolgt automatisch. Wenn die Erstellung fehlschlägt, überprüfen Sie bitte die Umgebungskonfiguration
2) Testen Sie, ob die Daten in Notfallwiederherstellungssituationen synchronisiert werden können wird es beim Neustart synchronisiert? Fehlende Daten werden automatisch ergänzt)
Stoppen Sie den MySQL-Dienst auf 217 und führen Sie ihn auf 218 aus

insert into testtable values (1);

启动217的mysql服务,使用show确认217的数据库节点已经连接上了,执行如下语句

select * from testtable;

如果发现有数据,则表示功能完备
6、关闭Cluster:(需要严格按照次序执行)
关闭数据节点:# mysqld stop  (SQL节点可以用mysqladmin shutdown或别的方式关闭。)
在管理节点上执行:# ndb_mgm -e shutdown
将安全的关闭管理节点和数据节点。
关闭后使用如下的进程检测命令查看一下是否退出来了:

# pgrep mysqld
# ps aux | grep nbdb

如果没有,找到对应的pid进行kill 操作即可
kill -9 进程号
7、再次启动Cluster方案:
启动整个cluster的次序,注意,一些语句已经减去了初始化的内容:

ndb_mgmd -f /var/lib/mysql-cluster/config.ini
ndbd
mysqld_safe --defaults-file=/etc/my.cnf --explicit_defaults_for_timestamp &

备注:
1、mysql安装后,默认会自动启动的,每次启动cluster的时候,都需要先把mysql的服务关闭,太麻烦,于是可以执行如下命令(我出手有点狠):
    chkconfig --level 123456 mysql off
2、防火墙问题,偷个懒,我懒得去一一开放端口,干脆把防火墙直接关了
    chkconfig --level 123456 mysql off

Das obige ist der detaillierte Inhalt vonDetaillierte Code-Erklärung der MySQL-Cluster-Clusterkonstruktion (basierend auf dem RPM-Installationspaket). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn