Im Folgenden wird nicht ausdrücklich darauf hingewiesen, dass es sich bei allen um Befehle handelt, die von beiden Servern ausgeführt werden müssen. Da es sich um eine duale Management-Center-Konfiguration handelt, haben die beiden Maschinen tatsächlich unterschiedliche Konfigurationen von IDs und IPs . Die Parameterkonfigurationen sind grundsätzlich gleich
http:/ herunter. /dev.mysql.com/downloads/cluster/
1) Bereinigen Sie den mit CentOS6.5 gelieferten MySQL-Dienst Wenn andere Systeme nicht möglich sind, wird dennoch empfohlen,
# yum -y remove mysql # rpm -qa | grep mysql* # rpm -e --nodeps mysql-libs-5.1.71-1.el6.x86_64
2) Umgebungsvorbereitung
Ordner erstellen (unterteilt in die folgenden 3 Kategorien, 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
首先解压MySQL-Cluster-gpl-7.4.2-1.el6.x86_64.rpm-bundle.tar # tar xvf MySQL-Cluster-gpl-7.4.2-1.el6.x86_64.rpm-bundle.tar 然后执行如下命令安装 # 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 Achtung: Nach der Installation des Server-GPL-Pakets erscheint die folgende Eingabeaufforderung, um uns daran zu erinnern Das erste Superkonto-Passwort nach der Installation des gesamten Clusters ist in der Datei /root/.mysql_secret vorhanden.
--------------------------------------------------------------------------------------------------------------------- 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. -----------------------------------------------------------
1) Führen Sie den folgenden Befehl aus:
# cd /var/lib/mysql-cluster # vi config.ini
2) Konfigurieren Sie die Datei config.ini als angehängt
Konfigurationsdatei von 100.218:
config.ini
Konfigurationsinformationen:
[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 [mgm] HostName=192.168.100.217 NodeId=61 [ndbd default] NoOfReplicas = 2 DataMemory = 50M IndexMemory = 50M MaxNoOfTables = 1024 MaxNoOfAttributes = 5000000 MaxNoOfOrderedIndexes = 10000 [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
Konfigurationsdatei von 100.217
config.ini
[computer] Id=mgr-server-02 HostName=192.168.100.217 [mgm default] datadir=/var/lib/mysql-cluster [mgm] HostName=192.168.100.218 NodeId=60 [mgm] HostName=192.168.100.217 NodeId=61 [ndbd default] NoOfReplicas = 2 DataMemory = 50M IndexMemory = 50M MaxNoOfTables = 1024 MaxNoOfAttributes = 5000000 MaxNoOfOrderedIndexes = 10000 [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
Tatsächlich gibt es keinen großen Unterschied zwischen den beiden Dateien, er liegt lediglich im Namen und der Identifikations-ID in der Computerkonfiguration
Ä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,192.168.100.217 [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,192.168.100.217
1) MySQL-Cluster starten
Bevor Sie den ersten Start durchführen, stellen Sie bitte sicher, dass die Firewalls der beiden Maschinen ausgeschaltet sind (Dienst iptables stoppt oder Stellen Sie den Firewall-Port so ein, dass er passierbar ist. 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 ( Sie müssen --initial zur Initialisierung hinzufügen.)
Starten Sie den Balancing-Knotenbefehl: ndbd --initial
Starten Sie den Datenknotenbefehl: mysqld_safe --defaults-file=/usr/my.cnf --explicit_defaults_for_timestamp &
my.cnf befindet sich in einigen Systemen im Verzeichnis etc
Beachten Sie, dass die gesamte Konsolenausgabe während des Startvorgangs überwacht werden muss. Wenn eine Fehlermeldung gefunden wird, muss diese umgehend behoben werden basierend auf 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) id=61 @192.168.100.217 (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) id=61 @192.168.100.217 (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 verwenden, um es zu ändern:
mysql -u root -p;
Zufälliges Passwort (Einzelheiten finden Sie in der Datei /root/.mysql_secret). Verwenden Sie nach der Eingabe den folgenden Befehl, um das Passwort zu ändern:
SET PASSWORD = PASSWORD('neues Passwort');
Aber dieses neue Passwort muss ein Hash--Wert sein. Verwenden Sie daher die folgende Methode, um den Passwort--Hash-Wert der Zeichenfolge < zu erhalten 🎜> select password('111111');
Wenn Sie jedoch den obigen Befehl ausführen, müssen Sie zuerst das Passwort festlegen, was frustrierend ist. Es ist wieder da, und dann gehen Sie zu MySQL an anderer Stelle und führen es aus.
Das Der Hashwert von 111111 ist „*FD571203974BA9AFE270FE62151AE967ECA5E0AA“
SET PASSWORD = PASSWORD('*FD571203974BA9AFE270FE62151AE967ECA5 E0AA');
So deprimierend, nach dem Einrichten müssen Sie Chiffre verwenden Text zum Anmelden. Nun, verwenden Sie einfach Chiffretext zur Eingabe. Verwenden Sie nach der Eingabe den folgenden Befehl, um die Verwendung von Klartext für die Anmeldung zu erzwingen
use mysql; delete from user; grant all on *.* to root@'%' identified by "111111" with grant option; flush privileges; quit;
mehreren mit SQL ausgestatteten Servern anmelden Datenknoten müssen Sie den obigen Befehl einmal ausführen
Nachdem Sie MySQL auf 218 eingegeben haben, führen Sie Folgendes aus:
create database clustertest; use clustertest; CREATE TABLE testtable(Count INT) ENGINE=NDBCLUSTER;
Überprüfen Sie, ob die Synchronisierung erfolgreich ist . Gehen Sie auf 217 zu MySQL und prüfen Sie, ob die Datenbank und die Tabelle automatisch erstellt werden. Wenn dies fehlschlägt, überprüfen Sie bitte die Umgebungskonfiguration
2) Testen Sie, ob die Daten bei der Notfallwiederherstellung in Ordnung sind Situationen Synchronisierung (wenn eine Datenbank gestoppt wird, werden die verlorenen Daten automatisch wieder aufgefüllt, wenn sie erneut gestartet wird)
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;
如果发现有数据,则表示功能完备
关闭数据节点:# mysqld stop (SQL节点可以用mysqladmin shutdown或别的方式关闭。)
在管理节点上执行:# ndb_mgm -e shutdown
将安全的关闭管理节点和数据节点。
关闭后使用如下的进程检测命令查看一下是否退出来了:
# pgrep mysqld # ps aux | grep nbdb
如果没有,找到对应的pid进行kill 操作即可
kill -9 进程号
启动整个cluster的次序,注意,一些语句已经减去了初始化的内容:
ndb_mgmd -f /var/lib/mysql-cluster/config.ini ndbd mysqld_safe --defaults-file=/usr/my.cnf --explicit_defaults_for_timestamp &
1、mysql安装后,默认会自动启动的,每次启动cluster的时候,都需要先把mysql的服务关闭,太麻烦,于是可以执行如下命令(我出手有点狠):
chkconfig --level 123456 mysql off
2、防火墙问题,偷个懒,我懒得去一一开放端口,干脆把防火墙直接关了(极不推荐的做法)
chkconfig --level 123456 iptables off
Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der MySQL-Cluster-Clusterkonstruktion (basierend auf dem RPM-Installationspaket Dual Management Center). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!