DBackup
Datenbank-Integration

MySQL-Backups, konsistent und verschlüsselt.

DBackup sichert jede Datenbank aus einem konsistenten Snapshot, mit ihren Routinen und Events, solange Sie sie nicht ausschalten. Es verschlüsselt die Dumps mit AES-256-GCM, wenn der Job einen Schlüssel hat, und legt sie auf dem Speicher Ihrer Wahl ab.

Open Source unter GPL-3.0 · läuft auf Ihrem eigenen Server
shop-mysqlLäuft
  1. VerbindenDirekt zu mysql:3306
  2. Dumpmariadb-dump --single-transaction --routines --events --databases shop
  3. VerschlüsselnGzip und AES-256-GCM
  4. HochladenHetzner Object Storage
  5. Aufbewahren7 täglich, 4 wöchentlich, 12 monatlich
  6. MeldenDiscord · #backups
Mit einem Verschlüsselungsprofil wird jeder Dump mit AES-256-GCM verschlüsselt, bevor er Ihren Server verlässt.
Getestet mit 5.7 und 9.1
MySQL 5.7 bis 9
Geschrieben von mariadb-dump
Reines SQL
Über SSH läuft der Dump auf Ihrem Server
Direkt oder über SSH (Beta)
Datenbanken wählen und neu benennen
Wiederherstellung in der App

So läuft ein MySQL-Backup

Vier Schritte, jeder mit einem Werkzeug oder Format, das Sie auch selbst nutzen könnten. DBackup führt sie nach Zeitplan aus und meldet sich, wenn einer scheitert.

  1. 1Dump--single-transaction liest die InnoDB-Tabellen jeder Datenbank zu einem Zeitpunkt, ohne Schreibzugriffe zu blockieren.
  2. 2KomprimierenDBackup kann jeden Dump mit Gzip oder Brotli komprimieren. Das SQL darin bleibt reiner Text.
  3. 3VerschlüsselnAES-256-GCM mit dem Schlüssel eines Verschlüsselungsprofils, für jeden Dump einzeln. Darin bleibt der Dump, was das Werkzeug geschrieben hat.
  4. 4AblegenHochgeladen zu einem oder mehreren der 13 Speicherziele, jedes mit eigener Aufbewahrung, von einer einfachen Anzahl bis täglich, wöchentlich, monatlich und jährlich.

Drei Schalter und eine Prüfung pro Datenbank

Unter Options legt die Quelle fest, was in den Dump kommt. Alle drei Schalter sind an, solange Sie sie nicht ausschalten.

Das Passwort erreicht das Dump-Werkzeug in einer temporären Datei, die nur ihr Besitzer lesen kann, nie über die Kommandozeile.

  • Konsistenter Snapshot--single-transactionLiest InnoDB-Tabellen zu einem Zeitpunkt, ohne Schreibzugriffe zu blockieren. Ausgeschaltet werden die Tabellen jeder Datenbank gesperrt, solange sie gesichert wird.
  • Gespeicherte Prozeduren und Funktionen--routinesSichert die Routinen jeder Datenbank mit ihren Tabellen.
  • Events--eventsSichert die geplanten Events jeder Datenbank.

Vor jedem Dump prüft DBackup, was der Login lesen darf. Darf er die Events oder den Inhalt einer Routine nicht lesen, wird diese Datenbank ohne sie gesichert, mit einer Warnung im Lauf.

Alle Datenbanken in einem Archiv

Wählen Sie einige Datenbanken eines Servers, oder lassen Sie die Auswahl leer, dann sichert jeder Lauf alle außer den Systemschemas. Jede bekommt ihren eigenen Dump in einem TAR mit Manifest und einem Verzeichnis der Prüfsummen.

  • Mit leerer Auswahl nimmt der nächste Lauf eine neue Datenbank mit.
  • Stellen Sie eine Datenbank unter neuem Namen wieder her, dann schreibt die App ihre Zeilen USE und CREATE DATABASE beim Einspielen um.
  • Unverschlüsselt öffnet sich das Archiv mit tar -xf, und jeder Dump ist eine SQL-Datei, mit Gzip oder Brotli komprimiert, wenn der Job komprimiert.
  • TARshop-mysql_2026-10-08_03-00-00.tar182 MB
  • { }manifest.json
  • DIRdatabases/
  • DBshop.sql.gz96 MB
  • DBblog.sql.gz41 MB
  • DBcrm.sql.gz45 MB
  • { }index
Der Aufbau eines unverschlüsselten Archivs. In einem verschlüsselten tragen die Einträge neutrale Namen.
Jeder Rechner mit Node.js
$ node dbackup-recover.js --extract shop-mysql_2026-10-08_03-00-00.tar ./restored databases/shop$ mariadb -u root -p < ./restored/databases/shop.sql

Zurückholen ohne DBackup

Jeder Dump ist reines SQL, erstellt mit --databases, er legt seine Datenbank also selbst an und wählt sie aus. Das Recovery Kit entschlüsselt und entpackt ihn, und der mariadb-Client, mit dem auch DBackup wiederherstellt, spielt ihn zurück.

Das Recovery Kit aus dem Vault besteht aus einem Skript und Ihrem Schlüssel. Es entschlüsselt und entpackt einen Dump und prüft seine SHA-256-Summe, bevor es die Datei schreibt.

Warum wir das so gebaut haben

In fünf Minuten startklar

DBackup ist ein Container. Stellen Sie ihn neben Ihre Datenbank, geben Sie ihm einen Login und legen Sie den ersten Job an.

docker-compose.yml
services:
  dbackup:
    image: skyfay/dbackup:latest
    restart: always
    ports:
      - "3000:3000"
    environment:
      - ENCRYPTION_KEY=${ENCRYPTION_KEY}          # openssl rand -hex 32
      - BETTER_AUTH_SECRET=${BETTER_AUTH_SECRET}  # openssl rand -base64 32
      - BETTER_AUTH_URL=https://localhost:3000
    volumes:
      - ./data:/data

  mysql:
    image: mysql:9
    environment:
      - MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}

Fragen zu MySQL

MySQL 5.7 und neuer. Die Integrationstests laufen gegen 5.7 und 9.1. Ein älterer Server bekommt eine Warnung, und der Dump läuft trotzdem.

Im Docker-Image läuft mariadb-dump, die MariaDB-Fassung von mysqldump, die auch MySQL sichert. Über SSH nimmt es mariadb-dump oder mysqldump, je nachdem, was der Server hat.

Nicht mit dem konsistenten Snapshot, der standardmäßig an ist. Er liest InnoDB-Tabellen zu einem Zeitpunkt, während Schreibzugriffe weiterlaufen. Schalten Sie ihn aus, werden die Tabellen jeder Datenbank gesperrt, solange sie gesichert wird.

SELECT, SHOW VIEW, TRIGGER und EVENT, dazu LOCK TABLES bei ausgeschaltetem Snapshot. Muss eine Wiederherstellung eine Datenbank anlegen, fragt sie einmalig nach einem Admin-Login.

Ja. Jeder Dump ist eine reine SQL-Datei. Das Recovery Kit holt sie heraus, verschlüsselt oder nicht, und entpackt sie, mit nichts als Node.js. Danach geben Sie sie an den mariadb-Client, mit dem auch DBackup wiederherstellt.

Ihr erstes MySQL-Backup läuft heute Nacht.

Ein Container, eine Compose-Datei und ein Job. Kostenlos und Open Source.