Heim > Datenbank > MySQL-Tutorial > MySQL-Optimierung – Detaillierte Erläuterung der Schritte zum Cluster-Building-Code (Bild)

MySQL-Optimierung – Detaillierte Erläuterung der Schritte zum Cluster-Building-Code (Bild)

黄舟
Freigeben: 2017-03-10 10:54:25
Original
1135 Leute haben es durchsucht

1 Übersicht


MySQL Cluster ist eine äußerst praktische, skalierbare, leistungsstarke und hochredundante Version von MySQL, die für verteilte Computerumgebungen geeignet ist Forschung und Entwicklung Die ursprüngliche Absicht des Designs besteht darin, die strengsten Anwendungsanforderungen in vielen Branchen zu erfüllen. Diese Anwendungen erfordern häufig eine Zuverlässigkeit des Datenbankbetriebs von 99,999 %. MySQL Cluster ermöglicht die Bereitstellung von „In-Memory“-Datenbankclustern in Shared-Nothing-Systemen. Durch die Shared-Nothing-Architektur kann das System kostengünstige Hardware verwenden und stellt keine besonderen Anforderungen an Software und Hardware. Da außerdem jede Komponente über einen eigenen Speicher und eine eigene Festplatte verfügt, gibt es keinen Single Point of Failure.

Tatsächlich integriert MySQL Cluster eine Speicher-Cluster-Speicher-Engine namens NDB in den Standard-MySQL-Server. Es besteht aus einer Reihe von Computern, auf denen jeweils ein oder mehrere Prozesse ausgeführt werden, zu denen ein MySQL-Server, ein Datenknoten, ein Verwaltungsserver und ein proprietäres Datenzugriffsprogramm gehören können.

MySQL-Cluster bietet die Möglichkeit, die NDB-Speicher-Engine mit einer Vielzahl von Failover- und Lastausgleichsoptionen zu konfigurieren. Am einfachsten ist dies jedoch auf der Speicher-Engine auf Cluster-Ebene. Das Folgende ist das MySQL-Clusterstrukturdiagramm:


MySQL besteht aus struktureller Sicht aus drei Arten von Knoten (Computern oder Prozessen). , nämlich:

Verwaltungsknoten: Wird verwendet, um Konfigurations-, Verwaltungs-, Vermittlungs- und andere Funktionen für andere Knoten im gesamten Cluster bereitzustellen. Theoretisch reicht es aus, Dienste über einen Server bereitzustellen.

Datenknoten: Der Kern des MySQL-Clusters, der Daten und Protokolle speichert und verschiedene Verwaltungsdienste für Daten bereitstellt. Wenn mehr als zwei Knoten vorhanden sind, kann die Hochverfügbarkeitsgarantie des Clusters erreicht werden. Wenn die Anzahl der DB-Knoten zunimmt, verlangsamt sich die Verarbeitungsgeschwindigkeit des Clusters.

SQL-Knoten (API): Wird für den Zugriff auf MySQL-Cluster-Daten und die Bereitstellung externer Anwendungsdienste verwendet. Durch das Hinzufügen von API-Knoten wird die Geschwindigkeit des gleichzeitigen Zugriffs und der Gesamtdurchsatz des gesamten Clusters verbessert. Der Knoten kann auf dem Webanwendungsserver, auf einem dedizierten Server oder auf demselben Server wie die Datenbank bereitgestellt werden.

2 NDB-Engine


MySQL Cluster verwendet eine dedizierte speicherbasierte Speicher-Engine – NDB-Engine. Der Vorteil davon ist, dass es schnell ist und keinen Festplatten-E/A-Engpass aufweist. Da es jedoch auf dem Speicher basiert, ist die Größe der Datenbank durch den Gesamtspeicher des Systems begrenzt. Wenn der MySQL-Server, auf dem NDB ausgeführt wird, über ausreichend Speicher verfügen muss, z. B. 4G, 8G oder sogar 16G. Die NDB-Engine ist verteilt und kann auf mehreren Servern konfiguriert werden, um Datenzuverlässigkeit und Skalierbarkeit zu erreichen. Theoretisch kann durch die Konfiguration von zwei NDB-Speicherknoten die Redundanz des gesamten Datenbankclusters erreicht und das Single-Point-of-Failure-Problem gelöst werden. .


2.1 Mängel


  • Basierend auf dem Speicher ist die Größe der Datenbank durch die Gesamtspeichergröße des Clusters begrenzt

    Aufgrund des Speichers können Daten nach einem Stromausfall verloren gehen. Dies muss durch Tests überprüft werden.

    Mehrere Knoten implementieren Kommunikation, Datensynchronisation, Abfrage und andere Vorgänge über das Netzwerk, sodass die Integrität von der Netzwerkgeschwindigkeit beeinflusst wird.

    Daher ist die Geschwindigkeit auch relativ langsam

    2.2 Vorteile


    • Mehrere Knoten können an verschiedenen geografischen Standorten verteilt werden, daher ist es auch eine Lösung zur Implementierung einer verteilten Datenbank.

      Die Skalierbarkeit ist sehr gut und der Datenbankcluster kann durch Hinzufügen von Knoten erweitert werden.

      Die Redundanz ist sehr gut. Es liegen vollständige Datenbankdaten auf mehreren Knoten vor, sodass Knotenausfallzeiten nicht zu Dienstunterbrechungen führen.

      Die Kosten für die Implementierung von Hochverfügbarkeit sind relativ gering. Im Gegensatz zu herkömmlichen Hochverfügbarkeitslösungen, die gemeinsam genutzte Speichergeräte und dedizierte Software erfordern, kann NDB implementiert werden, solange genügend Speicher vorhanden ist.

2. Clusteraufbau

Ein einfachstes MySQL-Clustersystem wird als Root-Konto ausgeführt. Dieser MySQL-Cluster enthält einen Verwaltungsknoten, zwei Datenknoten und zwei SQL-Knoten. Die Namen und IPs der virtuellen Maschinen lauten wie folgt:

Verwaltungsknoten

mysql-mgm

192.168.124.141

Datenknoten 1

mysql-ndbd-1

192.168.124.142

Datenknoten 2

mysql-ndbd-2

192.168.124.143

SQL Knoten 1

mysql-sql-1

192.168. 124.144

SQL Knoten2

mysql-sql-2

192.168.124.145

>

Bitte konfigurieren Sie die Konfigurationselemente hier jeweils auf den drei virtuellen Maschinen. 1. Installieren Sie die virtuelle Maschine

Das Betriebssystem der virtuellen Maschine installiert die x86_64-Version von CentOS 6.4, verwendet das NAT-Netzwerk und installiert auch VMware-Tools Die spezifische Installationsmethode finden Sie hier. Hier nicht näher erläutert.

2. MySQL-Cluster kopieren

Laden Sie die folgende Version von MySQL-Cluster herunter:

http://www.php.cn/ Kopieren Sie das heruntergeladene komprimierte Paket in das Verzeichnis /root/Downloads der virtuellen Maschine und führen Sie dann den folgenden Befehl in der Shell aus:

cd /root/Downloads
tar -xvzf mysql-cluster-gpl-7.3.4-linux-glibc2.5-x86_64.tar.gz
mv mysql-cluster-gpl-7.3.4-linux-glibc2.5-x86_64 /usr/local/mysql
Nach dem Login kopieren

3. Schalten Sie die Sicherheitsrichtlinie aus
chkconfig --level 35 iptables off
Nach dem Login kopieren

Einschalten Deaktivieren Sie die iptables-Firewall (oder schalten Sie die Ports 1186 und 3306 der Firewall ein) und führen Sie den folgenden Befehl in der Shell aus:

gedit /etc/selinux/config
Nach dem Login kopieren

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of these two values:
#     targeted - Targeted processes are protected,
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted
Nach dem Login kopieren

Schalten Sie SELinux aus und führen Sie den folgenden Befehl in der Shell aus:

mkdir /var/lib/mysql-cluster
cd /var/lib/mysql-cluster
gedit config.ini
Nach dem Login kopieren
[ndbd default]
NoOfReplicas=2
DataMemory=80M
IndexMemory=18M
[ndb_mgmd]
NodeId=1
hostname=192.168.124.141
datadir=/var/lib/mysql-cluster
[ndbd]
NodeId=2
hostname=192.168.124.142
datadir=/usr/local/mysql/data
[ndbd]NodeId=3hostname=192.168.124.143datadir=/usr/local/mysql/data
[mysqld]NodeId=4hostname=192.168.124.144
[mysqld]
NodeId=5
hostname=192.168.124.145
Nach dem Login kopieren

cp /usr/local/mysql/bin/ndb_mgm* /usr/local/bin
cd /usr/local/bin
chmod +x ndb_mgm*
Nach dem Login kopieren

Ändern Sie das SELINUX-Element in der Konfigurationsdatei auf „Deaktiviert“. Die Konfigurationsdatei lautet wie folgt:

groupadd mysql
useradd -g mysql mysql
Nach dem Login kopieren
Nach dem Login kopieren

Endlich das System neu starten

2. Konfigurationsverwaltungsknoten (192.168.124.141)

gedit /etc/my.cnf
Nach dem Login kopieren
Nach dem Login kopieren


1 config.ini-Konfigurationsdatei

[mysqld]
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
socket=/usr/local/mysql/sock/mysql.sock
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
[mysql_cluster]
ndb-connectstring=192.168.124.141
Nach dem Login kopieren

in Führen Sie den folgenden Befehl in der Shell aus:

cd /usr/local/mysql
mkdir sock
scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
Nach dem Login kopieren
Nach dem Login kopieren

chown -R root .
chown -R mysql.mysql /usr/local/mysql/data
chown -R mysql.mysql /usr/local/mysql/sock
chgrp -R mysql .
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Der Inhalt der Konfigurationsdatei config.ini ist wie folgt:

cp support-files/mysql.server /etc/rc.d/init.d/
chmod +x /etc/rc.d/init.d/mysql.server
chkconfig --add mysql.server
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

2 Der Verwaltungsknoten

Installieren Sie den Verwaltungsknoten, es ist keine mysqld-Binärdatei erforderlich. Nur das MySQL-Cluster-Serverprogramm (ndb_mgmd) und das Listening-Client-Programm (ndb_mgm) sind erforderlich. Führen Sie den folgenden Befehl in der Shell aus:
groupadd mysql
useradd -g mysql mysql
Nach dem Login kopieren
Nach dem Login kopieren
gedit /etc/my.cnf
Nach dem Login kopieren
Nach dem Login kopieren

[client]
socket=/usr/local/mysql/sock/mysql.sock
[mysqld]
ndbcluster
datadir=/usr/local/mysql/data
socket=/usr/local/mysql/sock/mysql.sock
ndb-connectstring=192.168.124.141
[mysql_cluster]
ndb-connectstring=192.168.124.141
Nach dem Login kopieren
3. Konfigurieren Sie Datenknoten (192.168.124.142, 192.168.124.143)

cd /usr/local/mysql
mkdir sock
scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
Nach dem Login kopieren
Nach dem Login kopieren

1 🎜>

Führen Sie den folgenden Befehl in der Shell aus:

chown -R root .
chown -R mysql.mysql /usr/local/mysql/data
chown -R mysql.mysql /usr/local/mysql/sock
chgrp -R mysql .
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

cp support-files/mysql.server /etc/rc.d/init.d/
chmod +x /etc/rc.d/init.d/mysql.server
chkconfig --add mysql.server
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

2. Konfigurieren Sie die my.cnf-Konfigurationsdatei

ndb_mgmd -f /var/lib/mysql-cluster/config.ini
Nach dem Login kopieren
Nach dem Login kopieren
Führen Sie den folgenden Befehl in der Shell aus:

ndb_mgm
Nach dem Login kopieren
Nach dem Login kopieren

Der Inhalt der Konfigurationsdatei my .cnf lautet wie folgt:
/usr/local/mysql/bin/ndbd --initial
Nach dem Login kopieren
Nach dem Login kopieren
/usr/local/mysql/bin/ndbd
Nach dem Login kopieren
Nach dem Login kopieren

3. Erstellen Sie eine Systemdatenbank Führen Sie den folgenden Befehl in der Shell aus:

/usr/local/mysql/bin/mysqld_safe --user=mysql &
Nach dem Login kopieren
Nach dem Login kopieren

4 Legen Sie das Datenverzeichnis fest
shell> /usr/local/mysql/bin/mysql -u root -p
mysql>show databases;
mysql>create database aa;
mysql>use aa;
mysql>CREATE TABLE ctest2 (i INT) ENGINE=NDB; //这里必须指定数据库表的引擎为NDB,否则同步失败
mysql> INSERT INTO ctest2 () VALUES (1);
mysql> SELECT * FROM ctest2;
Nach dem Login kopieren
Nach dem Login kopieren

Führen Sie das aus Folgender Befehl in der Shell:

mysql> create database bb;
mysql> use bb;
mysql> CREATE TABLE ctest3 (i INT) ENGINE=NDB;
mysql> use aa;
mysql> INSERT INTO ctest2 () VALUES (3333);
mysql> SELECT * FROM ctest2;
Nach dem Login kopieren
Nach dem Login kopieren

#/usr/local/mysql/bin/ndbd --initial#service mysqld start
Nach dem Login kopieren
Nach dem Login kopieren

5. MySQL-Dienst konfigurieren
# /usr/local/mysql/bin/mysql -u root –p
Nach dem Login kopieren
Nach dem Login kopieren

Führen Sie den folgenden Befehl in der Shell aus:

shell> /usr/local/mysql/bin/ndb_mgm -e shutdown
Nach dem Login kopieren
Nach dem Login kopieren

Connected to Management Server at: localhost:1186
2 NDB Cluster node(s) have shutdown.
Disconnecting to allow management server to shutdown.
Nach dem Login kopieren
Nach dem Login kopieren
<🎜><🎜><🎜>4. SQL-Knoten konfigurieren (<🎜><🎜>192.168.124.144 <🎜><🎜>, 192.168.124.145) <🎜><🎜><🎜><🎜><🎜>1. MySQL-Gruppe und Benutzer hinzufügen <🎜><🎜><🎜>Führen Sie den folgenden Befehl in der Shell aus: <🎜>
shell> /etc/init.d/mysql.server stop
Shutting down MySQL... SUCCESS!
Nach dem Login kopieren
Nach dem Login kopieren
<🎜><🎜><🎜><🎜><🎜>< 🎜>2. Konfigurieren Sie die my.cnf-Konfigurationsdatei<🎜 ><🎜><🎜>Führen Sie den folgenden Befehl in der Shell aus: <🎜>
<🎝><🎜 ><🎜><🎜><🎜><🎜>Der Inhalt der Konfigurationsdatei my.cnf lautet wie folgt: <🎜>
<🎝><🎜><🎜><🎜><🎜><🎜><🎜>3. Erstellen Sie die Systemdatenbank <🎜> <🎜><🎜>Führen Sie den folgenden Befehl in der Shell aus: <🎜>
<🎝><🎜 ><🎜><🎜><🎜>

4. 设置数据目录

在shell中运行以下命令:

chown -R root .
chown -R mysql.mysql /usr/local/mysql/data
chown -R mysql.mysql /usr/local/mysql/sock
chgrp -R mysql .
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

5. 配置MySQL服务

在shell中运行以下命令:

cp support-files/mysql.server /etc/rc.d/init.d/
chmod +x /etc/rc.d/init.d/mysql.server
chkconfig --add mysql.server
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

五、Cluster环境启动

注意启动顺序:首先是管理节点,然后是数据节点,最后是SQL节点。

1. 启动管理结点

在shell中运行以下命令:

ndb_mgmd -f /var/lib/mysql-cluster/config.ini
Nach dem Login kopieren
Nach dem Login kopieren

还可以使用ndb_mgm来监听客户端,如下:

ndb_mgm
Nach dem Login kopieren
Nach dem Login kopieren

2. 启动数据结点

首次启动,则需要添加--initial参数,以便进行NDB节点的初始化工作。在以后的启动过程中,则是不能添加该参数的,否则ndbd程序会清除在之前建立的所有用于恢复的数据文件和日志文件。

/usr/local/mysql/bin/ndbd --initial
Nach dem Login kopieren
Nach dem Login kopieren

如果不是首次启动,则执行下面的命令。

/usr/local/mysql/bin/ndbd
Nach dem Login kopieren
Nach dem Login kopieren

3. 启动SQL结点

若MySQL服务没有运行,则在shell中运行以下命令:

/usr/local/mysql/bin/mysqld_safe --user=mysql &amp;
Nach dem Login kopieren
Nach dem Login kopieren

4. 启动测试

查看管理节点,启动成功:

六、集群测试

1. 测试一

现在我们在其中一个SQL结点上进行相关数据库的创建,然后到另外一个SQL结点上看看数据是否同步。

在SQL结点1(192.168.124.144)上执行:

shell> /usr/local/mysql/bin/mysql -u root -p
mysql>show databases;
mysql>create database aa;
mysql>use aa;
mysql>CREATE TABLE ctest2 (i INT) ENGINE=NDB; //这里必须指定数据库表的引擎为NDB,否则同步失败
mysql> INSERT INTO ctest2 () VALUES (1);
mysql> SELECT * FROM ctest2;
Nach dem Login kopieren
Nach dem Login kopieren

然后在SQL结点2上看数据是否同步过来了

经过测试,在非master上创建数据,可以同步到master上

查看表的引擎是不是NDB,>show create table 表名;

2. 测试二

关闭一个数据节点 ,在另外一个节点写输入,开启关闭的节点,看数据是否同步过来。

首先把数据结点1重启,然后在结点2上添加数据

在SQL结点2(192.168.124.145)上操作如下:

mysql> create database bb;
mysql> use bb;
mysql> CREATE TABLE ctest3 (i INT) ENGINE=NDB;
mysql> use aa;
mysql> INSERT INTO ctest2 () VALUES (3333);
mysql> SELECT * FROM ctest2;
Nach dem Login kopieren
Nach dem Login kopieren

等数据结点1启动完毕,启动数据结点1的服务

#/usr/local/mysql/bin/ndbd --initial#service mysqld start
Nach dem Login kopieren
Nach dem Login kopieren


然后登录进去查看数据

# /usr/local/mysql/bin/mysql -u root –p
Nach dem Login kopieren
Nach dem Login kopieren


可以看到数据已经同步过来了,说明数据可以双向同步了。

七、关闭集群

1. 关闭管理节点和数据节点,只需要在管理节点(ClusterMgm--134)里执行:

shell> /usr/local/mysql/bin/ndb_mgm -e shutdown
Nach dem Login kopieren
Nach dem Login kopieren

显示

Connected to Management Server at: localhost:1186
2 NDB Cluster node(s) have shutdown.
Disconnecting to allow management server to shutdown.
Nach dem Login kopieren
Nach dem Login kopieren

2. 然后关闭Sql节点(135,136),分别在2个节点里运行:

shell> /etc/init.d/mysql.server stop
Shutting down MySQL... SUCCESS!
Nach dem Login kopieren
Nach dem Login kopieren

注意:要再次启动集群,就按照第五部分的启动步骤即可,不过这次启动数据节点的时候就不要加”-initial”参数了。


Das obige ist der detaillierte Inhalt vonMySQL-Optimierung – Detaillierte Erläuterung der Schritte zum Cluster-Building-Code (Bild). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage