Detaillierte Erläuterung der Implementierung einer regelmäßigen Sicherung von MySQL-Datenbanktabellen

Detaillierte Erläuterung der Implementierung einer regelmäßigen Sicherung von MySQL-Datenbanktabellen

Durchführung regelmäßiger Backups von Mysql-Datenbanktabellen

0. Hintergrund

In der tatsächlichen Entwicklungsumgebung muss das Front-End-Programm innerhalb eines bestimmten Zeitraums Daten in die von MySQL angegebene Datenbanktabelle aktualisieren/einfügen. Mit zunehmender Datenmenge und wachsender Basis der Datenbanktabellen tritt bei jeder Aktualisierung eine Verzögerung von etwa 5 Sekunden auf.

Verbesserungsplan 1: Stapelaktualisierung, bei der 10 oder 100 Datensätze gesammelt werden, um einen Aktualisierungsvorgang durchzuführen;

Verbesserungsplan 2: Sichern Sie die Daten einen Monat vor dem aktuellen Datum und löschen Sie die Daten von vor einem Monat in der aktuellen Datenbanktabelle. Es wurde festgestellt, dass diese Methode die Zugriffseffizienz bis zu einem gewissen Grad verbessert. Grundursache: Die Basistabelle weist eine geringe Kardinalität auf, sodass die Abfrageeffizienz relativ verbessert ist.

1. Zusammenfassung der geplanten Sicherung von Datenbanktabellen

Schritt 1: Sichern Sie die angegebene Datenbanktabelle in MySQL.

Verwenden Sie mysqldump und stellen Sie den Zeitraum auf 30 Tage ein.

Schritt 2: Löschen Sie die gesicherten Dateien und komprimierten Pakete, die älter als 60 Tage sind.

Schritt 3: Löschen Sie die Daten in der Datenbanktabelle, die 30 Tage vor dem aktuellen Datum liegen. (In Schritt 1 wurde eine Sicherungskopie erstellt).

Schritt 4: Stellen Sie den Timer ein.

Crontab-Einstellungen.

[root@mysql_bak]# cat mysql_bak.sh
#!/bin/sh
#DATENBANK-INFO
DB_NAME="ppdb"
DB_USER="Stamm"
DB_PASS="Passwort"
DISPOSE_TABLE="Artikel entsorgen"
RST_TABLE="Übereinstimmung_rst"
DB_IP=100.55.1.129

BIN_DIR="/usr/bin"
BAK_DIR="/home/mysql_bak/data"
DATE=`Datum +%Y%m%d_%H%M%S`

#mkdir -p $BAK_DIR
#Sicherungspaket zum Erstellen eines komprimierten Pakets $BIN_DIR/mysqldump $DB_NAME $DISPOSE_TABLE > $BAK_DIR/$DISPOSE_TABLE.dump_$DATE.sql
$BIN_DIR/mysqldump $DB_NAME $DISPOSE_TABLE | gzip > $BAK_DIR/$DISPOSE_TABLE.dump_$DATE.sql.gz

$BIN_DIR/mysqldump $DB_NAME $RST_TABLE > $BAK_DIR/$RST_TABLE.dump_$DATE.sql
$BIN_DIR/mysqldump $DB_NAME $RST_TABLE | gzip > $BAK_DIR/$RST_TABLE.dump_$DATE.sql.gz

#Löschen Sie regelmäßig das 60-Tage-Backup-Paket find $BAK_DIR -name "name_*.sql.gz" -type f -mtime +60 -exec rm {} \; > /dev/null 2>&1

#Löschen Sie die angegebenen Datenbanktabellendaten von vor 30 Tagen (aktuelle Zeit minus 30 Tage).
delete_date=`Datum --date='vor 30 Tagen' +%Y-%m-%d`
echo "delete_date=$delete_date"

#Informationen zur ersten Tabelle löschen rst_sql="löschen aus $RST_TABLE, wobei update_time <= $delete_date, sortieren nach update_time;";

echo "rst_sql=$rst_sql"
#ret=$(mysql -u $DB_USER -h ${DB_IP} -p${DB_PASS} $DB_NAME -e "$sql");
ret=$(mysql -h${DB_IP} $DB_NAME -e "$rst_sql");
echo $ret

#Informationen zur Dispose-Tabelle löschen dispose_sql="löschen aus $DISPOSE_TABLE, wobei judge_time <= $delete_date, sortieren nach judge_time;";
echo "dispose_sql=$dispose_sql"
ret=$(mysql -h${DB_IP} $DB_NAME -e "$dispose_sql");
echo $ret

2. Geplante Einstellungen: Sicherung alle 30 Tage um 1:00 Uhr.

[root@mysql_bak]# cat /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=Stamm
HOME=/

# Weitere Einzelheiten finden Sie unter man 4 crontabs

# Beispiel einer Jobdefinition:
# .---------------- Minute (0 - 59)
# | .------------- Stunde (0 - 23)
# | | .---------- Tag des Monats (1 - 31)
# | | | .------- Monat (1 – 12) ODER Jan., Feb., März, Apr. …
# | | | | .---- Wochentag (0 - 6) (Sonntag=0 oder 7) ODER So, Mo, Di, Mi, Do, Fr, Sa
# | | | | |
# * * * * * Benutzername-Befehl, der ausgeführt werden soll
0 1 */30 * * /home/mysql_bak/mysql_bak.sh > /dev/null 2>&1

[root@mysql_bak]# crontab -e
0 1 */30 * * /home/mysql_bak/mysql_bak.sh > /dev/null 2>&1

Starten Sie den Crontab-Dienst neu.

Service Crond Neustart

Vielen Dank fürs Lesen, ich hoffe, es kann Ihnen helfen, danke für Ihre Unterstützung dieser Site!

Das könnte Sie auch interessieren:
  • Sehr ausführliche Hinweise zu MySQL-Datenbanken, Datenbanktabellen und grundlegenden Datenoperationen (einschließlich Code)
  • PHP+mysqli-Methode zum stapelweisen Ersetzen von Datenbanktabellenpräfixen
  • MySQL-Datenbanktabelle reparieren MyISAM
  • Skript zum Überprüfen und Reparieren von MySQL-Datenbanktabellen mithilfe der Shell
  • Spezielle Methoden zum Prüfen und Reparieren von MySQL-Datenbanktabellen
  • Datenbank- und Datenbanktabellencode mit MySQL erstellen
  • Code zum Extrahieren zufälliger Daten aus einer MySQL-Datenbanktabelle

<<:  Beispiele für ES6-Schleifen und iterierbare Objekte

>>:  So mounten Sie die Datenfestplatte nach dem Initialisieren der Systemfestplatte in Linux erneut

Artikel empfehlen

Beheben des Problems, dass Notizendetails auf Webseiten grau werden

1. Wenn im Internet Explorer die relative Position...

Wird der Index durch MySQL ungültig?

Wird MySQLs IN den Index ungültig machen? Gewohnh...

Detaillierter Prozess zum Konfigurieren eines HTTPS-Zertifikats unter Nginx

1. Der Unterschied zwischen HTTP und HTTPS HTTP: ...

Detaillierte Erläuterung des Watch-Listener-Beispiels in vue3.0

Inhaltsverzeichnis Vorwort Der Unterschied zwisch...

Schneller Einstieg in die Teleport-Komponenten und Verwendungssyntax von VUE 3

Inhaltsverzeichnis 1. Einführung in das Teleporti...

Miniprogramm zur Implementierung des kompletten Einkaufswagens

Das Miniprogramm implementiert einen vollständige...

Lösung für das zu langsame Herunterladen des Docker-Images

Der Download des Docker-Images hängt oder ist zu ...

Diagramm zur Installation von MySQL 5.6 unter Windows 7

Inhaltsverzeichnis 1. Herunterladen 2. Installati...

So installieren Sie Nginx in CentOS7

Installieren Sie die erforderliche Umgebung 1. gc...

Detaillierte Verwendung des Vue-Timers

In diesem Artikelbeispiel wird der spezifische Co...