Sichern einer MySQL-Datenbank in einem S3-Speicher

Achtung Der Artikel befindet sich im Entwicklungsstatus


Dieser Artikel ist allgemein gehalten und beschreibt die grundlegenden Schritte für

Grundlegende Informationen

MySQL ist die Lösung für kleine bis mittelgroße Anwendungen. Teil von WAMP-, AppServ- und LAMP-Servern. Typischerweise wird MySQL als Server verwendet, auf den von lokalen oder entfernten Clients. Außerdem ist MySQL eine der beliebtesten Open-Source-Datenbanken für die Entwicklung interaktiver Websites.

Wenn Ihre Website oder Anwendung ihre sensiblen Daten in einer MySQL-Datenbank speichert, möchten Sie diese Informationen wahrscheinlich sichern, damit Sie im Falle eines Unfalls oder einer anderen unvorhergesehenen Situation wiederhergestellt werden können.

Es gibt mehrere Möglichkeiten, Ihre MySQL-Daten zu sichern. In diesem Artikel befassen wir uns mit der Erstellung von Datenbanksicherungen und der Erstellung einer automatischen Backup-Lösung, um den Prozess zu rationalisieren. Wir sehen uns ein Beispiel mit mysqldump an, einschließlich der Sicherung Ihrer Datenbank. Daten in eine Datei, eine komprimierte gzip-Datei und das Senden an einen entfernten S3-Speicher.

Die Verwendung eines S3-Speichers zur entfernten Speicherung von Datenbankkopien ist eine einfache Backup-Lösung für Personen, die MySQL-Server in Cloud-Infrastrukturen verwenden, da ein Dienstanbieter, der IaaS anbietet, sehr oft einen separaten S3-Speicher bereitstellt.

Der Hauptvorteil der S3-Sicherung ist der Schutz vor Datenverlusten. Sie müssen zunächst jede Datenbank mit dem Befehl „mysqldump“ sichern, die Sicherungsaufgaben automatisieren das Kopieren mit tar, das Einrichten eines Cron-Jobs und das Erstellen einer Kopie des Sicherungsskripts in S3.

Wichtig

Die wichtigsten Vorteile der Verwendung von S3:
  • Daten sind verfügbar, wenn sie benötigt werden, und vor Unterbrechungen, Fehlern und Bedrohungen geschützt.
  • S3-Speicher unterstützt Versionskontrollfunktionen.
  • Daten werden über das sichere https-Protokoll übertragen.
  • Hat einen hohen „Durchsatz“ im Netzwerk, kann durch Firewalls hindurch funktionieren, da es als Webverkehr identifiziert wird.
  • Das S3-Protokoll ermöglicht das Herunterladen von Dateien im Falle einer Unterbrechung der Verbindung.
  • Hohe Leistung durch Multithreading beim Laden von Daten.
  • Speichert Daten in ihrem ursprünglichen Format.
  • S3 ist viel billiger als SSD-Speicher und erfordert keine Wartung.
  • Eine große Anzahl an verfügbaren plattformübergreifenden Clients und Plugins.
  • Mit S3 zahlen Sie nur für den Speicher, den Sie tatsächlich nutzen.

Einrichten von MySQL-Sicherungen auf S3

Schritt 1. Installieren Sie S3cmd: Downloaden Sie die neueste Version von s3cmd über diesen Link « https://sourceforge.net/projects/s3tools/?source=typ_redirect ».

sudo apt-get -y install python-setuptools
wget http://netix.dl.sourceforge.net/project/s3tools/s3cmd/1.6.0/s3cmd-1.6.0.tar.gz
tar xvfz s3cmd-1.6.0.tar.gz
cd s3cmd-1.6.0
sudo python setup.py install
Während der Installation müssen Sie zwei Schlüssel eingeben:
  • Zugangsschlüssel
  • Geheimschlüssel - Ihre Identifikatoren im S3-Speicher.

Achtung

„Access key“ und „Secret key“ unterscheiden Groß- und Kleinschreibung und müssen eingegeben werden, andernfalls erhalten Sie Fehler bei ungültigen Signaturen.

Andere erweiterte Einstellungen können (falls erforderlich) durch manuelles Bearbeiten der Konfigurationsdatei geändert werden. Einige Einstellungen enthalten Standardwerte für s3cmd.

Schritt 2. Skript zum Sichern der MySql-Datenbank auf S3

Ein Shell-Skript, um Ihre Datenbank zu sichern und in S3 zu laden.

Die Idee ist, das folgende Skript zu erstellen und es mit den entsprechenden Umgebungsvariablen auszuführen und dann mysqldump zu verwenden, um die Datenbank in eine temporäre Datei zu übertragen und die Datei in S3 zu laden:

#Save dbbacku.sh

#!/bin/bash
## Specify the name of the database that you want to backup

# Database credentials
USER="DB-USER"
PASSWORD="PASSWORD"
HOST="DB-host-name"
DB_NAME="Database-name"

#Backup_Directory_Locations
BACKUPROOT="/tmp/backups"
TSTAMP=$(date +"%d-%b-%Y-%H-%M-%S")
S3BUCKET="s3://s3bucket"
#LOG_ROOT="logs/dump.log"

#mysqldump  -h <HOST>  -u <USER>  --database <DB_NAME>  -p"password" > $BACKUPROOT/$DB_NAME-$TSTAMP.sql

#or

mysqldump -h$HOST -u$USER $DB_NAME -p$PASSWORD | gzip -9 > $BACKUPROOT/$DB_NAME-$TSTAMP.sql.gz

if [ $? -ne 0 ]
    then
     mkdir /tmp/$TSTAMP
    s3cmd put -r /tmp/$TSTAMP $S3BUCKET/
    s3cmd sync -r $BACKUPROOT/ $S3BUCKET/$TSTAMP/
    rm -rf $BACKUPROOT/*
else
    s3cmd sync -r $BACKUPROOT/ $S3BUCKET/$TSTAMP/
    rm -rf $BACKUPROOT/*
fi

Schritt 3. Führen wir nun das Skript aus:

# chmod +x dbbackup.sh
# Run the script to make sure it's all good
# bash dbbackup.sh

Angenommen, das Backup-Skript befindet sich im Verzeichnis / opt / scripts, müssen wir einen Crontab-Task hinzufügen, um es automatisch wöchentlich auszuführen. Dazu müssen Sie die crontab-Datei bearbeiten:

#vim /etc/crontab
#Add the following lines:
#Run the database backup script on every week at 12.00

0 0 * * 0  bash /opt/scripts/mysqlbackupS3.sh to  >/dev/null 2>&1

Fazit

In diesem Artikel haben wir erklärt, wie man den Sicherungsprozess automatisieren kann. MySQL direkt in den S3-Speicher. Sie müssen nur das Skript auf Ihrem MySql-Server einrichten und anpassen, und schon sind Sie fertig. Dieser Dienst startet regelmäßig einen Prozess nach einem vorkonfigurierten Zeitplan. Sie können uns gerne Fragen stellen, wir freuen uns auf Ihre Antworten.