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
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
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
Redémarrez le service crontab
service crond restart
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!