So implementieren Sie eine geplante automatische Sicherung von MySQL unter CentOS7

So implementieren Sie eine geplante automatische Sicherung von MySQL unter CentOS7

Das Schönste, was in einer Produktionsumgebung passieren kann, ist, dass es in manchen Szenarien unvermeidlich ist, beim Aktualisieren oder Löschen einen Parameter zu ignorieren. Es ist vorbei, es ist vorbei. Ich habe die Daten durcheinandergebracht. Was soll ich tun? Ich muss zum Betrieb gehen und ein Backup finden! Die Operation sagte: Schwachsinn, unser System wird nie gesichert. Sie sagten: Dann geben Sie mir die Protokolle. Die Operation sagte: Schwachsinn, es gibt jeden Tag GB an Protokollen, ich habe sie Ihnen noch nicht einmal geöffnet. Sie sagten: Was soll ich tun, ich habe die Datenbank zum Absturz gebracht. Die Operation sagte: Das ist Ihre Sache, es hat nichts mit mir zu tun ... Dies ist eine Darstellung eines bestimmten Unternehmens, also werden wir dieser Situation heute ein Ende setzen

Heute werde ich für einen Kunden ein System mit MySQL 5.7 bereitstellen, kann jedoch für die Fähigkeiten der Entwickler auf der Kundenseite keine Garantie übernehmen. Ich kann nur alle wichtigen Dateien wie Startdateien und Datenbanken automatisch sichern, falls etwas schief geht. Wir können dies mit nur einer Befehlszeile erreichen, was ein verantwortungsvoller Ansatz ist. Erste Schritte:

Wir müssen die folgenden Funktionen implementieren:

Erstens: Datenbanksicherung

Zweitens: Datenbankwiederherstellung durch Backup

Drittens: Automatisierung der Datenbanksicherung

Viertens: Bereinigen Sie abgelaufene Sicherungsdateien

Erstens: Automatische Datenbanksicherung

1. Erstellen Sie ein Backup-Verzeichnis

Hier habe ich gewählt, die Sicherungsdatei unter /data/backup/mysql und das Skript unter /data/backup abzulegen:

[root@izwz99z5o9dc90keftqhlrz /]# mkdir -p /data/backup/mysql
[root@izwz99z5o9dc90keftqhlrz /]# cd /data/backup

2. Erstellen Sie eine Skriptdatei

Erstellen Sie mysql_backup.sh

[root@izwz99z5o9dc90keftqhlrz Backup]# vi mysql_backup.sh
 
#!/bin/bash
# db_name ändern Sie es selbst db_name = 'baizhan'
Backup-Verzeichnis = '/Daten/Backup/mysql/'
aktuelle_Zeit=$(Datum +'%Y-%m-%d_%H%M%S')
Dateipfad=$Sicherungsverzeichnis$aktuelle_Zeit'.sql.gz'
#$db_password $db_user wird hier nicht verwendet, es wurde in die Konfigurationsdatei echo „Datenbankexport starten …“ geschrieben.
mysqldump --defaults-extra-file=/data/backup/my_mysql.cnf $db_name | gzip > $filepath
echo 'Export erfolgreich, Dateiname: '$filepath

3. Erstellen Sie eine neue Konfigurationsdatei

In unserem aktuellen Verzeichnis, also /data/backup

[root@izwz99z5o9dc90keftqhlrz Backup]# vi my_mysql.cnf
 
[mysqldump]
max_allowed_packet = 400M
Host = 127.0.0.1
Benutzer=root
Passwort='SgDGfsrfEi3#@%#%ugslp%z!dAP'
[mysql]
Host = 127.0.0.1
Benutzer=root
Passwort='SgDGfsrfEi3#@%#%ugslp%z!dAP'

Liebe Leser, bitte ändern Sie die obigen Parameter nach Ihren eigenen Vorstellungen und überspringen Sie diesen Schritt nicht.

Die Parameter unter mysqldump werden für den Exportbefehl verwendet, und die Parameter unter mysql werden beim Importieren verwendet.

4. Dateiberechtigungen erteilen

An diesem Punkt wurde das exportierte Shell-Skript geschrieben. Fügen wir diesem Skript Ausführungsberechtigungen hinzu

[root@izwz99z5o9dc90keftqhlrz-Sicherung]# chmod +x ./mysql_backup.sh

5. Führen Sie unseren Befehl aus

[root@izwz99z5o9dc90keftqhlrz Backup]# sh ./mysql_backup.sh
# Überprüfen Sie die Ergebnisse [root@izwz99z5o9dc90keftqhlrz Backup]# ll ./mysql 

6. Erweiterte Nutzung

Lassen Sie uns die erfolgreich exportierte Datei dekomprimieren und die ursprüngliche Dateigröße mit der komprimierten Dateigröße vergleichen.

[root@izwz99z5o9dc90keftqhlrz-Backup]# gzip -dc ./mysql/2019-12-22_180359.sql.gz > ./mysql/2019-12-22_180359.sql
 
[root@izwz99z5o9dc90keftqhlrz Backup]# ll -sh ./mysql
insgesamt 44K
 36K -rw-r--r-- 1 root root 36K 22. Dez. 18:06 2019-12-22_180359.sql
8,0 KB -rw-r--r-- 1 Wurzel Wurzel 5,9 KB 22. Dez. 18:03 2019-12-22_180359.sql.gz
 Vergleich zwischen 36 KB und 8 KB. Wenn die Datenbank groß ist, kann mehr Speicherplatz gespart werden.

Bisher ist unser Exportskript abgeschlossen. Der nächste Schritt besteht darin, das Skript zu importieren.

Zweitens: Datenbankwiederherstellung durch Backup

1. Erstellen Sie eine Skriptdatei

Nach dem ersten Schritt sollten wir uns nun im Verzeichnis /data/backup befinden. Weiter

[root@izwz99z5o9dc90keftqhlrz Backup]# vi mysql_restore.sh
#!/bin/bash
wenn [ -z $1 ] || [ ! -f $1 ]
Dann
 echo "Bitte geben Sie die SQL-komprimierte Datei (*.sql.gz) ein"
 Ausfahrt 1
fi
#Geben Sie Ihren eigenen Datenbanknamen ein db_name='jx_guides'
Basisverzeichnis='/data/backup/mysql/'
gz_sql_file=`Basisname $1`
Dateierweiterung=${gz_sql_file##*.}
wenn [ $file_ext != 'gz' ]
Dann
 echo 'Das Dateiformat ist falsch, bitte geben Sie eine .sql.gz-Datei ein'
 Ausfahrt 1
fi
sql_file=${gz_sql_file%.*}
echo 'In der dekomprimierten Datei...'
gzip -dc $base_dir$gz_sql_file > $base_dir$sql_file
echo 'Dekomprimierung abgeschlossen.'
echo 'Datenbankimport starten …'
mysql --defaults-extra-file=/data/backup/my_mysql.cnf $db_name < $base_dir$sql_file
if [ -f $Basisverzeichnis$SQL-Datei ]
Dann
 echo 'Temporäre Dateien löschen.'
 rm -f $Basisverzeichnis$SQL-Datei
fi
echo 'Import abgeschlossen.'

Die Konfigurationsdatei im obigen Code ist die Konfigurationsdatei, die wir im ersten Schritt erstellt haben, und sie wird hier auf die gleiche Weise verwendet.

2. Erhöhen Sie die Berechtigungen für ausführbare Dateien

[root@izwz99z5o9dc90keftqhlrz Backup]# chmod +x ./mysql_restore.sh

3. Stellen wir die Datenbank über die Sicherungsdatei wieder her

[root@izwz99z5o9dc90keftqhlrz-Sicherung]# sh ./mysql_restore.sh ./mysql/2019-12-22_180359.sql.gz

Entpacken Sie die Datei...
Dekomprimierung abgeschlossen.
Der Datenbankimport wird gestartet ...
Löschen Sie temporäre Dateien.
Import abgeschlossen.

Hier kann unser erster Parameter den Namen der Sicherungsdatei direkt schreiben, ohne das Verzeichnis zu schreiben, aber da Sie nach dem Hinzufügen des Verzeichnisses die Tabelle zur automatischen Vervollständigung verwenden können, ist dies sehr praktisch. Andere Ausführungsmethoden: Tatsächlich wissen Leute, die es verstehen, dass sie alle gleich sind

Tatsächlich können Sie in jedem Ordner wiederherstellen und dies an jedem beliebigen Ort ausführen

[root@izwz99z5o9dc90keftqhlrz-Sicherung]# sh /data/backup/mysql_restore.sh /data/backup/mysql/2019-12-22_180359.sql.gz
 Sie können auch dies tun [root@izwz99z5o9dc90keftqhlrz mysql]# pwd
/Daten/Backup/MySQL
[root@izwz99z5o9dc90keftqhlrz mysql]# sh /data/backup/mysql_restore.sh 2019-12-22_180359.sql.gz

Drittens: Automatisierung der Datenbanksicherung

1. Fügen Sie eine geplante Aufgabe hinzu

[root@izwz99z5o9dc90keftqhlrz mysql]# crontab -e
 
# Fügen Sie den folgenden Inhalt ein: Automatische Datenbanksicherung 0 1,12 * * * /data/backup/mysql_backup.sh # Sichern Sie die Daten einmal täglich um 1:00 Uhr und 12:00 Uhr.

Viertens: Bereinigen Sie abgelaufene Sicherungsdateien

1. Erstellen Sie ein Skript zum Löschen von Dateien

[root@izwz99z5o9dc90keftqhlrz mysql]# vi remove_backup.sh
#/bin/bash 
# Löschen Sie das Backup von vor 15 Tagen find /data/backup/mysql -type f -mtime +15 | xargs rm -f

Ich habe mich dafür entschieden, hier nur die letzten 15 Tage der Sicherungsdaten aufzubewahren. Sie können dies nach Bedarf ändern.

2. Ausführbare Berechtigungen hinzufügen

[root@izwz99z5o9dc90keftqhlrz mysql]# chmod +x ./remove_backup.sh
#Löschen Sie das Backup von vor 15 Tagen manuell [root@izwz99z5o9dc90keftqhlrz mysql]# ./remove_backup.sh

3. Automatische Bereinigung

[root@izwz99z5o9dc90keftqhlrz mysql]# crontab -e
 
# Folgendes ist der Skriptinhalt. Fügen Sie diesen Satz hinzu 0 1 * * * /data/backup/remove_backup.sh # Täglich um 1 Uhr morgens wird das Backup von vor 15 Tagen automatisch gelöscht [15 ist in remove_backup.sh konfiguriert]

Fünftens: Posten Sie die Konfiguration der geplanten Aufgabe

# Fügen Sie den folgenden Inhalt ein, automatische Datenbanksicherung 0 1,12 * * * /data/backup/mysql_backup.sh # Sichern Sie die Daten einmal täglich um 1 Uhr und 12 Uhr mittags # Das Folgende ist der Skriptinhalt, fügen Sie diesen Satz hinzu 0 1 * * * /data/backup/remove_backup.sh # Löschen Sie jeden Tag um 1 Uhr automatisch die Sicherung von vor 15 Tagen [15 ist in remove_backup.sh konfiguriert]

Zusammenfassen

Oben ist die vom Herausgeber vorgestellte Implementierungsmethode für die geplante automatische Sicherung von MySQL unter CentOS7. Ich hoffe, sie ist für alle hilfreich. Wenn Sie Fragen haben, hinterlassen Sie mir bitte eine Nachricht und der Herausgeber wird Ihnen rechtzeitig antworten. Ich möchte auch allen für ihre Unterstützung der Website 123WORDPRESS.COM danken!
Wenn Sie diesen Artikel hilfreich finden, können Sie ihn gerne abdrucken und dabei bitte die Quelle angeben. Vielen Dank!

Das könnte Sie auch interessieren:
  • Linux führt jeden Tag eine automatische und geplante Sicherung der MySQL-Datenbank durch
  • So sichern Sie die MySQL-Datenbank regelmäßig automatisch

<<:  Vue implementiert die Lupenfunktion der Produktdetailseite

>>:  Detaillierte Erläuterung gängiger Vorgänge für Docker-Images und -Container

Artikel empfehlen

Detaillierte Erläuterung der MySQL-Existes- und Not-Existes-Beispiele

Detaillierte Erläuterung der MySQL-Existes- und N...

Die Bedeutung der 5 Leerzeichenarten in HTML

HTML bietet fünf Leerzeichen mit unterschiedliche...

Erstellen von responsiven E-Mails mit Vue.js und MJML

MJML ist ein modernes E-Mail-Tool, mit dem Entwic...

Bootstrap 3.0 Studiennotizen CSS-bezogene Ergänzung

Die wesentlichen Inhalte dieses Artikels sind wie...

Detaillierter Installationsprozess des NodeJS-Verwaltungstools NVM

keine Ahnung nvm ist für die Verwaltung mehrerer ...

Miniprogramm Benutzerdefinierte TabBar-Komponentenkapselung

In diesem Artikelbeispiel wird der spezifische Co...

Lösen Sie das Problem des MySQL Threads_running-Surge und der langsamen Abfrage

Inhaltsverzeichnis Hintergrund Problembeschreibun...

Analyse der Protokolldateien im Tomcat-Protokollverzeichnis (Zusammenfassung)

Bei jedem Start von Tomcat werden die folgenden P...

So stellen Sie Confluence und Jira-Software in Docker bereit

Version: centos==7.2 jdk==1.8 Zusammenfluss == 6....

Führen Sie die Schritte zur Verwendung von mock.js im Vue-Projekt aus

Verwenden von mock.js im Vue-Projekt Auswahl des ...