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!