1. 程式人生 > >xtrabackup 增量,全量備資料庫指令碼

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)本期期末存量=上期期末存量+本期內增量 正題 &