实战: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

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Wenn Sie ein Linux-Betriebssystem verwenden und möchten, dass das System beim Booten automatisch ein Laufwerk einbindet, können Sie dies tun, indem Sie die eindeutige Kennung (UID) des Geräts und den Einhängepunktpfad zur fstab-Konfigurationsdatei hinzufügen. fstab ist eine Dateisystemtabellendatei, die sich im Verzeichnis /etc befindet. Sie enthält Informationen zu den Dateisystemen, die beim Systemstart gemountet werden müssen. Durch Bearbeiten der fstab-Datei können Sie sicherstellen, dass die erforderlichen Laufwerke bei jedem Systemstart korrekt geladen werden und so einen stabilen Betrieb des Systems gewährleisten. Die automatische Montage von Treibern kann in verschiedenen Situationen bequem eingesetzt werden. Ich habe beispielsweise vor, mein System auf einem externen Speichergerät zu sichern. Um eine Automatisierung zu erreichen, stellen Sie sicher, dass das Gerät auch beim Start mit dem System verbunden bleibt. Ebenso werden viele Anwendungen direkt

PHP-Übung: Codebeispiel zur schnellen Implementierung der Fibonacci-Folge Die Fibonacci-Folge ist eine sehr interessante und häufig vorkommende Folge in der Mathematik. Sie ist wie folgt definiert: Die erste und zweite Zahl sind 0 und 1, und ab der dritten Zahl beginnt jede Zahl ist die Summe der beiden vorherigen Zahlen. Die ersten Zahlen in der Fibonacci-Folge sind 0,1,1,2,3,5,8,13,21 usw. In PHP können wir die Fibonacci-Folge durch Rekursion und Iteration generieren. Im Folgenden zeigen wir diese beiden

Mit der Entwicklung des Internets sind Bilder zu einem unverzichtbaren Bestandteil von Webseiten geworden. Da jedoch die Anzahl der Bilder zunimmt, ist die Ladegeschwindigkeit von Bildern zu einem sehr wichtigen Thema geworden. Um dieses Problem zu lösen, verwenden viele Websites Miniaturansichten zum Anzeigen von Bildern. Um Miniaturansichten zu generieren, müssen wir jedoch professionelle Bildverarbeitungstools verwenden, was für einige Laien sehr problematisch ist. Dann ist die Verwendung von JavaScript zur automatischen Generierung von Miniaturansichten eine gute Wahl. So verwenden Sie JavaS

PHP und PHPMAILER: Wie implementiert man die automatische Filterung des E-Mail-Versands? In der modernen Gesellschaft ist E-Mail zu einem der wichtigsten Kommunikationsmittel der Menschen geworden. Mit der Beliebtheit und weit verbreiteten Nutzung von E-Mails hat jedoch auch die Menge an Spam einen explosionsartigen Wachstumstrend gezeigt. Spam-E-Mails verschwenden nicht nur Zeit und Netzwerkressourcen der Benutzer, sondern können auch Viren und Phishing-Verhalten mit sich bringen. Daher ist es bei der Entwicklung der E-Mail-Versandfunktion von entscheidender Bedeutung, die Funktion zum automatischen Filtern von Spam hinzuzufügen. In diesem Artikel wird die Verwendung von PHP und PHPMai vorgestellt

Vorwort: vim ist ein leistungsstarkes Textbearbeitungstool, das unter Linux sehr beliebt ist. Kürzlich stieß ich bei der Verwendung von vim auf einem anderen Server auf ein seltsames Problem: Als ich ein lokal geschriebenes Skript kopierte und in eine leere Datei auf dem Server einfügte, kam es zu einer automatischen Einrückung. Um ein einfaches Beispiel zu verwenden: Das Skript, das ich lokal geschrieben habe, lautet wie folgt: aaabbbcccddd Wenn ich den obigen Inhalt kopiere und in eine leere Datei auf dem Server einfüge, erhalte ich Folgendes: aabbbcccddd uns. Einrückung formatieren. Allerdings ist diese Automatik etwas unintelligent. Tragen Sie hier die Lösung ein. Lösung: Legen Sie die .vimrc-Konfigurationsdatei in unserem Home-Verzeichnis fest, neu

Die Datenexportfunktion ist eine sehr häufige Anforderung in der tatsächlichen Entwicklung, insbesondere in Szenarien wie Back-End-Managementsystemen oder dem Export von Datenberichten. In diesem Artikel wird die Golang-Sprache als Beispiel verwendet, um die Implementierungsfähigkeiten der Datenexportfunktion zu teilen und spezifische Codebeispiele zu geben. 1. Vorbereitung der Umgebung Bevor Sie beginnen, stellen Sie sicher, dass Sie die Golang-Umgebung installiert haben und mit der grundlegenden Syntax und Funktionsweise von Golang vertraut sind. Darüber hinaus müssen Sie zur Implementierung der Datenexportfunktion möglicherweise eine Bibliothek eines Drittanbieters verwenden, z. B. github.com/360EntSec

Dieser Artikel vermittelt Ihnen relevantes Wissen über domänenübergreifende Uniapp-Programme und stellt Fragen im Zusammenhang mit der Untervergabe von Uniapp- und Miniprogrammen vor. Jedes Miniprogramm, das Untervergabe verwendet, muss ein Hauptpaket enthalten. Im sogenannten Hauptpaket werden die Standard-Startseite/TabBar-Seite sowie einige öffentliche Ressourcen/JS-Skripte platziert, die alle Unterpakete verwenden müssen, während die Unterpakete hoffentlich entsprechend der Konfiguration des Entwicklers unterteilt sind es wird für alle hilfreich sein.

MySQL-Tabellenentwurfspraxis: Erstellen Sie eine E-Commerce-Bestelltabelle und eine Produktbewertungstabelle. In der Datenbank der E-Commerce-Plattform sind die Bestelltabelle und die Produktbewertungstabelle zwei sehr wichtige Tabellen. In diesem Artikel wird erläutert, wie Sie MySQL zum Entwerfen und Erstellen dieser beiden Tabellen verwenden, und es werden Codebeispiele aufgeführt. 1. Entwurf und Erstellung der Bestelltabelle Die Bestelltabelle dient zum Speichern der Kaufinformationen des Benutzers, einschließlich Bestellnummer, Benutzer-ID, Produkt-ID, Kaufmenge, Bestellstatus und anderer Felder. Zuerst müssen wir mit CREATET eine Tabelle mit dem Namen „order“ erstellen
