MySQL-Tutorial zum Bereitstellen mehrerer Instanzen auf einer einzigen Maschine mit mysqld_multi

MySQL-Tutorial zum Bereitstellen mehrerer Instanzen auf einer einzigen Maschine mit mysqld_multi

Vorwort

Jeder sollte erkannt haben, dass mit der Entwicklung der Hardware Multi-Core-Linux-Systeme zum allgemeinen Trend geworden sind und MySQL ein Single-Process-Multithread-System ist, sodass die inhärente Multi-Process-Auslastung nicht sehr hoch ist. Obwohl Version 5.6 in dieser Hinsicht viele Verbesserungen gebracht hat, sind noch nicht 100 % erreicht. Um die Systemressourcen voll auszunutzen, verfügt MySQL daher über eine eigene Ergänzung, nämlich die Bereitstellung mehrerer Instanzen, eine Instanz pro Port.

mysqld_multi ist für die Verwaltung mehrerer mysqld-Prozesse konzipiert, die auf derselben Maschine ausgeführt werden, wobei jeder Prozess unterschiedliche Socket-Dateien verwendet und auf unterschiedlichen Ports lauscht. mysqld_multi kann diese mysqld-Prozesse stapelweise starten, herunterfahren oder ihren Status melden.

Schauen wir uns ohne weitere Umschweife die ausführliche Einführung an.

1. MySQL-Kompilierung und -Installation:

cd /usr/local/src
wget http://mirrors.sohu.com/mysql/MySQL-5.6/mysql-5.6.35-linux-glibc2.5-x86_64.tar.gz 
tar zxvf mysql-5.6.35-linux-glibc2.5-x86_64.tar.gz
mv mysql-5.6.35-linux-glibc2.5-x86_64 /usr/local/mysql
cd /usr/local/mysql
Benutzeradd MySQL
mkdir -p /data/mysql
chown -R mysql:mysql /data/mysql
./scripts/mysql_install_db --user=mysql --datadir=/data/mysql
cp support-files/my-default.cnf /etc/my.cnf
cp support-files/mysql.server /etc/init.d/mysqld

2. Bereiten Sie die erste Multi-Instanz 3307 vor

2.1 Erstellen Sie ein Verzeichnis:

mkdir /usr/local/mysql3307
chown -R mysql.mysql /usr/local/mysql3307/
mkdir -p /data/mysql3307
chown -R mysql.mysql /data/mysql3307
mkdir -p /home/data/mysql3307/binlog
chown -R mysql.mysql /home/data/mysql3307

2.2 Konfigurationsdatei

[root@zhdya01 ~]# vim /etc/my.cnf
# Hinweise zum Ändern der Einstellungen finden Sie unter
# http://dev.mysql.com/doc/refman/5.6/en/server-configuration-defaults.html
# *** BEARBEITEN SIE DIESE DATEI NICHT. Es handelt sich um eine Vorlage, die in das
# *** Standardspeicherort während der Installation und wird ersetzt, wenn Sie
# *** Upgrade auf eine neuere Version von MySQL.
[mysqld_multi]
mysqld = /usr/local/mysql/bin/mysqld_safe
mysqladmin = /usr/local/mysql/bin/mysqladmin
log = /var/log/mysqld_multi.log
[mysqld1]
Socket = /usr/local/mysql3307/mysql.sock
Port = 3307
pid-Datei = /usr/local/mysql3307/mysql.pid
Datenverzeichnis = /data/mysql3307
log_bin=/home/data/mysql3307/binlog
Server-ID = 1
innodb_buffer_pool_size = 128 M
innodb_flush_log_at_trx_commit = 0

2.3 Initialisieren der Datenbank

/usr/local/mysql/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql3307

3. Bereiten Sie die zweite Multi-Instanz 3308 vor

3.1 Verzeichnis erstellen:

mkdir /usr/local/mysql3308
chown -R mysql.mysql /usr/local/mysql3308/
mkdir -p /data/mysql3308
chown -R mysql.mysql /data/mysql3308
mkdir -p /home/data/mysql3308/binlog
chown -R mysql.mysql /home/data/mysql3308

3.2 Konfigurationsdatei

[root@zhdya01 ~]# vim /etc/my.cnf
# Hinweise zum Ändern der Einstellungen finden Sie unter
# http://dev.mysql.com/doc/refman/5.6/en/server-configuration-defaults.html
# *** BEARBEITEN SIE DIESE DATEI NICHT. Es handelt sich um eine Vorlage, die in das
# *** Standardspeicherort während der Installation und wird ersetzt, wenn Sie
# *** Upgrade auf eine neuere Version von MySQL.
[mysqld_multi]
mysqld = /usr/local/mysql/bin/mysqld_safe
mysqladmin = /usr/local/mysql/bin/mysqladmin
log = /var/log/mysqld_multi.log
[mysqld1]
Socket = /usr/local/mysql3307/mysql.sock
Port = 3307
pid-Datei = /usr/local/mysql3307/mysql.pid
Datenverzeichnis = /data/mysql3307
log_bin=/home/data/mysql3307/binlog
Server-ID = 1
innodb_buffer_pool_size = 128 M
innodb_flush_log_at_trx_commit = 0
[mysqld2]
Socket = /usr/local/mysql3308/mysql.sock
Port = 3308
pid-Datei = /usr/local/mysql3308/mysql.pid
Datenverzeichnis = /data/mysql3308
log_bin=/home/data/mysql3308/binlog
Server-ID = 2
innodb_buffer_pool_size = 128 M
innodb_flush_log_at_trx_commit = 0

3.3 Initialisieren der Datenbank

/usr/local/mysql/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql3308

4. Mehrere Instanzen starten

/etc/init.d/mysqld starten
mysqld_multi --defaults-extra-file=/etc/my.cnf start 1,2
[root@zhdya01 bin]# !net
netstat -lntp -lntp
Aktive Internetverbindungen (nur Server)
Proto Recv-Q Send-Q Lokale Adresse Fremde Adresse Status PID/Programmname 
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1241/sshd  
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 2087/Master  
tcp6 0 0 :::3306 :::* LISTEN 4406/mysqld  
tcp6 0 0 :::3307 :::* LISTEN 4197/mysqld  
tcp6 0 0 :::3308 :::* LISTEN 3359/mysqld  
tcp6 0 0 :::8080 :::* LISTEN 2222/java  
tcp6 0 0 :::22 :::* LISTEN 1241/sshd  
tcp6 0 0 ::1:25 :::* LISTEN 2087/Master

5. Überprüfen Sie den Startstatus

[root@zhdya01 bin]# mysqld_multi --defaults-extra-file=/etc/my.cnf Bericht
Melden von MySQL-Servern
MySQL-Server aus der Gruppe: mysqld1 läuft
MySQL-Server aus der Gruppe: mysqld2 läuft

6. Stoppen Sie mehrere Instanzen

[root@zhdya01 bin]# mysqld_multi --defaults-extra-file=/etc/my.cnf stop 1,2
[root@zhdya01 bin]# mysqld_multi --defaults-extra-file=/etc/my.cnf Bericht
Melden von MySQL-Servern
MySQL-Server aus der Gruppe: mysqld1 läuft nicht
MySQL-Server aus der Gruppe: mysqld2 läuft nicht

7. Melden Sie sich separat bei der MySQL-Instanz an

[root@zhdya01 bin]# mysql --socket=/usr/local/mysql3307/mysql.sock
Willkommen beim MySQL-Monitor. Befehle enden mit ; ​​oder \g.
Ihre MySQL-Verbindungs-ID ist 1
Serverversion: 5.6.35-log MySQL Community Server (GPL)
Copyright (c) 2000, 2016, Oracle und/oder seine Tochtergesellschaften. Alle Rechte vorbehalten.
Oracle ist eine eingetragene Marke der Oracle Corporation und/oder ihrer
Tochtergesellschaften. Andere Namen können Marken ihrer jeweiligen
Eigentümer.
Geben Sie „help;“ oder „\h“ ein, um Hilfe zu erhalten. Geben Sie „\c“ ein, um die aktuelle Eingabeanweisung zu löschen.
MySQL>

Zusammenfassen

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, dass der Inhalt dieses Artikels einen gewissen Lernwert für Ihr Studium oder Ihre Arbeit hat. Wenn Sie Fragen haben, können Sie eine Nachricht hinterlassen. Vielen Dank für Ihre Unterstützung von 123WORDPRESS.COM.

Das könnte Sie auch interessieren:
  • Schritte zur Bereitstellung von MySQL 8.0.20 auf einem einzelnen Computer und mehreren Instanzen

<<:  Nginx-Konfiguration domänenübergreifende Anforderung Access-Control-Allow-Origin * detaillierte Erklärung

>>:  So implementieren Sie eine Array-Lazy-Evaluation-Bibliothek in JavaScript

Artikel empfehlen

Tiefgreifendes Verständnis der Verwendung von r2dbc in MySQL

Einführung MySQL sollte eine sehr häufig verwende...

Vue implementiert die Drag & Drop-Funktion für Bilder

In diesem Artikelbeispiel wird der spezifische Co...

Einführung in die Verwendung des HTML-Basistags target=_parent

Der <base>-Tag gibt die Standardadresse oder...

CSS3 erzielt einen coolen 3D-Rotationsperspektiveneffekt

CSS3 erreicht coole 3D-Rotationsperspektive 3D-An...

Element verwendet Skripte, um automatisch neue Komponenten zu erstellen

Inhaltsverzeichnis Hintergrund Wie funktioniert d...

CentOS8 - bash: verstümmelte Zeichen und Lösungen

Diese Situation tritt normalerweise auf, weil das...

Verwendung und Ausführungsprozess des HTTP-Moduls im Knoten

Welche Rolle spielt http im Knoten? Die Aufgabe d...

Die Tücken der automatischen Inkrementierung numerischer MySQL-Typen

Beim Entwurf von Tabellenstrukturen gehören numer...

So verwenden Sie Docker+DevPi zum Erstellen einer lokalen PyPi-Quelle

Vor einiger Zeit musste ich für die Entwicklung h...

Testfragen und Referenzantworten zum Thema Webdesign und Produktion

<br />Test zu Webdesign und -produktion, Tei...

React antd realisiert dynamische Vergrößerung und Verkleinerung der Form

Beim Schreiben dynamischer Formulare bin ich zuvo...