Was ist MySQL?
MySQL ist ein schnelles, zuverlässiges, skalierbares und benutzerfreundliches relationales Open-Source-Datenbanksystem, das von Oracle unterstützt wird. MySQL Server wurde entwickelt, um geschäftskritische Produktionsanwendungen mit hoher Auslastung zu handhaben. Wenn Sie Websites oder Webanwendungen entwickeln, ist MySQL eine gute Wahl. MySQL ist eine wesentliche Komponente des LAMP-Stacks, der Linux, Apache, MySQL und PHP umfasst.
Warum den Bitnami MySQL Stack verwenden?
Der Bitnami MySQL Stack ist immer aktuell und sicher. Die Installation und Konfiguration des Stacks ist vollständig automatisiert, sodass jeder, auch diejenigen, die nicht sehr technisch versiert sind, sie leicht zum Laufen bringen kann.
Bitnami MySQL Tutorials und Dokumentation
- Bitnami-MySQL-Seite
- Bitnami MySQL-Benutzerhandbuch
- Bitnami-MySQL-Änderungsprotokoll
- So erstellen Sie eine MySQL-Datenbank und einen Benutzer
- So ändern Sie das MySQL-Administratorkennwort
- Zur Sicherung von MySQL
- So führen Sie Dump- und Wiederherstellungs-MySQL-Sicherungen durch
- So konfigurieren Sie MySQL Workbench
- Zur Überprüfung der MySQL-Protokolldatei
Wo finde ich MySQL-Root-Anmeldeinformationen?
Die Instanz-/Knoten-/Maschinen-Root-Anmeldeinformationen werden an Ihre registrierte E-Mail-Adresse gesendet, sobald die MySQL-Instanz gestartet wird.
Die MySQL-Anmeldeinformationen werden in einer eigenständigen Datei gespeichert. Führen Sie die folgenden Schritte aus, um die Anmeldeinformationen jederzeit abzurufen:
- Verbinden Sie sich über SSH mit root mit der Instanz/dem Knoten/der Maschine Benutzerdaten.
- Führen Sie den folgenden Befehl aus, um Ihre Anwendungsanmeldeinformationen abzurufen:
cat /home/bitnami/bitnami_credentials
Hinweis:Für MySQL-Benutzer ist root, kopieren Sie von oben bitte nur das Passwort
Wie man den MySQL 3306-Port mit der UFW-Firewall öffnet
Standardmäßig ist der Bitnami-MySQL-Port so konfiguriert, dass er nur in localhost zugänglich ist. Um den MySQL-Port für das offene Internet oder nur für bestimmte IP-Adressen zu öffnen, führen Sie bitte die folgenden Schritte aus.
1.Verbinden Sie sich über SSH mit root mit der Instanz/dem Knoten/der Maschine Benutzeranmeldeinformationen.
Sicherheitsrisiko Hinweis:Das Portieren dieses Datenbanknetzwerks in das öffentliche Internet ist ein erhebliches Sicherheitsrisiko. Es wird dringend empfohlen, den MySQL-Port nur für vertrauenswürdige IP-Adressen zu öffnen.
2 (a) Führen Sie den folgenden Befehl aus, um einen Port zum Internet zu öffnen:
ufw allow mysql/tcp
2 (b) Führen Sie den folgenden Befehl aus, um einen Port zu einer bestimmten IP-Adresse zu öffnen
ufw allow from IPADDRESS to any port 3306 proto tcp
Wie verbinde ich eine MySQL-Datenbank?
Nachdem Sie
- Verbinden Sie sich über SSH mit root mit der Instanz/dem Knoten/der Maschine Benutzerdaten.
ssh root@<public IP>
- Führen Sie den folgenden Befehl aus, um sich bei der MySQL-Datenbank anzumelden
# mysql -u root -p
Sie werden aufgefordert, das Stammverzeichnis einzugeben Benutzer-Passwort…
Wie kann ich Remote-IP-Adressen-MYSQL-Zugriff zulassen?
Standardmäßig erlaubt MySQL Remoteclients nicht, sich mit der MySQL-Datenbank zu verbinden. Wenn Sie versuchen, aus der Ferne auf die MYSQL-Datenbank Ihres Servers zuzugreifen, ist es auffällig, dass Sie eine ähnliche Antwort erhalten:
“ERROR 1130: Host is not allowed to connect to this MySQL server”
Example:
$ mysql -h XXX.168.X.8 -u root -p
Enter password:
ERROR 1130: Host 'xxx.xx.x.x' is not allowed to connect to this MySQL server
Lösung :
Um diesen Fehler zu umgehen, können Sie einem bestimmten Client
$ /opt/bitnami/mysql/bin/mysql -u root -p
Enter password:
mysql> use mysql
mysql> GRANT ALL ON *.* to root@'XXX.XXX.X.X' IDENTIFIED BY 'your-root-password';
mysql> FLUSH PRIVILEGES;
Ersetzen Sie „XXX.XXX.X.X“ im obigen Beispiel durch Ihre statische IP und Ihr Root-Passwort anstelle von „Ihr-Root-Passwort“.
Hinweis:Dies funktioniert nur, wenn Sie Ihr Internet auf einem statischen IP-basierten Dienst betreiben.
Eine statische IP-Adresse ist eine Nummer, die einem Computer von einem Internetdienstanbieter (ISP) als permanente Adresse im Internet zugewiesen wird.
Die Ausführung der obigen Befehle gewährt Zugriff auf eine bestimmte statische IP, mit der auf MYSQL remote zugegriffen werden kann.
Aktualisieren Sie außerdem die Firewall-Regeln, um sicherzustellen, dass Port Nr. 3306 in der UFW auf dem Server geöffnet ist, auf dem das
So optimieren Sie die MySQL-Leistung mit MySQLTuner
Tools, die bei der Optimierung von MySQL helfen können:
Um festzustellen, ob Ihre MySQL-Datenbank neu konfiguriert werden muss, sehen Sie sich am besten an, wie Ihre Ressourcen jetzt funktionieren. Dies kann mit dem Top-Befehl oder mit dem Überwachungsdienst von E2E erfolgen. Zumindest sollten Sie sich mit der RAM- und CPU-Auslastung Ihres Servers vertraut machen, die Sie mit diesen Befehlen ermitteln können:
#echo [PID] [MEM] [PATH] && ps aux | awk '{print $2, $4, $11}' | sort -k2rn | head -n 20
#ps -eo pcpu,pid,user,args | sort -k 1 -r | head -20
MySQLTuner:
Das MySQLTuner-Skript bewertet Ihre MySQL-
- Zur Installation von
mysqltuner , laden Sie denmysqltuner herunter .pl-Skript. Sie können es beispielsweise mitwget herunterladen :
#wget https://raw.github.com/rackerhacker/MySQLTuner-perl/master/mysqltuner.pl
- Um einen MySQL-Server zu überwachen, der von einem Bitnami-Stack installiert wurde, übergeben Sie die Verbindungswerte wie unten gezeigt über die Befehlszeile. Beachten Sie, dass Perl auf dem System installiert sein muss.
#perl mysqltuner.pl --socket /opt/bitnami/mysql/tmp/mysql.sock
- Das Skript gibt Ergebnisse zurück, die der folgenden Ausgabe ähneln:
MySQLTuner bietet Vorschläge zur Verbesserung der Datenbankleistung. Wenn Sie vorsichtig sind, Ihre Datenbank selbst zu aktualisieren, ist das Befolgen der Vorschläge von MySQLTuner eine der sichereren Möglichkeiten, Ihre Datenbankleistung zu verbessern.
MySQL optimieren:
Achten Sie beim Ändern der MySQL-Konfiguration auf die Änderungen und deren Auswirkungen auf Ihre Datenbank. Selbst wenn Sie den Anweisungen von Programmen wie MySQLTuner folgen, ist es am besten, ein gewisses Verständnis des Prozesses zu haben.
Die Bitnami-MySQL-Konfigurationsdatei, die an folgendem Speicherort gespeichert ist:/opt/bitnami/mysql/my.cnf.
Hinweis:Erstellen Sie vor dem Aktualisieren Ihrer MySQL-Konfiguration eine Sicherungskopie von
# cp /opt/bitnami/mysql/my.cnf ~/my.cnf.backup
Best Practice empfiehlt, Änderungen einzeln vorzunehmen und den Server nach jeder Änderung zu überwachen. Sie sollten MySQL nach jeder Änderung neu starten:
Starten Sie den Server neu:
# /opt/bitnami/ctlscript.sh restart mysql
Achten Sie beim Ändern von Werten in der Datei my.cnf darauf, dass die Zeile, die Sie ändern, nicht mit dem Präfix Raute (#) auskommentiert wurde.
key_buffer
Das Ändern des key_buffer weist MySQL mehr Speicher zu, was Ihre Datenbanken erheblich beschleunigen kann, vorausgesetzt, Sie haben den Speicher frei. Die key_buffer-Größe sollte im Allgemeinen nicht mehr als 25 Prozent des Systemspeichers beanspruchen, wenn die MyISAM-Tabellen-Engine verwendet wird, und bis zu 70 Prozent für InnoDB. Wenn der Wert zu hoch eingestellt ist, werden Ressourcen verschwendet.
Laut MySQL-Dokumentation wird für Server mit 256 MB (oder mehr) RAM mit vielen Tabellen eine Einstellung von 64 MB empfohlen. Server mit 128 MB RAM und weniger Tabellen können auf 16 MB, den Standardwert, eingestellt werden. Bei Websites mit noch weniger Ressourcen und Tabellen kann dieser Wert niedriger eingestellt werden.
max_allowed_packet
Mit diesem Parameter können Sie die maximale Größe eines sendbaren Pakets festlegen. Ein Paket ist ein einzelner SQL-Zustand, eine einzelne Zeile, die an einen Client gesendet wird, oder ein Protokoll, das von einem Master an einen Slave gesendet wird. Wenn Sie wissen, dass Ihr MySQL-Server große Pakete verarbeiten wird, erhöhen Sie diese am besten auf die Größe Ihres größten Pakets. Sollte dieser Wert zu klein eingestellt werden, erhalten Sie einen Fehler in Ihrem Fehlerprotokoll.
thread_stack
Dieser Wert enthält die Stapelgröße für jeden Thread. MySQL hält den Standardwert der thread_stack-Variablen für ausreichend für den normalen Gebrauch; Sollte jedoch ein Fehler bezüglich des thread_stack protokolliert werden, kann dieser erhöht werden.
thread_cache_size
Wenn thread_cache_size „ausgeschaltet“ (auf 0 gesetzt) ist, muss für jede neue Verbindung, die hergestellt wird, ein neuer Thread erstellt werden. Beim Lösen der Verbindungen wird das Gewinde zerstört. Andernfalls legt dieser Wert die Anzahl nicht verwendeter Threads fest, die in einem Cache gespeichert werden, bis sie für eine Verbindung verwendet werden müssen. Im Allgemeinen hat diese Einstellung nur geringe Auswirkungen auf die Leistung, es sei denn, Sie erhalten Hunderte von Verbindungen pro Minute. Zu diesem Zeitpunkt sollte dieser Wert erhöht werden, damit die meisten Verbindungen über zwischengespeicherte Threads hergestellt werden können.
InnoDB-Pufferpool
Der InnoDB-Pufferpool ist der Speicherplatz, der viele In-Memory-Datenstrukturen von InnoDB, Puffern, Caches, Indizes und sogar Zeilendaten enthält. innodb_buffer_pool_size ist der MySQL-Konfigurationsparameter, der die Speichermenge angibt, die MySQL dem InnoDB-Pufferpool zuweist. Dies ist eine der wichtigsten Einstellungen in der MySQL-Hosting-Konfiguration und sollte basierend auf dem verfügbaren System-RAM konfiguriert werden.
80 % ist vielleicht ein guter Anfang und eine Faustregel. Sie möchten sicher sein, dass der Server über ausreichend freien RAM für das Betriebssystem und die normalerweise unbekannte Arbeitslast verfügt. Wie wir jedoch unten sehen können, ist es umso wahrscheinlicher, dass die Regel RAM verschwendet, je größer der Server ist. Ich denke, für die meisten Leute beginnt und endet es mit der Faustregel, hauptsächlich weil das Ändern des InnoDB-Pufferpools in aktuellen Versionen einen Neustart erfordert.
Gesamter Server-RAM-Pufferpool mit 80 % verbleibendem RAM in der Regel
1G 800 MB 200 MB
16G 13G 3G
32G 26G 6G
64G 51G 13G
128G 102G 26G
256G 205G 51G
512G 409G 103G
1024G 819G 205G
Was ist also eine bessere Faustregel? Meine Regel lautet, dass Sie innodb_buffer_pool_size so groß wie möglich einstellen, ohne Swap zu verwenden, wenn das System die Produktions-Workload ausführt. Das klingt im Prinzip gut, aber auch hier erfordert es eine Reihe von Neustarts und ist möglicherweise leichter gesagt als getan.
max_connections
Dieser Parameter legt die maximale Anzahl gleichzeitiger Verbindungen fest. Es ist am besten, die maximale Anzahl von Verbindungen zu berücksichtigen, die Sie in der Vergangenheit hatten, bevor Sie diese Zahl festlegen, damit Sie einen Puffer zwischen dieser oberen Zahl und dem Wert von max_connections haben. Beachten Sie, dass dies nicht die maximale Anzahl von Benutzern auf Ihrer Website auf einmal angibt; vielmehr zeigt es die maximale Anzahl von Benutzern, die gleichzeitig Anfragen stellen.
table_cache
Dieser Wert sollte höher gehalten werden als Ihr open_tables-Wert. Um diesen Wert zu ermitteln, verwenden Sie:
ZEIGE STATUS WIE „open%“;