In den meisten Anwendungsszenarien müssen wir wichtige Daten sichern und für den Notfall an einem sicheren Ort aufbewahren. Zu den gängigen Methoden zur MySQL-Datensicherung gehören das direkte Verpacken und Kopieren der entsprechenden Datenbank- oder Tabellendateien (physische Sicherung), die vollständige logische Sicherung mit mysqldump, die inkrementelle logische Sicherung mit xtrabackup usw. Zu den gängigen Datenspeichermethoden gehören lokale Speicherung, FTP-Upload auf einen Remote-Server, Cloud-Speicher (wie Alibaba Cloud OSS, Qiniu Cloud Storage usw.) und sogar lokale Speicherung. Möglicherweise möchten wir nicht jedes Mal manuell eine Sicherung durchführen, noch möchten wir bei jedem Herunterladen so viel Zeit aufwenden, noch möchten wir die Daten auf dem Server verlieren, weil wir eine externe Sicherung benötigen. Dann können wir versuchen, ein Skript zu schreiben, um die Datenbank regelmäßig zu sichern und sie dann automatisch auf einen bestimmten Server oder in einen Cloud-Speicher hochzuladen. Hier sprechen wir darüber, wie Sie MySQL auf einem Linux-Server sichern und in den Qiniu Cloud Storage hochladen. Vorbereitung • Linux •Crontab-Dienst Sie müssen sicherstellen, dass sich der Crond-Dienst im gestarteten und automatisch gestarteten Zustand befindet. •gzip-Befehl Das System muss in der Lage sein, den Befehl gzip normal auszuführen, um Dateien zu komprimieren. •mysqldump-Befehl Zur logischen Datensicherung muss das System in der Lage sein, den Befehl mysqldump normal auszuführen. Die von mysqldump gesicherten Daten bestehen aus ausführbarem SQL und es liegt kein Problem mit Versionsinkompatibilität vor. •qshell-Werkzeug qshell ist ein Befehlszeilentool, das Qiniu Cloud offiziell unter Verwendung der öffentlichen API in Qiniu-Dokumenten implementiert, um Entwicklern das Testen und Verwenden von Qiniu-API-Diensten zu erleichtern. Spezifische Dokumente und Download-Adresse: https://developer.qiniu.com/kodo/tools/1302/qshell • Qiniu Cloud-Konto Voraussetzung für die Datenspeicherung ist natürlich ein Qiniu-Konto. Qiniu stellt Privatpersonen 10 GB kostenlosen Speicherplatz zur persönlichen Nutzung zur Verfügung. Registrierte Adresse: • Qiniu-Lagerraum Nachdem Sie ein Qiniu Cloud-Konto haben, müssen Sie in der Konsole manuell einen Speicherplatz (Bucket) zum Speichern von Daten erstellen. Qshell-Konfiguration Die von der offiziellen Adresse heruntergeladene Qshell ist ein komprimiertes Paket, das mehrere Systemplattformen unterstützt. Wählen Sie die Binärdatei unseres entsprechenden Systems aus und erteilen Sie ihr Ausführungsberechtigungen. Es kann auch in einem Verzeichnis wie /usr/local/bin/ platziert werden, um den direkten Aufruf des qshell-Befehls zu erleichtern. Konfigurieren Sie das Qiniu-Konto. ak und sk befinden sich in der Qiniu Cloud Console > Persönliches Center > Schlüsselverwaltung. Dieser Befehl schreibt das ak/sk-Konto in ~/.qshell/account.json und es ist keine weitere Konfiguration erforderlich. Der Qshell-Befehl, den wir hier verwenden, ist rput. Er dient zum Hochladen einer Datei im mehrteiligen Upload-Modus. Verwenden Sie das Dokument: https://github.com/qiniu/qshell/blob/master/docs/rput.md qshell rput <Bucket> <Schlüssel> <LokaleDatei> true Weitere detaillierte Funktionen von qshell finden Sie in der Dokumentation. Skriptinhalt #!/bin/sh #mysql-Datensicherungsskript # # Verwenden Sie mysqldump --help, um weitere Einzelheiten zu erhalten. dbname=Ihr_Datenbankname Benutzer=Ihr_Datenbankbenutzername password=Ihr_Datenbankpasswort bakDir=/opt/backup/sql logFile=/opt/backup/mysqlbak.log Datum/Uhrzeit = `Datum + %J%m%d%H%M%S` keepDay=7 echo "------------------------------------------" >> $logFile echo $(date +"%y-%m-%d %H:%M:%S") >> $logFile echo "--------------------------" >> $logFile cd $bakDir bakFile=$dbname.$datetime.sql.gz mysqldump -u $user -p $password $dbname | gzip > $bakFile echo "Datenbank [$dbname] Sicherung abgeschlossen" >> $logFile echo "$bakDir/$bakFile" >> $logFile echo "Starten Sie das Hochladen der Sicherungsdateien in den Qiniu Cloud Storage" >> $logFile /usr/local/bin/qshell rput <Bucket> Datenbank/$bakFile $bakFile true | sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g" >> $logFile 2>&1 echo "Lösche die Sicherungsdatei vor ${keepDay} Tagen" >> $logFile finde $bakDir -ctime +$keepDay >> $logFile finde $bakDir -ctime +$keepDay -exec rm -rf {} \; echo " " >> $logFile echo " " >> $logFile Die Datenbankkonfiguration, Protokolldateien, Speicherpfad, <Bucket> usw. im Skript müssen von Ihnen selbst geändert werden und sind vorhanden. database/$bakFile steht für <Schlüssel>, also den Pfad und Dateinamen im Qiniu-Speicher, der angepasst werden kann. Die Skriptdatei muss über Ausführungsberechtigungen verfügen. Erst dann kann das Skript zum Testen ausgeführt werden. Geplante Aufgaben # Führen Sie das Backup-Skript jeden Tag um 2 Uhr morgens aus * 2 * * * /opt/backup/baksql.sh Wenn die geplante Aufgabe nicht ausgeführt wird, können Sie zur Behebung des Problems das Protokoll /var/log/cron überprüfen oder prüfen, ob crond ausgeführt wird. Zusammenfassen Oben ist die Methode, die ich Ihnen vorgestellt habe, um MySQL regelmäßig zu sichern und auf Qiniu hochzuladen. Ich hoffe, sie wird Ihnen hilfreich sein. Wenn Sie Fragen haben, hinterlassen Sie mir bitte eine Nachricht und ich werde Ihnen rechtzeitig antworten. Ich möchte auch allen für ihre Unterstützung der Website 123WORDPRESS.COM danken! Das könnte Sie auch interessieren:
|
<<: Die Vollversion des gängigen Linux-Tools vi/vim
>>: Detaillierte Erläuterung der Angular-Routing-Grundlagen
Gestern Abend habe ich einen Aufsatz über den Bro...
Mysql unterstützt 3 Arten von Sperrstrukturen Spe...
Frage: Ich habe in Vue ein Formular zum Hochladen...
Einloggen Docker-Anmeldung Schließen Sie die Regi...
In diesem Kapitel beginnen wir mit dem Betrieb vo...
Inhaltsverzeichnis Was ist Docker Clientseitiger ...
ylbtech_html_drucken HTML-Druckcode, unterstützt S...
Hinweis: Sie müssen dem übergeordneten Container ...
Hintergrund: Da der Server das Flask-Projekt bere...
Heute habe ich einen kleinen Vorgeschmack auf IE8...
Inhaltsverzeichnis Keine Slots Vue2.x-Steckplätze...
Dokumenthinweise mit dem Attribut show-header <...
In diesem Artikel wird der spezifische Code von j...
Die folgende Grafik zeigt, wie zeitaufwändig es is...
Inhaltsverzeichnis 1. Einleitung 2. Haupttext 2.1...