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
Inhaltsverzeichnis 1. Schlüsselwörter 2. Dekonstr...
Inhaltsverzeichnis 1. Einführung in Binlog 2. Bin...
Ich habe gerade einen Alibaba Cloud-Host gekauft ...
Haben Sie schon einmal eine Situation erlebt, in d...
Inhaltsverzeichnis Überblick 1. Einfaches Beispie...
Inhaltsverzeichnis 1. Node.js und Vue 2. Führen S...
Ich habe vor Kurzem VMware Horizon bereitgestellt...
Während des täglichen Optimierungsprozesses stell...
In diesem Artikel wird der spezifische Code für J...
Der Standardbetriebsmodus von MySQL ist der Autoc...
Native JS implementiert das Klickzahlenspiel zu I...
Frage Nachdem das Unternehmen den Server migriert...
Blanks Blog: http://www.planabc.net/ Die Verwendu...
Ich verwende Navicat als Datenbanktool. Andere si...
In MySQL können Sie die Funktionen IF(), IFNULL()...