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... 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! Das könnte Sie auch interessieren:
|
<<: Vue implementiert die Lupenfunktion der Produktdetailseite
>>: Detaillierte Erläuterung gängiger Vorgänge für Docker-Images und -Container
Detaillierte Erläuterung der MySQL-Existes- und N...
HTML bietet fünf Leerzeichen mit unterschiedliche...
Remote-SSH installieren und konfigurieren Öffnen ...
MJML ist ein modernes E-Mail-Tool, mit dem Entwic...
Die wesentlichen Inhalte dieses Artikels sind wie...
Inhaltsverzeichnis Netzwerkkonfiguration anzeigen...
1. Laden Sie centos7 herunter Download-Adresse: h...
keine Ahnung nvm ist für die Verwaltung mehrerer ...
Inhaltsverzeichnis Hauptsächlich verwendete Postm...
In diesem Artikelbeispiel wird der spezifische Co...
Inhaltsverzeichnis Hintergrund Problembeschreibun...
Bei jedem Start von Tomcat werden die folgenden P...
Version: centos==7.2 jdk==1.8 Zusammenfluss == 6....
Inhaltsverzeichnis Vorne geschrieben Anforderungs...
Verwenden von mock.js im Vue-Projekt Auswahl des ...