Tutorial-Reihe MySQL-Reihe: Grundlegende Konzepte der relationalen MySQL-Datenbank Was ist MySQL Multi-Instance?Einfach ausgedrückt bedeutet MySQL Multi-Instance, dass auf einem Server gleichzeitig mehrere verschiedene Service-Ports (z. B. 3306, 3307) geöffnet werden und mehrere MySQL-Serviceprozesse gleichzeitig ausgeführt werden. Diese Serviceprozesse stellen Dienste über verschiedene Sockets bereit, die auf verschiedenen Service-Ports lauschen. Diese mehreren MySQL-Instanzen teilen sich einen Satz von MySQL-Installationsprogrammen und verwenden unterschiedliche my.cnf-Konfigurationsdateien (kann auch identisch sein), Startprogramme (können auch identisch sein) und Datendateien. Bei der Bereitstellung der Dienste scheinen mehrere MySQL-Instanzen logisch unabhängig voneinander zu sein und erhalten basierend auf den entsprechenden Einstellungen in der Konfigurationsdatei die entsprechende Menge an Hardwareressourcen vom Server. Um ein Beispiel zu geben: Mehrere MySQL-Instanzen entsprechen mehreren Schlafzimmern in einem Haus. Jede Instanz kann als Schlafzimmer betrachtet werden, und der gesamte Server ist ein Haus. Die Hardwareressourcen (CPU, Männer, Festplatte) und Softwareressourcen (CentOS-Betriebssystem) des Servers können als Badezimmer, Küche und Wohnzimmer des Hauses betrachtet werden, die die gemeinsam genutzten Ressourcen des Hauses sind. Wenn Sie ein Wanderarbeiter in Peking sind und mit Freunden ein Haus mieten, werden Sie es meiner Meinung nach besser verstehen. Sie leben alle zusammen, ruhen sich in Ihrem eigenen Schlafzimmer aus und wenn Sie ausgehen, teilen Sie auf jeden Fall die oben genannten öffentlichen Mittel. Dadurch erhalten Sie ein gutes Verständnis mehrerer MySQL-Instanzen. Tatsächlich können viele Netzwerkdienste mit mehreren Instanzen konfiguriert werden, z. B. nginx, Apache, haproxy, redis usw. Dies wird häufig auf Portal-Websites verwendet. Wenn mehrere Testumgebungen auf einer physischen Maschine benötigt werden, müssen mehrere Instanzen der Datenbank erstellt werden. Mehrere Instanzen bedeuten, dass mehrere Programme ausgeführt werden und es zwischen den Instanzen keine gegenseitigen Auswirkungen gibt. Beachten Sie, dass der Abhörport unterschiedlich sein muss. Umgebung: CentOS7.5, kompilieren und installieren Sie die Version MariaDB-10.2.15, Softwareinstallationsverzeichnis: /app/mysql/ 1) Erstellen Sie eine laufende Verzeichnisumgebung [root@centos7 ~]# mkdir -p /mysqldb/{3306,3307,3308}/{etc,socket,pid,log,data,bin} [root@centos7 ~]# chown -R mysql:mysql /mysqldb/ 2) Initialisieren Sie die Datenbank [root@centos7 ~]# cd /app/mysql/ [root@centos7 mysql]# scripts/mysql_install_db --datadir=/mysqldb/3306/data/ --user=mysql --basedir=/app/mysql/ [root@centos7 mysql]# scripts/mysql_install_db --datadir=/mysqldb/3307/data/ --user=mysql --basedir=/app/mysql/ [root@centos7 mysql]# scripts/mysql_install_db --datadir=/mysqldb/3308/data/ --user=mysql --basedir=/app/mysql/ Das Obige wird kompiliert und installiert. Das Installationsverzeichnis ist /app/mysql/. Sie müssen das Softwareinstallationsverzeichnis aufrufen und das Initialisierungsskript ausführen. Wenn es sich um ein von yum installiertes Paket handelt, führen Sie einfach den Befehl mysql_install_db direkt aus. 3) Stellen Sie die Konfigurationsdatei bereit und ändern Sie sie nach Bedarf [root@centos7 mysql]# cp support-files/my-huge.cnf /mysqldb/3306/etc/my.cnf [root@centos7 mysql]# cp support-files/my-huge.cnf /mysqldb/3307/etc/my.cnf [root@centos7 mysql]# cp support-files/my-huge.cnf /mysqldb/3308/etc/my.cnf [root@centos7 mysqldb]# cd /mysqldb/ [root@centos7 mysqldb]# vim 3306/etc/my.cnf [mysqld] Port = 3306 Datenverzeichnis = /mysqldb/3306/data Socket = /mysqldb/3306/socket/mysql.sock [root@centos7 mysqldb]# vim 3307/etc/my.cnf #Änderung entsprechend dem obigen Konfigurationsbeispiel [root@centos7 mysqldb]# vim 3308/etc/my.cnf 4) Stellen Sie ein Dienststartskript bereit [root@centos7 ~]# cat mysqld #Skriptbeispiel#!/bin/bash port=3306 #muss in die Portnummer der aktuellen Instanz geändert werdenmysql_user="root" mysql_pwd="" cmd_path="/app/mysql/bin" #bin im Installationsverzeichnis mysql_basedir="/mysqldb" #Das Verzeichnis, in dem sich die Instanzdatenbankdatei befindetmysql_sock="${mysql_basedir}/${port}/socket/mysql.sock" function_start_mysql() { wenn [ ! -e "$mysql_sock" ];dann printf "MySQL wird gestartet...\n" ${cmd_path}/mysqld_safe --defaults-file=${mysql_basedir}/${port}/etc/my.cnf &> /dev/null & anders printf "MySQL läuft...\n" Ausfahrt fi } Funktion_stop_mysql() { wenn [ ! -e "$mysql_sock" ];dann printf "MySQL wurde gestoppt...\n" Ausfahrt anders printf "MySQL wird gestoppt...\n" ${cmd_path}/mysqladmin -u ${mysql_user} -p${mysql_pwd} -S ${mysql_sock} Herunterfahren fi } function_restart_mysql() { printf "MySQL wird neu gestartet...\n" Funktion_Stoppen_MySQL Schlaf 2 Funktion_start_mysql } Fall $1 in Start) Funktion_start_mysql ;; stoppen) Funktion_Stoppen_MySQL ;; Neustart) Funktion_Neustart_MySQL ;; *) printf "Verwendung: ${mysql_basedir}/${port}/bin/mysqld {start|stop|restart}\n" esac [root@centos7 ~]# cp mysqld /mysqldb/3306/bin/ [root@centos7 ~]# cp mysqld /mysqldb/3307/bin/ [root@centos7 ~]# cp mysqld /mysqldb/3308/bin/ [root@centos7 ~]# vim /mysqldb/3306/bin/mysqld Port = 3306 [root@centos7 ~]# vim /mysqldb/3307/bin/mysqld Port = 3307 [root@centos7 ~]# vim /mysqldb/3308/bin/mysqld Port = 3308 5) Ändern Sie die Berechtigungen der Skriptdatei, um zu verhindern, dass das Passwort von anderen gesehen wird [root@centos7 ~]# chmod 700 /mysqldb/3306/bin/mysqld [root@centos7 ~]# chmod 700 /mysqldb/3307/bin/mysqld [root@centos7 ~]# chmod 700 /mysqldb/3308/bin/mysqld 6) Starten Sie den Dienst [root@centos7 ~]# service mysqld stop #Stellen Sie sicher, dass der ursprüngliche Dienst gestoppt wird und geben Sie Port 3306 frei [root@centos7 ~]# /mysqldb/3306/bin/mysqld start #Starten Sie den Dienst [root@centos7 ~]# /mysqldb/3307/bin/mysqld start [root@centos7 ~]# /mysqldb/3308/bin/mysqld start [root@centos7 ~]# ss -tnl #Wenn Sie sehen, dass die von den drei Instanzen abgehörten Ports alle geöffnet sind, bedeutet dies, dass der Dienst normal gestartet wird. LISTEN 0 80 :::3306 :::* HÖREN 0 80 :::3307 :::* HÖREN 0 80 :::3308 :::* 7) Verbindungstest [root@centos7 ~]# mysql -S /mysqldb/3306/socket/mysql.sock #Verwenden Sie -S, um die Socket-Datei anzugeben Serverversion: 10.2.15-MariaDB-log Quellverteilung MariaDB [(keine)]> Variablen wie '%port' anzeigen; #Überprüfen Sie, ob der Port 3306 ist +---------------------+--------+ | Variablenname | Wert | +---------------------+--------+ | extra_port | 0 | | Unterstützung für große Dateien | EIN | | Hafen | 3306 | | Berichtsport | 3306 | +---------------------+--------+ 4 Zeilen im Satz (0,00 Sek.) [root@centos7 ~]# mysql -S /mysqldb/3307/socket/mysql.sock #3307 und 3308 erneut verbinden und testen Serverversion: 10.2.15-MariaDB-log Quellverteilung MariaDB [(keine)]> Variablen wie „%port“ anzeigen; +---------------------+--------+ | Variablenname | Wert | +---------------------+--------+ | extra_port | 0 | | Unterstützung für große Dateien | EIN | | Hafen | 3307 | | Berichtsport | 3307 | +---------------------+--------+ 4 Zeilen im Satz (0,00 Sek.) [root@centos7 ~]# mysql -S /mysqldb/3308/socket/mysql.sock Serverversion: 10.2.15-MariaDB-log Quellverteilung MariaDB [(keine)]> Variablen wie „%port“ anzeigen; +---------------------+--------+ | Variablenname | Wert | +---------------------+--------+ | extra_port | 0 | | Unterstützung für große Dateien | EIN | | Hafen | 3308 | | Berichtsport | 3308 | +---------------------+--------+ 4 Zeilen im Satz (0,00 Sek.) Mehrere Instanzen wurden erfolgreich erstellt! 8) Verwenden Sie diesen Befehl, um die Instanz zu stoppen [root@centos7 ~]# /mysqldb/3306/bin/mysqld stop 9) Der letzte Schritt: Fügen Sie ein Passwort für den Root-Benutzer hinzu ~ [root@centos7 ~]# mysql -S /mysqldb/3307/socket/mysql.sock Serverversion: 10.2.15-MariaDB-log Quellverteilung MariaDB [(keine)]> mysql.user aktualisieren, Passwort=PASSWORT("Ihr_Passwort") festlegen, wobei Benutzer='root'; Abfrage OK, 4 Zeilen betroffen (0,00 Sek.) MariaDB [(keine)]> Berechtigungen leeren; Abfrage OK, 0 Zeilen betroffen (0,00 Sek.) MariaDB [(keine)]> wähle Benutzer, Host, Passwort aus mysql.user; +------+-----------+-------------------------------------------+ | Benutzer | Host | Passwort | +------+-----------+-------------------------------------------+ | root | lokaler Host | *9E72259BA9214F692A85B240647C4D95B0F2E08B | | root | centos7 | *9E72259BA9214F692A85B240647C4D95B0F2E08B | | root | 127.0.0.1 | *9E72259BA9214F692A85B240647C4D95B0F2E08B | | Wurzel | ::1 | *9E72259BA9214F692A85B240647C4D95B0F2E08B | | | lokaler Host | | | | centos7 | | +------+-----------+-------------------------------------------+ 6 Zeilen im Satz (0,00 Sek.) [root@centos7 ~]# mysql -S /mysqldb/3307/socket/mysql.sock -uroot -p'Ihr_Passwort' #Geben Sie das Passwort an und melden Sie sich erneut an OK~ Fügen Sie abschließend Ihr Passwort zur bin/mysqld-Skriptdatei hinzu, um zu verhindern, dass der Dienst nicht gestartet werden kann. Dies ist das Ende dieses Artikels über die Konfiguration mehrerer MySQL-Instanzen der Serie 2. Weitere Informationen zur Konfiguration mehrerer MySQL-Instanzen finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen! Das könnte Sie auch interessieren:
|
<<: Detaillierte Erklärung der 4 Codes, die die Website schwarz, weiß und grau machen
>>: So geben Sie Flash-Seiten über Überprüfungsmethoden in Website-Standards frei
Da ich immer vscode zur Entwicklung von Front-End...
Zeit(); Funktion Funktionsprototyp: time_t time(t...
Inhaltsverzeichnis Vorwort: Verschlüsselungsalgor...
1. Verwenden Sie die SELECT-Klausel, um mehrere T...
Inhaltsverzeichnis 1. Alles auswählen 2. Erhöhen ...
Es gibt viele Versionen der Java-Sprache. Zusätzl...
In diesem Artikelbeispiel wird der spezifische Co...
Plattformbereitstellung 1. JDK installieren Schri...
1. Einführung in Docker 1.1 Virtualisierung 1.1.1...
Da das Projekt einen Fragebogen erfordert, der Kun...
In Tomcat ist JSP nicht verstümmelt, aber HTML-Ch...
Hintergrund: Position: Sticky wird auch Sticky-Po...
1. Die Div-CSS-Maushandform ist Cursor:Zeiger; 2. ...
1. Installationspaket MySQL-Dienst-Downloadadress...
Inhaltsverzeichnis Bedingte Kompilierung Seitenla...