Konfiguration und Betrieb: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
 
(11 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 7: Zeile 7:
 
== Installation von MariaDB ==
 
== Installation von MariaDB ==
 
=== Debian/Ubuntu ===
 
=== Debian/Ubuntu ===
* Installation der MariaDB-Server- und Client-Pakete:
+
;MariaDB-Server- und Client-Pakete installieren:
<pre>
+
* sudo apt update
sudo apt update
+
* sudo apt install mariadb-server mariadb-client
sudo apt install mariadb-server mariadb-client
+
;Dienst starten und aktivieren:
</pre>
+
* sudo systemctl start mariadb
* Dienst starten und aktivieren:
+
* sudo systemctl enable mariadb
<pre>
+
;Initiale Sicherheitskonfiguration ausführen:
sudo systemctl start mariadb
+
* sudo mysql_secure_installation
sudo systemctl enable mariadb
 
</pre>
 
* Initiale Sicherheitskonfiguration:
 
<pre>
 
sudo mysql_secure_installation
 
</pre>
 
  
 
=== RHEL/CentOS ===
 
=== RHEL/CentOS ===
* Repository hinzufügen und MariaDB installieren:
+
;Repository hinzufügen und MariaDB installieren:
<pre>
+
* sudo yum install mariadb-server mariadb
sudo yum install mariadb-server mariadb
+
;Dienst starten und aktivieren:
</pre>
+
* sudo systemctl start mariadb
* Dienst starten und aktivieren:
+
* sudo systemctl enable mariadb
<pre>
 
sudo systemctl start mariadb
 
sudo systemctl enable mariadb
 
</pre>
 
  
 
== Grundkonfiguration von MariaDB ==
 
== Grundkonfiguration von MariaDB ==
Zeile 46: Zeile 36:
  
 
== Benutzerverwaltung ==
 
== Benutzerverwaltung ==
* Neuer Benutzer mit allen Rechten für eine Datenbank:
+
;Neuen Benutzer mit allen Rechten für eine Datenbank erstellen:
<pre>
+
* CREATE USER 'admin'@'localhost' IDENTIFIED BY 'sicheresPasswort';
CREATE USER 'admin'@'localhost' IDENTIFIED BY 'sicheresPasswort';
+
* GRANT ALL PRIVILEGES ON testdb.* TO 'admin'@'localhost';
GRANT ALL PRIVILEGES ON testdb.* TO 'admin'@'localhost';
+
* FLUSH PRIVILEGES;
FLUSH PRIVILEGES;
+
;Benutzer und Rechte anzeigen:
</pre>
+
* SELECT User, Host FROM mysql.user;
* Benutzer und Rechte anzeigen:
+
* SHOW GRANTS FOR 'admin'@'localhost';
<pre>
 
SELECT User, Host FROM mysql.user;
 
SHOW GRANTS FOR 'admin'@'localhost';
 
</pre>
 
  
 
== Datenbankverwaltung ==
 
== Datenbankverwaltung ==
* Eine neue Datenbank erstellen:
+
;Neue Datenbank erstellen:
<pre>
+
* CREATE DATABASE beispieldb;
CREATE DATABASE beispieldb;
+
;Datenbank anzeigen:
</pre>
+
* SHOW DATABASES;
* Datenbank anzeigen:
+
;Eine Tabelle erstellen:
<pre>
+
* USE beispieldb;
SHOW DATABASES;
+
* CREATE TABLE kunden (id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(100), email VARCHAR(100));
</pre>
 
* Eine Tabelle erstellen:
 
<pre>
 
USE beispieldb;
 
CREATE TABLE kunden (
 
    id INT AUTO_INCREMENT PRIMARY KEY,
 
    name VARCHAR(100),
 
    email VARCHAR(100)
 
);
 
</pre>
 
  
 
== Backup und Wiederherstellung ==
 
== Backup und Wiederherstellung ==
* Vollständiges Backup einer Datenbank:
+
;Vollständiges Backup einer Datenbank erstellen:
<pre>
+
* mysqldump -u root -p beispieldb > beispieldb.sql
mysqldump -u root -p beispieldb > beispieldb.sql
+
;Wiederherstellung einer Datenbank:
</pre>
+
* mysql -u root -p beispieldb < beispieldb.sql
* Wiederherstellung einer Datenbank:
 
<pre>
 
mysql -u root -p beispieldb < beispieldb.sql
 
</pre>
 
  
 
== Replikation einrichten ==
 
== Replikation einrichten ==
Zeile 102: Zeile 74:
 
relay-log = /var/log/mysql/mysql-relay-bin.log
 
relay-log = /var/log/mysql/mysql-relay-bin.log
 
</pre>
 
</pre>
* Slave mit dem Master verbinden:
+
;Slave mit dem Master verbinden:
<pre>
+
* CHANGE MASTER TO MASTER_HOST='192.168.1.100', MASTER_USER='replication', MASTER_PASSWORD='passwort', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=154;
CHANGE MASTER TO MASTER_HOST='192.168.1.100', MASTER_USER='replication', MASTER_PASSWORD='passwort', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=154;
+
* START SLAVE;
START SLAVE;
+
* SHOW SLAVE STATUS;
SHOW SLAVE STATUS;
 
</pre>
 
  
 
== Performance-Optimierung ==
 
== Performance-Optimierung ==
* Optimierung der Speicherverwaltung:
+
* Speicherverwaltung optimieren:
 
<pre>
 
<pre>
 
innodb_buffer_pool_size = 2G
 
innodb_buffer_pool_size = 2G
 
innodb_log_file_size = 512M
 
innodb_log_file_size = 512M
 
</pre>
 
</pre>
* Abfragecache aktivieren:
+
;Abfragecache aktivieren:
<pre>
+
* query_cache_type = 1
query_cache_type = 1
+
* query_cache_size = 128M
query_cache_size = 128M
+
;Maximale Verbindungen erhöhen:
</pre>
+
* max_connections = 500
* Maximale Verbindungen erhöhen:
 
<pre>
 
max_connections = 500
 
</pre>
 
  
 
== Monitoring und Logging ==
 
== Monitoring und Logging ==
* Status der Datenbank prüfen:
+
;Status der Datenbank prüfen:
<pre>
+
* SHOW STATUS;
SHOW STATUS;
+
* SHOW VARIABLES;
SHOW VARIABLES;
+
;Fehlerprotokolle anzeigen:
</pre>
+
* tail -f /var/log/mysql/error.log
* Fehlerprotokolle anzeigen:
+
;Aktive Prozesse überwachen:
<pre>
+
* SHOW PROCESSLIST;
tail -f /var/log/mysql/error.log
 
</pre>
 
* Aktive Prozesse überwachen:
 
<pre>
 
SHOW PROCESSLIST;
 
</pre>
 
  
 
== Sicherheit ==
 
== Sicherheit ==
* Root-Zugriff auf localhost beschränken:
+
;Root-Zugriff auf localhost beschränken:
<pre>
+
* UPDATE mysql.user SET Host='localhost' WHERE User='root';
UPDATE mysql.user SET Host='localhost' WHERE User='root';
+
* FLUSH PRIVILEGES;
FLUSH PRIVILEGES;
+
;SSL-Verschlüsselung aktivieren:
</pre>
 
* SSL-Verschlüsselung aktivieren:
 
 
<pre>
 
<pre>
 
[mysqld]
 
[mysqld]
Zeile 152: Zeile 110:
 
ssl-key = /etc/mysql/ssl/server-key.pem
 
ssl-key = /etc/mysql/ssl/server-key.pem
 
</pre>
 
</pre>
 
== Aufgaben ==
 
* Erstelle eine Datenbank mit Benutzer und entsprechenden Rechten.
 
* Konfiguriere die Replikation zwischen zwei MariaDB-Servern.
 
* Optimiere die Performance-Einstellungen für große Abfragen.
 
* Setze ein Backup- und Wiederherstellungskonzept um.
 
  
 
== Fazit ==
 
== Fazit ==

Aktuelle Version vom 24. März 2025, 16:43 Uhr

Einführung

  • MariaDB ist ein relationales Datenbankmanagementsystem (RDBMS), das als Fork von MySQL entwickelt wurde.
  • Es bietet erweiterte Funktionen, höhere Performance und vollständige Open-Source-Lizenzierung (GPLv2).
  • MariaDB kann sowohl für kleine Anwendungen als auch für große, verteilte Systeme eingesetzt werden.

Installation von MariaDB

Debian/Ubuntu

MariaDB-Server- und Client-Pakete installieren
  • sudo apt update
  • sudo apt install mariadb-server mariadb-client
Dienst starten und aktivieren
  • sudo systemctl start mariadb
  • sudo systemctl enable mariadb
Initiale Sicherheitskonfiguration ausführen
  • sudo mysql_secure_installation

RHEL/CentOS

Repository hinzufügen und MariaDB installieren
  • sudo yum install mariadb-server mariadb
Dienst starten und aktivieren
  • sudo systemctl start mariadb
  • sudo systemctl enable mariadb

Grundkonfiguration von MariaDB

  • Die zentrale Konfigurationsdatei ist /etc/mysql/mariadb.conf.d/50-server.cnf (Debian) oder /etc/my.cnf.d/mariadb-server.cnf (RHEL).
  • Wichtige Parameter zur Konfiguration:
[mysqld]
bind-address = 127.0.0.1
max_connections = 200
default_storage_engine = InnoDB
innodb_buffer_pool_size = 1G
query_cache_size = 64M

Benutzerverwaltung

Neuen Benutzer mit allen Rechten für eine Datenbank erstellen
  • CREATE USER 'admin'@'localhost' IDENTIFIED BY 'sicheresPasswort';
  • GRANT ALL PRIVILEGES ON testdb.* TO 'admin'@'localhost';
  • FLUSH PRIVILEGES;
Benutzer und Rechte anzeigen
  • SELECT User, Host FROM mysql.user;
  • SHOW GRANTS FOR 'admin'@'localhost';

Datenbankverwaltung

Neue Datenbank erstellen
  • CREATE DATABASE beispieldb;
Datenbank anzeigen
  • SHOW DATABASES;
Eine Tabelle erstellen
  • USE beispieldb;
  • CREATE TABLE kunden (id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(100), email VARCHAR(100));

Backup und Wiederherstellung

Vollständiges Backup einer Datenbank erstellen
  • mysqldump -u root -p beispieldb > beispieldb.sql
Wiederherstellung einer Datenbank
  • mysql -u root -p beispieldb < beispieldb.sql

Replikation einrichten

  • MariaDB unterstützt Master-Slave- und Multi-Master-Replikation.
  • Beispielhafte Konfiguration für den Master:
[mysqld]
server-id = 1
log-bin = /var/log/mysql/mysql-bin.log
binlog-do-db = beispieldb
  • Konfiguration für den Slave:
[mysqld]
server-id = 2
relay-log = /var/log/mysql/mysql-relay-bin.log
Slave mit dem Master verbinden
  • CHANGE MASTER TO MASTER_HOST='192.168.1.100', MASTER_USER='replication', MASTER_PASSWORD='passwort', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=154;
  • START SLAVE;
  • SHOW SLAVE STATUS;

Performance-Optimierung

  • Speicherverwaltung optimieren:
innodb_buffer_pool_size = 2G
innodb_log_file_size = 512M
Abfragecache aktivieren
  • query_cache_type = 1
  • query_cache_size = 128M
Maximale Verbindungen erhöhen
  • max_connections = 500

Monitoring und Logging

Status der Datenbank prüfen
  • SHOW STATUS;
  • SHOW VARIABLES;
Fehlerprotokolle anzeigen
  • tail -f /var/log/mysql/error.log
Aktive Prozesse überwachen
  • SHOW PROCESSLIST;

Sicherheit

Root-Zugriff auf localhost beschränken
  • UPDATE mysql.user SET Host='localhost' WHERE User='root';
  • FLUSH PRIVILEGES;
SSL-Verschlüsselung aktivieren
[mysqld]
ssl-cert = /etc/mysql/ssl/server-cert.pem
ssl-key = /etc/mysql/ssl/server-key.pem

Fazit

  • MariaDB ist eine leistungsfähige Alternative zu MySQL mit vielen zusätzlichen Funktionen.
  • Die richtige Konfiguration kann Performance und Sicherheit erheblich verbessern.
  • Regelmäßige Wartung und Überwachung sind essenziell für den stabilen Betrieb.