实战:INNOBACKUPEXformysql5.6自动备份脚本
#backup.sh #!/bin/sh # # 第一次执行它的时候它会检查是否有完全备份,否则先创建一个全库备份 # 当你再次运行它的时候,它会根据脚本中的设定来基于之前的全库备份进行增量备份 #ocpyang@126.com INNOBACKUPEX_PATH=innobackupex #INNOBACKUPEX的命令 INNOB
#backup.sh
#!/bin/sh
#
# 第一次执行它的时候它会检查是否有完全备份,否则先创建一个全库备份
# 当你再次运行它的时候,它会根据脚本中的设定来基于之前的全库备份进行增量备份
#ocpyang@126.com
INNOBACKUPEX_PATH=innobackupex #INNOBACKUPEX的命令
INNOBACKUPEXFULL=/usr/bin/$INNOBACKUPEX_PATH #INNOBACKUPEX的命令路径
#mysql目标服务器以及用户名和密码
MYSQL_CMD="--host=192.168.2.188 --user=system --password=password --port=3306"
MYSQL_UP="--user=system --password=password -ppassword" #mysql的用户名和密码
TMPLOG="/tmp/innobackupex.$$.log"
MY_CNF=/usr/local/mysql/my.cnf #mysql的配置文件
MYSQL=/usr/bin/mysql
MYSQL_ADMIN=/usr/bin/mysqladmin
BACKUP_DIR=/backup # 备份的主目录
FULLBACKUP_DIR=$BACKUP_DIR/full # 全库备份的目录
INCRBACKUP_DIR=$BACKUP_DIR/incre # 增量备份的目录
FULLBACKUP_INTERVAL=86400 # 全库备份的间隔周期,时间:秒
KEEP_FULLBACKUP=1 # 至少保留几个全库备份
logfiledate=backup.`date +%Y%m%d%H%M`.txt
#开始时间
STARTED_TIME=`date +%s`
#############################################################################
# 显示错误并退出
#############################################################################
error()
{
echo "$1" 1>&2
exit 1
}
# 检查执行环境
if [ ! -x $INNOBACKUPEXFULL ]; then
error "$INNOBACKUPEXFULL未安装或未链接到/usr/bin."
fi
if [ ! -d $BACKUP_DIR ]; then
error "备份目标文件夹:$BACKUP_DIR不存在."
fi
if [ -z "`$MYSQL_ADMIN $MYSQL_UP status | grep 'Uptime'`" ] ; then
error "MySQL 没有启动运行."
fi
if ! `echo 'exit' | $MYSQL -s $MYSQL_CMD` ; then
error "提供的数据库用户名或密码不正确!"
fi
# 备份的头部信息
echo "----------------------------"
echo
echo "$0: MySQL备份脚本"
echo "开始于: `date +%F' '%T' '%w`"
echo
#新建全备和差异备份的目录
mkdir -p $FULLBACKUP_DIR
mkdir -p $INCRBACKUP_DIR
#查找最新的完全备份
LATEST_FULL_BACKUP=`find $FULLBACKUP_DIR -mindepth 1 -maxdepth 1 -type d -printf "%P\n" | sort -nr | head -1`
# 查找最近修改的最新备份
LATEST_FULL_BACKUP_CREATED_TIME=`stat -c %Y $FULLBACKUP_DIR/$LATEST_FULL_BACKUP`
#如果全备有效进行增量备份否则执行完全备份
if [ "$LATEST_FULL_BACKUP" -a `expr $LATEST_FULL_BACKUP_CREATED_TIME + $FULLBACKUP_INTERVAL + 5` -ge $STARTED_TIME ] ; then
# 如果最新的全备未过期则以最新的全备文件名命名在增量备份目录下新建目录
echo -e "完全备份$LATEST_FULL_BACKUP未过期,将根据$LATEST_FULL_BACKUP名字作为增量备份目录命名"
echo " "
NEW_INCRDIR=$INCRBACKUP_DIR/$LATEST_FULL_BACKUP
mkdir -p $NEW_INCRDIR
# 查找最新的增量备份是否存在.指定一个备份的路径作为增量备份的基础
LATEST_INCR_BACKUP=`find $NEW_INCRDIR -mindepth 1 -maxdepth 1 -type d | sort -nr | head -1`
if [ ! $LATEST_INCR_BACKUP ] ; then
INCRBASEDIR=$FULLBACKUP_DIR/$LATEST_FULL_BACKUP
echo -e "增量备份将以$INCRBASEDIR作为备份基础"
echo " "
else
INCRBASEDIR=$LATEST_INCR_BACKUP
echo -e "增量备份将以$INCRBASEDIR作为备份基础"
echo " "
fi
echo "使用$INCRBASEDIR作为基础做新的增量备份."
$INNOBACKUPEXFULL --defaults-file=$MY_CNF --use-memory=4G $MYSQL_CMD --incremental $NEW_INCRDIR --incremental-basedir $INCRBASEDIR > $TMPLOG 2>&1
else
echo "*********************************"
echo -e "正在执行全新的完全备份...请稍等..."
echo "*********************************"
$INNOBACKUPEXFULL --defaults-file=$MY_CNF --use-memory=4G $MYSQL_CMD $FULLBACKUP_DIR > $TMPLOG 2>&1
fi
#保留一份备份的详细日志
cat $TMPLOG>/backup/$logfiledate
if [ -z "`tail -1 $TMPLOG | grep 'innobackupex: completed OK!'`" ] ; then
echo "$INNOBACKUPEX命令执行失败:"; echo
echo -e "---------- $INNOBACKUPEX_PATH错误 ----------"
cat $TMPLOG
rm -f $TMPLOG
exit 1
fi
THISBACKUP=`awk -- "/Backup created in directory/ { split( \\\$0, p, \"'\" ) ; print p[2] }" $TMPLOG`
rm -f $TMPLOG
echo -n "数据库成功备份到:$THISBACKUP"
echo
# 提示应该保留的备份文件起点
LATEST_FULL_BACKUP=`find $FULLBACKUP_DIR -mindepth 1 -maxdepth 1 -type d -printf "%P\n" | sort -nr | head -1`
echo -e "必须保留$KEEP_FULLBACKUP份全备和全备$LATEST_FULL_BACKUP以后的所有增量备份."
#删除过期的全备
echo -e "寻找过期的全备文件并删除">>/backup/$logfiledate
for efile in $(/usr/bin/find $FULLBACKUP_DIR/ -mtime +6)
do
if [ -d $efile ]; then
rm -rf $efile
echo -e "删除过期全备文件:$efile" >>/backup/$logfiledate
elif [ -f $efile ]; then
rm -rf $file
echo -e "删除过期全备文件:$efile" >>/backup/$logfiledate
fi;
done
if [ $? -eq "0" ];then
echo
echo -e "未找到可以删除的过期全备文件"
fi
echo
echo "完成于: `date +%F' '%T' '%w`"
exit 0

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds



Si vous utilisez un système d'exploitation Linux et souhaitez que le système monte automatiquement un lecteur au démarrage, vous pouvez le faire en ajoutant l'identifiant unique (UID) du périphérique et le chemin du point de montage au fichier de configuration fstab. fstab est un fichier de table du système de fichiers situé dans le répertoire /etc. Il contient des informations sur les systèmes de fichiers qui doivent être montés au démarrage du système. En modifiant le fichier fstab, vous pouvez vous assurer que les lecteurs requis sont chargés correctement à chaque démarrage du système, garantissant ainsi un fonctionnement stable du système. Les pilotes à montage automatique peuvent être utilisés facilement dans diverses situations. Par exemple, je prévois de sauvegarder mon système sur un périphérique de stockage externe. Afin de réaliser l'automatisation, assurez-vous que l'appareil reste connecté au système, même au démarrage. De même, de nombreuses applications seront directement

Pratique PHP : Exemple de code pour implémenter rapidement la séquence de Fibonacci La séquence de Fibonacci est une séquence très intéressante et courante en mathématiques. Elle est définie comme suit : le premier et le deuxième nombres sont 0 et 1, et à partir du troisième, en commençant par les nombres, chaque nombre. est la somme des deux nombres précédents. Les premiers nombres de la séquence de Fibonacci sont 0,1,1,2,3,5,8,13,21,... et ainsi de suite. En PHP, nous pouvons générer la séquence de Fibonacci par récursion et itération. Ci-dessous, nous montrerons ces deux

Avec le développement d’Internet, les images sont devenues un élément indispensable des pages Web. Mais à mesure que le nombre d’images augmente, la vitesse de chargement des images est devenue un problème très important. Afin de résoudre ce problème, de nombreux sites Web utilisent des vignettes pour afficher des images, mais pour générer des vignettes, nous devons utiliser des outils de traitement d'images professionnels, ce qui est une chose très gênante pour certains non-professionnels. Ensuite, utiliser JavaScript pour générer automatiquement des vignettes devient un bon choix. Comment utiliser JavaS

PHP et PHPMAILER : Comment implémenter le filtrage automatique des envois de mail ? Dans la société moderne, le courrier électronique est devenu l’un des moyens de communication les plus importants. Cependant, avec la popularité et l'utilisation généralisée du courrier électronique, la quantité de spam a également connu une tendance à la croissance explosive. Les courriers indésirables font non seulement perdre du temps aux utilisateurs et des ressources réseau, mais peuvent également générer des virus et des comportements de phishing. Par conséquent, lors du développement de la fonction d’envoi d’e-mails, il devient crucial d’ajouter la fonction de filtrage automatique du spam. Cet article présentera comment utiliser PHP et PHPMai

Préface : vim est un puissant outil d’édition de texte, très populaire sous Linux. Récemment, j'ai rencontré un problème étrange lors de l'utilisation de vim sur un autre serveur : lorsque j'ai copié et collé un script écrit localement dans un fichier vierge sur le serveur, une indentation automatique s'est produite. Pour utiliser un exemple simple, le script que j'ai écrit localement est le suivant : aaabbbcccddd. Lorsque je copie le contenu ci-dessus et que je le colle dans un fichier vierge sur le serveur, ce que j'obtiens est : aabbbcccddd. Évidemment, c'est ce que vim fait automatiquement. nous. Formater l'indentation. Cependant, cet automatique est un peu inintelligent. Enregistrez la solution ici. Solution : définissez le fichier de configuration .vimrc dans notre répertoire personnel, nouveau

Cet article vous apporte des connaissances pertinentes sur le multi-domaine Uniapp et présente les problèmes liés à la sous-traitance des programmes Uniapp et Mini. Chaque mini-programme qui utilise la sous-traitance doit contenir un package principal. Le soi-disant package principal est l'endroit où est placée la page de démarrage/la page TabBar par défaut, ainsi que certaines ressources publiques/scripts JS que tous les sous-packages doivent utiliser, tandis que les sous-packages sont divisés en fonction de la configuration du développeur, j'espère. cela sera utile à tout le monde.

Pratique de conception de tables MySQL : créez une table de commande de commerce électronique et une table d'évaluation des produits dans la base de données de la plateforme de commerce électronique, la table de commande et la table d'évaluation des produits sont deux tables très importantes. Cet article expliquera comment utiliser MySQL pour concevoir et créer ces deux tables, et donnera des exemples de code. 1. Conception et création du tableau des commandes Le tableau des commandes est utilisé pour stocker les informations d'achat de l'utilisateur, y compris le numéro de commande, l'ID utilisateur, l'ID produit, la quantité achetée, le statut de la commande et d'autres champs. Tout d'abord, nous devons créer une table nommée "order" en utilisant CREATET

Pratique de développement Java : intégration du service de stockage cloud Qiniu pour implémenter le téléchargement de fichiers Introduction Avec le développement du cloud computing et du stockage cloud, de plus en plus d'applications doivent télécharger des fichiers vers le cloud à des fins de stockage et de gestion. Les avantages des services de stockage cloud sont une fiabilité, une évolutivité et une flexibilité élevées. Cet article expliquera comment utiliser le développement du langage Java, intégrer le service de stockage cloud Qiniu et implémenter la fonction de téléchargement de fichiers. À propos de Qiniu Cloud Qiniu Cloud est l'un des principaux fournisseurs de services de stockage cloud en Chine, fournissant des services complets de stockage cloud et de distribution de contenu. Les utilisateurs peuvent utiliser Qiniu Yunti
