Zum Inhalt springen
← Alle Leistungen Entwicklung & Daten

Datenbank-Management

Datenbank-Administration & Optimierung — von PostgreSQL 16 und MariaDB über Microsoft SQL Server Enterprise bis hin zu Performance Tuning, Backup-Strategien und sicherer Datenbankmigration.

Steckbrief
KategorieDatenbank-Management & Administration
RDBMSPostgreSQL 16 / MariaDB 11 / MSSQL 2022
ReplikationStreaming / Galera / Always On AG
BackupWAL Archiving / mysqldump / PITR
VerschlüsselungTDE / SSL/TLS 1.3 / Column-Level
Standard-Ports5432 (PG) / 3306 (MySQL) / 1433 (MSSQL)
ToolspgAdmin 4 / DBeaver / SSMS
Monitoringpg_stat_statements / PMM / Zabbix
HochverfügbarkeitPatroni / Galera / FCI + AG
PartitionierungRange / List / Hash (deklarativ)

PostgreSQL Deep-Dive

PostgreSQL ist das fortschrittlichste Open-Source-RDBMS und bietet Enterprise-Features wie MVCC, deklarative Partitionierung, Logical Replication und eine erweiterbare Architektur. Version 16 bringt parallele Abfrageverarbeitung, verbesserte Bulk-Loads und erweiterte Monitoring-Capabilities. Für TYPO3-Instanzen mit hohem Traffic ist PostgreSQL die bevorzugte Datenbank — insbesondere dank des ausgereiften Query Planners und der JSONB-Unterstützung.

  • Tuning der postgresql.conf: Die wichtigsten Parameter für einen Server mit 32 GB RAM und SSD: shared_buffers = 8GB (25 % des RAM), effective_cache_size = 24GB (75 %), work_mem = 256MB (Vorsicht bei vielen parallelen Queries), maintenance_work_mem = 2GB, wal_buffers = 64MB, random_page_cost = 1.1 (SSD), effective_io_concurrency = 200 (SSD/NVMe). Überwachung via pg_stat_user_tables zeigt Sequential-vs.-Index-Scan-Ratio.
  • Streaming-Replikation: Asynchrone Streaming-Replikation richtet einen Hot-Standby ein, der Leseabfragen bedient. Konfiguration auf dem Primary: wal_level = replica, max_wal_senders = 5, Replikationsbenutzer mit CREATE ROLE replicator REPLICATION LOGIN. Auf dem Standby: primary_conninfo = 'host=primary port=5432 user=replicator' in postgresql.auto.conf. Synchrone Replikation (synchronous_standby_names = 'standby1') garantiert Zero-Data-Loss, erhöht aber die Write-Latenz.
  • Deklarative Partitionierung: Große Tabellen (>100 Mio. Zeilen) profitieren von Partitionierung. PostgreSQL unterstützt RANGE (PARTITION BY RANGE (created_at)), LIST und HASH. Praxisbeispiel: CREATE TABLE log_entries (...) PARTITION BY RANGE (log_date) mit monatlichen Partitionen: CREATE TABLE log_2026_01 PARTITION OF log_entries FOR VALUES FROM ('2026-01-01') TO ('2026-02-01'). Automatisierte Partition-Erstellung via pg_partman-Extension.
  • pgBouncer & Connection Pooling: PostgreSQL erstellt pro Verbindung einen Prozess (~10 MB RAM). Bei 500+ gleichzeitigen Verbindungen wird pgBouncer als Connection Pooler vorgeschaltet. Konfiguration in pgbouncer.ini: pool_mode = transaction (empfohlen für Webanwendungen), max_client_conn = 1000, default_pool_size = 50. TYPO3 verbindet sich auf den pgBouncer-Port (6432) statt direkt auf PostgreSQL (5432).

MariaDB/MySQL Hochverfügbarkeit

MariaDB und MySQL bieten mehrere Replikations- und Clustering-Optionen für hochverfügbare Datenbankumgebungen. Von der klassischen Master-Slave-Replikation über Galera Cluster (synchrones Multi-Master) bis zu MySQL Group Replication — jede Topologie hat spezifische Vor- und Nachteile hinsichtlich Konsistenz, Performance und Komplexität.

  • Galera Cluster: Galera implementiert synchrone Multi-Master-Replikation über das wsrep-Protokoll. Mindestens 3 Knoten sind erforderlich (Quorum). Konfiguration in my.cnf: wsrep_on=ON, wsrep_cluster_address=gcomm://node1,node2,node3, wsrep_provider=/usr/lib/libgalera_smm.so, wsrep_sst_method=mariabackup. Wichtig: nur InnoDB-Tabellen, jede Tabelle muss einen Primary Key haben. Der erste Knoten wird mit galera_new_cluster gebootstrapped.
  • MySQL Group Replication: Group Replication (GR) ist MySQLs native Multi-Master-Lösung mit Paxos-basiertem Konsensus. Konfiguration: group_replication_group_name="aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee" (UUID), group_replication_start_on_boot=OFF (manueller Start empfohlen), group_replication_local_address="node1:33061". Der Single-Primary-Mode (Default) erlaubt Writes nur auf einem Knoten, Multi-Primary-Mode ermöglicht Writes auf allen Knoten mit Conflict Detection.
  • ProxySQL als Load Balancer: ProxySQL verteilt Datenbankverbindungen intelligent auf Cluster-Knoten. Die Konfiguration erfolgt über die Admin-Schnittstelle (Port 6032): INSERT INTO mysql_servers (hostgroup_id, hostname, port) VALUES (10, 'node1', 3306). Query Rules routen Reads auf alle Knoten (hostgroup_id=20) und Writes auf den Primary (hostgroup_id=10). Health Checks erkennen ausgefallene Knoten und entfernen sie automatisch aus dem Pool.
  • MaxScale (MariaDB): MariaDB MaxScale ist ein intelligenter Database-Proxy mit Readwritesplit-Router, der Queries automatisch auf Master (Write) und Slaves (Read) verteilt. Konfiguration in maxscale.cnf: [ReadWriteSplit-Service] mit type=service, router=readwritesplit, servers=db1,db2,db3. MaxScale bietet zusätzlich Query-Firewall, Binlog-Server und Connection-Failover mit automatischer Master-Erkennung.

Microsoft SQL Server Enterprise

Microsoft SQL Server 2022 ist die Standardwahl für Windows-basierte Enterprise-Umgebungen und bietet mit Always On Availability Groups, Columnstore-Indizes und In-Memory-OLTP leistungsstarke Features. Die Integration mit Azure Arc ermöglicht hybrides Management, während die native Linux-Unterstützung plattformübergreifende Deployments erlaubt.

  • Always On Availability Groups: AGs bieten Hochverfügbarkeit und Disaster Recovery durch synchrone/asynchrone Replikation auf Datenbankebene. Konfiguration: Windows Server Failover Cluster (WSFC) als Basis, Endpoint-Erstellung (CREATE ENDPOINT hadr_endpoint STATE=STARTED AS TCP (LISTENER_PORT=5022)), AG-Definition mit CREATE AVAILABILITY GROUP [AG1] WITH (AUTOMATED_BACKUP_PREFERENCE=SECONDARY) FOR DATABASE [DB1] REPLICA ON 'Node1' WITH (ENDPOINT_URL='TCP://node1:5022', AVAILABILITY_MODE=SYNCHRONOUS_COMMIT, FAILOVER_MODE=AUTOMATIC).
  • Columnstore-Indizes: Clustered Columnstore Indexes (CCI) komprimieren Daten spaltenbasiert und beschleunigen analytische Abfragen (Data Warehouse, Reporting) um den Faktor 10–100. Erstellung: CREATE CLUSTERED COLUMNSTORE INDEX cci_sales ON dbo.SalesHistory. Für HTAP-Szenarien (Hybrid Transactional/Analytical) wird ein Nonclustered Columnstore Index auf eine OLTP-Tabelle gelegt: CREATE NONCLUSTERED COLUMNSTORE INDEX ncci_orders ON dbo.Orders (OrderDate, Amount, ProductID).
  • In-Memory OLTP: Memory-optimierte Tabellen (Hekaton) eliminieren Latch-Contention und erreichen Millionen TPS. Erstellung: CREATE TABLE dbo.SessionState (...) WITH (MEMORY_OPTIMIZED=ON, DURABILITY=SCHEMA_AND_DATA). Nativ kompilierte Stored Procedures (WITH NATIVE_COMPILATION, SCHEMABINDING) verarbeiten Transaktionen direkt im Speicher. Voraussetzung: eine MEMORY_OPTIMIZED_DATA Filegroup auf schnellem Storage (NVMe).
  • Query Store & Performance: Der Query Store erfasst Abfragepläne, Laufzeitstatistiken und Wartezeiten. Aktivierung: ALTER DATABASE [DB1] SET QUERY_STORE = ON (OPERATION_MODE = READ_WRITE, MAX_STORAGE_SIZE_MB = 2048). Regressierte Queries werden über sys.query_store_plan identifiziert und durch Plan-Forcing korrigiert: sp_query_store_force_plan @query_id = 42, @plan_id = 1. Intelligent Query Processing (IQP) in SQL 2022 optimiert Batch-Mode, Adaptive Joins und Memory Grants automatisch.

Datenbank-Sicherheit

Datenbanksicherheit umfasst Zugangskontrolle, Verschlüsselung, Auditing und Compliance-Maßnahmen auf mehreren Ebenen. Von der Netzwerksegmentierung über TLS-verschlüsselte Verbindungen bis zur spaltenweisen Datenverschlüsselung — ein mehrschichtiger Ansatz (Defense in Depth) ist unverzichtbar, insbesondere im Kontext von DSGVO und branchenspezifischen Regulierungen.

  • Transparent Data Encryption (TDE): TDE verschlüsselt Datenbankdateien im Ruhezustand (Data-at-Rest) ohne Anwendungsänderungen. PostgreSQL: pgcrypto-Extension für Column-Level-Encryption (pgp_sym_encrypt(data, key)) oder pg_tde (Percona). SQL Server: CREATE DATABASE ENCRYPTION KEY WITH ALGORITHM = AES_256, ALTER DATABASE [DB1] SET ENCRYPTION ON. MariaDB: plugin_load_add = file_key_management mit innodb_encrypt_tables = FORCE.
  • Row-Level Security (RLS): RLS schränkt den Zugriff auf Zeilenebene ein, basierend auf dem angemeldeten Benutzer. PostgreSQL: ALTER TABLE customers ENABLE ROW LEVEL SECURITY, CREATE POLICY tenant_policy ON customers USING (tenant_id = current_setting('app.tenant_id')::int). SQL Server: CREATE SECURITY POLICY TenantFilter ADD FILTER PREDICATE dbo.fn_securitypredicate(TenantId) ON dbo.Customers. Ideal für Multi-Tenant-Anwendungen.
  • Audit-Logging: PostgreSQL: pgAudit-Extension mit pgaudit.log = 'all' protokolliert SELECT, DML und DDL-Operationen. SQL Server: CREATE SERVER AUDIT mit AUDIT_SPECIFICATION für granulare Überwachung. MariaDB: server_audit-Plugin mit server_audit_events = 'CONNECT,QUERY_DDL,QUERY_DML'. Audit-Logs werden zentral in einem SIEM (Splunk, Elastic Security) aggregiert und auf Anomalien analysiert.
  • Netzwerksicherheit: Datenbanken werden ausschließlich in privaten VLANs/Subnetzen betrieben, ohne direkte Internet-Exposition. Zugriff erfolgt über Application-Server oder SSH-Tunnel. PostgreSQL pg_hba.conf: hostssl all all 10.0.1.0/24 scram-sha-256 (nur SSL, nur internes Subnetz, SCRAM-Authentifizierung). Firewall-Regeln: nur Port 5432 von definierten Application-Server-IPs, alle anderen Verbindungen werden verworfen.

Performance Tuning & Query-Optimierung

Datenbank-Performance-Tuning ist ein iterativer Prozess aus Monitoring, Analyse und Optimierung. Die häufigsten Performance-Killer sind fehlende oder ungenutzte Indizes, ineffiziente Queries (N+1-Problem, kartesische Produkte), falsche Konfigurationsparameter und Locking-Konflikte. Ein systematischer Ansatz beginnt mit der Identifikation der teuersten Queries und der Analyse ihrer Ausführungspläne.

  • EXPLAIN ANALYZE: PostgreSQL: EXPLAIN (ANALYZE, BUFFERS, FORMAT TEXT) SELECT ... zeigt den tatsächlichen Ausführungsplan mit I/O-Statistiken. Kritische Indikatoren: Seq Scan auf großen Tabellen (fehlender Index), Nested Loop mit hohen Rows (Join-Strategie prüfen), Sort/Hash-Operationen mit Disk-Spillover (work_mem erhöhen). Tool-Empfehlung: auto_explain mit auto_explain.log_min_duration = 1000 loggt automatisch langsame Queries.
  • Index-Strategie: B-Tree-Indizes für Gleichheits- und Bereichsabfragen, GIN-Indizes für Volltextsuche und JSONB-Abfragen, GiST für geometrische Daten (PostGIS), BRIN für chronologisch geordnete Daten (Logs, Zeitreihen). Partielle Indizes (CREATE INDEX idx ON orders (status) WHERE status = 'pending') reduzieren die Indexgröße. Covering Indexes (CREATE INDEX idx ON orders (customer_id) INCLUDE (total, created_at)) eliminieren Table-Lookups (Index-Only-Scan).
  • Connection & Lock Management: Überwachung aktiver Verbindungen: SELECT * FROM pg_stat_activity WHERE state = 'active'. Lock-Konflikte identifizieren: SELECT * FROM pg_locks WHERE NOT granted. Langlebige Transaktionen blockieren VACUUM und erhöhen den Bloat. Lösung: idle_in_transaction_session_timeout = 60000 (ms). Advisory Locks (pg_advisory_lock()) für Anwendungs-Level-Sperren ohne Tabellenblockierung.
  • VACUUM & Autovacuum: PostgreSQLs MVCC erzeugt Dead Tuples, die durch VACUUM bereinigt werden. Autovacuum-Tuning: autovacuum_vacuum_scale_factor = 0.05 (statt Default 0.2), autovacuum_analyze_scale_factor = 0.02, autovacuum_vacuum_cost_delay = 2ms (aggressiver). Für hochfrequente Tabellen: ALTER TABLE hot_table SET (autovacuum_vacuum_scale_factor = 0.01). VACUUM FULL reorganisiert die Tabelle vollständig, sperrt sie aber exklusiv — Alternative: pg_repack-Extension für Online-Reorganisation.

Backup-Strategien

Eine zuverlässige Backup-Strategie ist die letzte Verteidigungslinie gegen Datenverlust. Die 3-2-1-Regel (3 Kopien, 2 verschiedene Medien, 1 Off-Site) bildet die Grundlage. Für Datenbanken kommen logische Backups (SQL-Dumps), physische Backups (Dateisystem-Level) und kontinuierliche Archivierung (WAL/Binlog) zum Einsatz — jeweils mit unterschiedlichen RTO/RPO-Charakteristiken.

  • PostgreSQL — pg_dump & pg_basebackup: Logisches Backup: pg_dump -Fc -Z 9 -j 4 -f backup.dump dbname (Custom-Format, komprimiert, 4 parallele Jobs). Physisches Backup: pg_basebackup -D /backup/base -Ft -z -P --wal-method=stream erstellt ein vollständiges Cluster-Backup inkl. WAL. Restore: pg_restore -d dbname -j 4 backup.dump (logisch) oder Dateisystem-Restore + WAL-Replay (physisch).
  • WAL Archiving & Point-in-Time Recovery: Continuous Archiving ermöglicht PITR auf jede beliebige Sekunde. Konfiguration: archive_mode = on, archive_command = 'test ! -f /archive/%f && cp %p /archive/%f'. Für Enterprise-Umgebungen: pgBackRest (pgbackrest backup --stanza=main --type=incr) mit S3/MinIO-Backend, Parallelisierung, Verschlüsselung und automatischer Retention Policy. PITR-Restore: recovery_target_time = '2026-03-10 14:30:00' in postgresql.auto.conf.
  • MariaDB — Mariabackup & Binlog: Logisches Backup: mariadb-dump --single-transaction --routines --events --all-databases | gzip > backup.sql.gz. Physisches Backup: mariabackup --backup --target-dir=/backup/full --user=backup mit inkrementellen Backups: --incremental-basedir=/backup/full. Binlog-basiertes PITR: mariadb-binlog --start-datetime="2026-03-10 14:30:00" binlog.000042 | mariadb.
  • Backup-Validierung & Monitoring: Backups ohne regelmäßige Restore-Tests sind wertlos. Automatisierte Validierung: wöchentlicher Restore in eine Testumgebung mit anschließendem Integritätscheck (pg_dump --data-only | md5sum). Monitoring via Prometheus: pg_stat_archiver für WAL-Archivierungs-Status, Custom-Metrics für Backup-Alter und -Größe. Alerting bei: Backup älter als 24h, WAL-Archivierung fehlgeschlagen, Backup-Größe weicht >20 % vom Durchschnitt ab.

Database Migration & Upgrade-Pfade

Datenbank-Migrationen — sei es ein Major-Version-Upgrade, ein Wechsel des RDBMS oder die Migration in die Cloud — sind komplexe Projekte mit hohem Risiko. Eine strukturierte Vorgehensweise mit ausführlicher Testphase, Rollback-Plan und definiertem Wartungsfenster minimiert Ausfallzeiten und Datenverlust.

  • PostgreSQL Major Upgrade: Zwei Methoden: pg_upgrade --old-datadir=... --new-datadir=... --link (In-Place, schnell, erfordert Downtime) oder Logical Replication (Online-Migration ohne Downtime). pg_upgrade-Ablauf: neuen Cluster installieren, pg_upgrade --check (Kompatibilitätsprüfung), Migration, vacuumdb --all --analyze-in-stages (Statistik-Update). Post-Migration: pg_stat_statements auf regressierte Queries prüfen.
  • Cross-Platform-Migration (MySQL → PostgreSQL): Tools: pgLoader (pgloader mysql://user:pass@host/db postgresql://user:pass@host/db) migriert Schema und Daten automatisch mit Typ-Konvertierung. Herausforderungen: AUTO_INCREMENT → SERIAL/IDENTITY, ENUM-Typen → CHECK-Constraints oder Custom Types, Stored Procedures müssen manuell portiert werden (SQL-Dialekt-Unterschiede). Nach Migration: EXPLAIN-Analyse aller kritischen Queries, da Ausführungspläne sich unterscheiden.
  • Schema-Versionierung mit Flyway/Liquibase: Datenbankschema-Änderungen werden als versionierte Migrations-Skripte verwaltet. Flyway: SQL-Dateien in db/migration/V001__create_users.sql, V002__add_email_column.sql. Ausführung: flyway migrate -url=jdbc:postgresql://... -user=... -password=.... Rollback: V002__add_email_column.sql + U002__drop_email_column.sql (Undo-Migration). Integration in CI/CD: Migration als erster Schritt im Deployment-Job.
  • Cloud-Migration (On-Premise → Managed): Migration zu AWS RDS, Azure Database oder Google Cloud SQL. Strategie: DMS (Database Migration Service) für kontinuierliche Replikation während der Übergangsphase. AWS DMS: Source Endpoint (On-Premise) → Replication Instance → Target Endpoint (RDS). Cutover: Applikation auf RDS-Endpoint umschalten, Replikation stoppen. Fallstricke: Latenz-Unterschiede, fehlende Extensions (PostGIS, pg_trgm), Parameteränderungen (RDS-Parameter-Gruppen vs. postgresql.conf).

Datenbank optimieren?

Wir administrieren Ihre PostgreSQL-, MariaDB- oder SQL-Server-Umgebung, implementieren Hochverfügbarkeit und optimieren Performance durch professionelles Query-Tuning.

Kostenlose Erstberatung →
Emre Uygunsoy — Gründer & Geschäftsführer von IT-ZU Verfügbar
🛡 BSI Grundschutz ☁ Azure Certified 🔒 DSGVO Experte
Ihr persönlicher Ansprechpartner

Emre Uygunsoy

Geschäftsführer & Senior IT-Consultant

„Jedes Unternehmen verdient eine IT, die einfach funktioniert. Lassen Sie uns gemeinsam herausfinden, wie wir Ihre IT auf das nächste Level bringen können.“
Hybrid Infrastructure On-Premise & Cloud Architektur
🛡
IT-Security Zero Trust, Firewall, EDR
🔄
Migration & Rollout M365, Azure, Virtualisierung

Bereit für eine IT, die einfach funktioniert? Lassen Sie uns sprechen.

Kostenlose und unverbindliche Erstberatung. Wir analysieren Ihre IT-Situation und zeigen Optimierungspotenzial — ohne Verpflichtung.

Noch diese Woche: Freie Beratungstermine verfügbar