Heim > Datenbank > MySQL-Tutorial > Hauptteil

Detaillierte Einführung in den Beispielcode für die regelmäßige Sicherung von MySQL-Datenbanktabellen

黄舟
Freigeben: 2017-03-21 13:31:30
Original
1041 Leute haben es durchsucht

In diesem Artikel werden hauptsächlich relevante Informationen zur Implementierung einer regelmäßigen Sicherung der MySQL-Datenbank -Tabelle vorgestellt. Freunde in Not können sich auf

Die Implementierung einer regelmäßigen Sicherung der MySQL-Datenbank beziehen Tabelle

0. Hintergrund

In der tatsächlichen Entwicklungsumgebung muss das Front-End-Programm Daten in die von MySQL angegebene Datenbanktabelle aktualisieren/einfügen einen bestimmten Zeitraum. Wenn die Datenmenge zunimmt und die Basisnummer der Basisdatenbanktabelle zunimmt, kommt es bei jeder Aktualisierung zu einer Verzögerung von etwa 5 Sekunden.

Verbesserungsplan eins: Batch-Update, die kumulierte Anzahl von 10 oder 100 Artikeln wird einmal aktualisiert und gespeichert

Verbesserung Plan Zwei: Sichern Sie die Daten 1 Monat vor dem aktuellen Datum und löschen Sie die Daten vor 1 Monat in der aktuellen Datenbanktabelle. Es wurde festgestellt, dass diese Methode die Zugriffseffizienz bis zu einem gewissen Grad verbessert. Grundursache: Die Basistabelle hat eine kleine Kardinalität und die Effizienz der Abfrage ist relativ verbessert.

1. Zusammenfassung der regelmäßigen Sicherung von Datenbanktabellen

Schritt 1: Sichern Sie die angegebene Datenbanktabelle in der von MySQL angegebenen Datenbank.

Verwenden Sie mysqldump und legen Sie den Zeitraum auf 30 Tage fest.

Schritt 2: Löschen Sie die gesicherten Dateien und komprimierten Pakete vor 60 Tagen.

Schritt 3: Löschen Sie die Daten in der Datenbanktabelle 30 Tage vor dem aktuellen Datum. (Schritt 1 wurde bereits gesichert).

Schritt 4: Stellen Sie den Timer ein.

Crontab-Einstellungen.

[root@mysql_bak]# cat mysql_bak.sh
#!/bin/sh
#DATABASE INFO
DB_NAME="ppdb"
DB_USER="root"
DB_PASS="password"
DISPOSE_TABLE="dispose_ticles"
RST_TABLE="match_rst"
DB_IP=100.55.1.129

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

#mkdir -p $BAK_DIR
#备份包 形成压缩包
$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

#定期删除60天的备份包
find $BAK_DIR -name "name_*.sql.gz" -type f -mtime +60 -exec rm {} \; > /dev/null 2>&1

#30天前的指定库表数据删除操作 (当前时间减去30天)
delete_date=`date --date='30 day ago' +%Y-%m-%d`
echo "delete_date=$delete_date"

#删除rst表信息
rst_sql="delete from $RST_TABLE where update_time <= $delete_date order by 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

#删除dispose表信息
dispose_sql="delete from $DISPOSE_TABLE where judge_time <= $delete_date order by judge_time;";
echo "dispose_sql=$dispose_sql"
ret=$(mysql -h${DB_IP} $DB_NAME -e "$dispose_sql");
echo $ret
Nach dem Login kopieren

2. Zeitplaneinstellung: Sicherung alle 30 Tage um 1 Uhr.

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

# For details see man 4 crontabs

# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed
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
Nach dem Login kopieren

Starten Sie den Crontab-Dienst neu

service crond restart
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonDetaillierte Einführung in den Beispielcode für die regelmäßige Sicherung von MySQL-Datenbanktabellen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage