xtrabackup 增量,全量備資料庫指令碼
#!/bin/sh
#xtrabackup備份指令碼
#獲取指令碼所存放目錄
cd `dirname $0`
bash_path=`pwd`
#指令碼名
me=$(basename $0)
#定義變數
LOG=/var/log/mysql_backup.log
DATE=$(date +%F)
DATE1=$(date +%H)
LASTDATE=$(date -d "yesterday" +%F)
MYCONF="/etc/my.cnf"
PASSWD=$(cat /data/save/mysql_root)
BACK_FILE_DIR="/data/backups/database"
EMAIL=("[email protected] ")
BACK_SERVER="172.16.1.12"
BACK_SERVER_DIR="/home/mysqlbackup"
ssh_port="22"
ssh_parameters="-o StrictHostKeyChecking=no -o ConnectTimeout=60"
ssh_command="ssh ${ssh_parameters} -p ${ssh_port}"
scp_command="scp ${ssh_parameters} -P ${ssh_port}"
#定義儲存日誌函式
function save_log () {
echo -e "[`date +%F\ %T`] $*" >> $LOG
}
#定義傳送郵件函式
function send_mail () {
echo "$*" |mail -s "[mysql `date +%F\ %T` ]" ${EMAIL[@]}
}
save_log "start $0"
#定義資料庫多例項對應的socket,備份的資料夾名稱,對應的埠,主機名,對應的mysqldgroup
case $1 in
trade)
SOCKET=/tmp/mysql_3306.sock
FILENAME=trade
PORT=3306
HOST=S-C9
MYSQLD_GROUP=mysqld1
;;
product)
SOCKET=/tmp/mysql_3307.sock
FILENAME=product
PORT=3307
HOST=S-C9
MYSQLD_GROUP=mysqld2
;;
user)
SOCKET=/tmp/mysql_3308.sock
FILENAME=user
PORT=3308
HOST=S-C9
MYSQLD_GROUP=mysqld3
;;
bbs)
SOCKET=/tmp/mysql_3306.sock
FILENAME=bbs
PORT=3306
HOST=S-C11
MYSQLD_GROUP=mysqld1
;;
excess)
SOCKET=/tmp/mysql_3307.sock
FILENAME=excess
PORT=3307
HOST=S-C11
MYSQLD_GROUP=mysqld2
;;
sc)
SOCKET=/tmp/mysql_3308.sock
FILENAME=sc
PORT=3308
HOST=S-C11
MYSQLD_GROUP=mysqld3
;;
cms)
SOCKET=/tmp/mysql_3306.sock
FILENAME=cms
PORT=3306
HOST=S-C12
MYSQLD_GROUP=mysqld1
;;
act)
SOCKET=/tmp/mysql_3307.sock
FILENAME=act
PORT=3307
HOST=S-C12
MYSQLD_GROUP=mysqld2
;;
market)
SOCKET=/tmp/mysql_3308.sock
FILENAME=market
PORT=3308
HOST=S-C12
MYSQLD_GROUP=mysqld3
;;
esac
#}
#建立目錄
[ ! -d "${BACK_FILE_DIR}/${FILENAME}/${DATE}" ] && mkdir -p ${BACK_FILE_DIR}/${FILENAME}/${DATE}
function xtrabackup_backup () {
NEW_DIR=$(ls -l ${BACK_FILE_DIR}/${FILENAME}/${DATE} | tail -n 1 | awk '{print $9}')
LASTNEW_DIR=$(ls -l ${BACK_FILE_DIR}/${FILENAME}/${LASTDATE} | tail -n 1 | awk '{print $9}')
#備份失敗操作
function backup_failed_operation () {
NEW_DIR1=$(ls -l ${BACK_FILE_DIR}/${FILENAME}/${DATE} | tail -n 1 | awk '{print $9}')
LASTNEW_DIR1=$(ls -l $${BACK_FILE_DIR}/${FILENAME}/${LASTDATE} | tail -n 1 | awk '{print $9}')
#備份失敗傳送郵件
if [ $DATE1 -eq 03 ] ;then
save_log "${FILENAME} full-backup failed"
send_mail "
Server:${HOST}
Port:${PORT}
DB:${FILENAME}
PATH:${BACK_FILE_DIR}/${FILENAME}/${DATE}/
full-backup-failed"
else
save_log "${FILENAME} incremental-backup failed"
send_mail "
Server:${HOST}
Port:${PORT}
DB:${FILENAME}
PATH:${BACK_FILE_DIR}/${FILENAME}/${DATE}/
incremental-backup-failed"
fi
#刪除昨天備份備份資料夾裡面備份失敗的資料夾
if [ $DATE1 -ge 00 ] && [ $DATE1 -le 02 ] ;then
rm -rf ${BACK_FILE_DIR}/${FILENAME}/${LASTDATE}/$LASTNEW_DIR1
#刪除今天備份備份資料夾裡面備份失敗的資料夾
else
rm -rf ${BACK_FILE_DIR}/${FILENAME}/${DATE}/$NEW_DIR1
fi
exit 1
}
#增量備份
if [ $DATE1 -ge 04 ] && [ $DATE1 -le 23 ] ;then
innobackupex --defaults-file=${MYCONF} --user=root --password=${PASSWD} --defaults-group=${MYSQLD_GROUP} --socket=${SOCKET} --incremental-basedir=${BACK_FILE_DIR}/${FILENAME}/${DATE}/$NEW_DIR --incremental ${BACK_FILE_DIR}/${FILENAME}/${DATE}
[ $? -eq 0 ] && save_log "${FILENAME} incremental-backup successed" || backup_failed_operation
elif [ $DATE1 -ge 00 ] && [ $DATE1 -le 02 ] ;then
innobackupex --defaults-file=${MYCONF} --user=root --password=${PASSWD} --defaults-group=${MYSQLD_GROUP} --socket=${SOCKET} --incremental-basedir=${BACK_FILE_DIR}/${FILENAME}/${LASTDATE}/$LASTNEW_DIR --incremental ${BACK_FILE_DIR}/${FILENAME}/${LASTDATE}
[ $? -eq 0 ] && save_log "${FILENAME} incremental-backup successed" || backup_failed_operation
else
#全量備份
innobackupex --defaults-file=${MYCONF} --user=root --password=${PASSWD} --defaults-group=${MYSQLD_GROUP} --socket=${SOCKET} ${BACK_FILE_DIR}/${FILENAME}/${DATE}
[ $? -eq 0 ] && save_log "${FILENAME} full-backup successed" || backup_failed_operation
#壓縮打包
cd ${BACK_FILE_DIR}/${FILENAME}/
tar -zcvf $LASTDATE.tgz $LASTDATE
#在遠端伺服器建立資料夾
$ssh_command [email protected]${BACK_SERVER} "mkdir -p ${BACK_SERVER_DIR}/${FILENAME}/"
#在遠端伺服器刪除30天之前的檔案
$ssh_command [email protected]${BACK_SERVER} "find ${BACK_SERVER_DIR}/${FILENAME}/ -mtime +30 -type f -exec rm -rf {} \;"
#傳輸到遠端伺服器備份
rsync -avz -e "${ssh_command}" ${BACK_FILE_DIR}/${FILENAME}/$LASTDATE.tgz [email protected]${BACK_SERVER}:${BACK_SERVER_DIR}/${FILENAME}/
[ $? -eq 0 ] && save_log "${FILENAME} rsync successed" && rm -rf ${BACK_FILE_DIR}/${FILENAME}/${LASTDATE}* || { save_log "${FILENAME} rsync failed" ; send_mail "
Server:${HOST}
Port:${PORT}
DB:${FILENAME}
PATH:${BACK_FILE_DIR}/${FILENAME}/
rsync-failed" ; }
fi
}
xtrabackup_backup
save_log "finish $0\n"
相關推薦
xtrabackup 增量,全量備資料庫指令碼
#!/bin/sh #xtrabackup備份指令碼 #獲取指令碼所存放目錄 cd `dirname $0` bash_path=`pwd` #指令碼名 me=$(basename $0) #定義變數 LOG=/var/log/mysql_backup.log
(一)solr 7.31版本window系統全程安裝搭建,涵蓋專案用到的大部分配置,常用查詢,solr多條件查詢、排序,配置資料庫,定時同步,全量與增量更新,使用solrJ在java程式進行增刪改查
前言:由於專案最近在做淘寶客商品資訊查詢這一塊,做搜尋引擎,離不開全文搜尋伺服器,我這裡選擇了solr。solr的好處可以自行百科,這裡主要是講解技術。這篇文章主要講解window的安裝和使用。若大家感興趣或者專案用到,希望你能跟著我的步驟進行下去,如果遇到問題,可以後續看下我在最底下的問題
(轉載)一文搞定資料倉庫之拉鍊表,流水錶,全量表,增量表
轉載自:https://blog.csdn.net/mtj66/article/details/78019370 全量表:每天的所有的最新狀態的資料, 增量表:每天的新增資料,增量資料是上次匯出之後的新資料。 拉鍊表:維護歷史狀態,以及最新狀態資料的一種
mongodb增量或全量備份指令碼
mongodb備份指令碼,可以全量或增量進行備份,兩年前所寫,目前網上mongodb備份相關的指令碼也還是很少。 功能 定期對mongodb資料庫資料進行全量備份或增量備份(副本集架構),並可以壓縮上傳到阿里雲oss(本地會先生成壓縮包,可以設定不上傳oss)。 指令碼執行環境 使用python語言編寫,
用ant自動打增量包,全量包,打jar包
build.xml:<?xml version="1.0" encoding="UTF-8" ?> <project name="eShop" default="release" basedir="."> <!-- .代表當前專案所
jdbc操作 資料庫同步,全量,加入執行緒,批處理
動態資料庫的全量、增量同步,多執行緒增加效能,批處理。 程式碼可以直接執行: 同步的類: import java.sql.Connection; import java.sql.DatabaseMetaData; import java.sql.Dri
logstash-input-jdbc增量、全量資料同步
一、場景 筆者在mysql資料同步到ES中,發現第一次同步時需要全量的資料,之後則需要定時去同步增量資料,所以筆者提供增量和全量同步的conf供讀者參考 二、解決方案 1、全量資料同步 具體如何執行可參考https://blog.csdn.net/w_linux/articl
Solr 初始全量匯入資料庫資料
假設存在表 newfrom表示 其中 有以下資料: 進入solr所在伺服器 搜尋 dataimport相關jar包 [email protected]:/opt/solr$ find / -name *import*.jar /opt/solr/dist/sol
Mysql 開啟bin-log並實現自動化增量和全量備份
思路:開啟 bin-log 來做增量,用 Mysqldump 做全量 1 開啟 bin-log 檢視是否開啟 binlog 進入mysql命令列介面,show variables like '%log_bin%'; 如果 log-bin 是 O
七、通過java程式碼實現增量、全量索引
前期對solr全文檢索已經做了絕大部分的工作,現在剩下的就是如何讓索引自動載入,包括全量載入及增量載入。 1.首先要實現自動的全量載入及增量載入就要通過定時任務來實現,這裡定時任務的編寫不在這裡描述。 2.如下是我在專案中的全量、增量載入的程式碼: packag
xtrabackup全量,增量備份指令碼(拿走即用)
#!/bin/sh # add ling INNOBACKUPEX=innobackupex INNOBACKUPEXFULL=/usr/bin/$INNOBACKUPEX TODAY=`date +%Y%m%d%H%M` USEROPTIONS="--user=user --password=1234
Xtrabackup 備份大資料庫(全量備份和增量備份)
Xtrabackup Xtrabackup是由percona開源的免費資料庫熱備份軟體,它能對InnoDB資料庫和XtraDB儲存引擎的資料庫非阻塞地備份(對於MyISAM的備份同樣需要加表鎖);mysqldump備份方式是採用的邏輯備份,其最大的缺陷是備份和恢復速度較
負責數據庫的備份,實現周一 之 周六增量備份,周日全量備份
數據庫 增量 備份 1、mysql全量備份、增量備份。開啟mysql的logbin日誌功能。在/etc/my.cnf文件中加入以下代碼: [mysqld]log-bin ="/home/mysql/logbin.log"binlog-format = ROWlog-bin-index ="/hom
看完,你就理解什麽是數據的全量、增量、差異備份了
-a 在一起 image 所有 play raw class 完整 splay 在很遠很遠的地方,有一個帳房先生。 他每天要記很多很多的賬單。 老先生一生謹慎,為了保證賬本的安全, 便找來三個徒弟幫忙來對賬本做備份, 這樣即使賬本丟失了, 也可以用備份的賬本繼續使用。
sqoop的全量匯入,增量匯入2種,減量匯入
全量匯入:將mysql表中全部資料都匯入HDFS,如果HDFS中存在這個目錄的話就會報錯,預設儲存的HDFS目錄是 /user/root/XXX,括號中的內容都為解釋,要執行的話就一行一行貼上一起執行 bin/sqoop import (在sqoop的安裝目
mysql 全量備份與增量備份指令碼
全量備份 [[email protected] scripts]# cat wqbk.sh #!/bin/bash #use mysqldump to fully backup mysql data BakDir=/mnt/sata02/backup/wq
ORACLE資料庫全量備份指令碼(windows/linux)配置使用說明
ORACLE資料庫全量備份指令碼(windows/linux)配置使用說明 配置資訊 Oracle_All_backup.bat配置資訊如下 需要配置的有四個引數: BACKPATH:備份檔案存放根目錄 USERNAME:使用者名稱
MySQL 資料庫備份和恢復探討(全量mysqldump 和 增量mysqlbinlog)
背景介紹: 在開發、測試以及生產環境中,每次修改MySQL資料庫,嚴格上來說,都應該事先備份資料庫,以便修改錯誤後導致資料庫掛掉或者不能用,能夠及時還原為修改前的資料庫;另外,在實際使用中也可能因為不正確的使用MySQL資料庫,導致資料庫不可用。因此,做好MySQL資料庫的備份和恢復具有重要的意
MySQL 系列連載之 XtraBackup 全量熱備 or 恢復實踐(2)
導讀 如果您在本文遇到任何問題或疑問請到QQ群中與我們交流。也可在下方進行評論。我將在第一時間和您進行交流,共同學習。 QQ群:201777608、526871767、1689067(加群時註明:運維派) 1、準備工作 #系統環境 [[email protected] tools]# c
數倉中的全量表,增量表,拉鍊表,流水錶,快照表
預熱: 我們先從幾個物理概念入手理解什麼是流量,存量,增量 (1)存量:系統在某一時點時的所保有的數量; (2)流量:是指在某一段時間內流入/出系統的數量 (3)增量:則是指在某一段時間內系統中保有數量的變化 (4)增量=流入量--流出量 (5)本期期末存量=上期期末存量+本期內增量 正題 &