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:
|
<<: Beispiele für ES6-Schleifen und iterierbare Objekte
>>: So mounten Sie die Datenfestplatte nach dem Initialisieren der Systemfestplatte in Linux erneut
1. Wenn im Internet Explorer die relative Position...
Wird MySQLs IN den Index ungültig machen? Gewohnh...
Inhaltsverzeichnis 1. MySQL-Platzhalter-Fuzzy-Abf...
In letzter Zeit gibt es eine besonders ungewöhnli...
1. Der Unterschied zwischen HTTP und HTTPS HTTP: ...
1. Tabellenstruktur TABELLE person Ausweis Name 1...
Inhaltsverzeichnis Vorwort Der Unterschied zwisch...
Inhaltsverzeichnis 1. Einführung in das Teleporti...
Das Miniprogramm implementiert einen vollständige...
Der Download des Docker-Images hängt oder ist zu ...
Vorwort Kürzlich stieß ich auf eine Anforderung. ...
Inhaltsverzeichnis 1. Herunterladen 2. Installati...
Installieren Sie die erforderliche Umgebung 1. gc...
Inhaltsverzeichnis Vorwort Umsetzungsideen Implem...
In diesem Artikelbeispiel wird der spezifische Co...