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

Praxis der Verwendung von Vite2+Vue3 zum Rendern von Markdown-Dokumenten

Inhaltsverzeichnis Benutzerdefinierte Vite-Plugin...

Benutzerdefinierte optionale Zeitkalenderkomponente von Vue

In diesem Artikelbeispiel wird der spezifische Co...

Einstellen der Engine MyISAM/InnoDB beim Erstellen einer Datentabelle in MySQL

Als ich MySQL konfiguriert habe, habe ich die Sta...

Zusammenfassung der Methoden zum Schreiben von Urteilsaussagen in MySQL

So schreiben Sie Urteilsaussagen in MySQL: Method...

Webdesign-Prinzipien für Hyperlinks

<br />Verwandte Artikel: 9 praktische Tipps ...

Einfache Schritte zum Kapseln von Komponenten in Vue-Projekten

Inhaltsverzeichnis Vorwort So kapseln Sie eine To...

Die „3I“-Standards für erfolgreiche Printwerbung

Für viele inländische Werbetreibende ist die Erste...

Detaillierte Erklärung der Überwachungseigenschaften von Vue

Inhaltsverzeichnis Vue-Monitoreigenschaften Was i...

HTML ist die zentrale Grundlage für die Entwicklung von WEB-Standards

HTML-zentrierte Front-End-Entwicklung entspricht p...

Detaillierte Analyse des temporären JDBC- und MySQL-Tablespace

Hintergrund Temporäre Tablespaces werden verwende...