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

Installation und Daemon-Konfiguration von Redis unter Windows und Linux

# Installations-Daemon-Konfiguration für Redis un...

Grafisches Tutorial zur Installation und Konfiguration von MySQL 8.0.15

In diesem Artikel wird die Installations- und Kon...

jQuery-Plugin zum Erzielen eines Karusselleffekts

Jeden Tag ein jQuery-Plugin - jQuery-Plugin zur I...

So richten Sie ein Bereitstellungsprojekt unter einem Linux-System ein

1. Ändern Sie die Firewall-Einstellungen und öffn...

IE8 bietet eine gute Erfahrung: Aktivitäten

Heute habe ich einen kleinen Vorgeschmack auf IE8...

Tutorial zur Installation von MySQL 5.6 auf CentOS 6.5

1. Laden Sie das RPM-Paket für Linux herunter htt...

Spezifische Verwendung von pthread_create in Linux zum Erstellen von Threads

pthread_create-Funktion Funktionseinführung pthre...

Der Unterschied zwischen Float- und Positionsattributen im CSS-Layout

CSS-Layout – Positionseigenschaft Das Positionsat...

Führen Sie die Shell oder das Programm im Docker-Container auf dem Host aus.

Um zu vermeiden, dass für den Betrieb immer wiede...

Lösung für Linux CentOS 6.5 ifconfig kann IP nicht abfragen

Kürzlich sagten einige Freunde, dass sie nach der...

Eine detaillierte Einführung in die CSS-Namensspezifikation BEM von QQtabBar

BEM von QQtabBar Zunächst einmal: Was bedeutet BE...

Implementierung einer zirkulären Scroll-Listenfunktion basierend auf Vue

Hinweis: Sie müssen dem übergeordneten Container ...

Schritte zum Bereitstellen eines Docker-Projekts in IDEA

Mittlerweile werden die meisten Projekte auf Dock...