Maison > base de données > tutoriel mysql > Introduction détaillée à l'exemple de code pour la sauvegarde régulière des tables de la base de données Mysql

Introduction détaillée à l'exemple de code pour la sauvegarde régulière des tables de la base de données Mysql

黄舟
Libérer: 2017-03-21 13:31:30
original
1055 Les gens l'ont consulté

Cet article présente principalement les informations pertinentes sur la mise en œuvre d'une sauvegarde régulière de la base de données Mysql table. Les amis dans le besoin peuvent se référer à

La mise en œuvre d'une sauvegarde régulière de la base de données Mysql. table

0. Contexte

Dans l'environnement de développement actuel, le programme frontal doit mettre à jour/insérer des données dans la table de base de données spécifiée par MySQL dans une période de temps donnée. À mesure que la quantité de données augmente et que le numéro de base de la table de base de données de base augmente, il y aura un décalage d'environ 5 secondes à chaque mise à jour.

Plan d'amélioration un : Mise à jour par lots, le nombre cumulé de 10 ou 100 éléments sera mis à jour et stocké une fois

Amélioration ; plan deux : Sauvegardez les données 1 mois avant la date actuelle et supprimez les données il y a 1 mois dans la table de base de données actuelle. Il a été déterminé que cette méthode améliore l’efficacité de l’accès dans une certaine mesure. Cause première : la table de base a une petite cardinalité et l'efficacité de la requête est relativement améliorée.

1. Résumé de la sauvegarde régulière des tables de base de données

Étape 1 : Sauvegardez la table de base de données spécifiée dans la base de données spécifiée par Mysql.

Utilisez mysqldump et définissez la période sur 30 jours.

Étape 2 : Supprimez les fichiers sauvegardés et les packages compressés il y a 60 jours.

Étape 3 : Supprimez les données de la table de la base de données 30 jours avant la date actuelle. (L'étape 1 a déjà été sauvegardée).

Étape 4 : Réglez la minuterie.

paramètres crontab.

[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
Copier après la connexion

2. Paramètre de planification : sauvegarde à 1 heure tous les 30 jours.

[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
Copier après la connexion

Redémarrez le service crontab

service crond restart
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal