首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

Percona XtraBackup MySQL 全量備份 Shell 腳本

     編輯:MySQL 綜合教學

腳本功能

  • 每日全量備份指定資料庫。
  • 支援多實例(透過 --defaults-file、--socket)。
  • 備份完成自動壓縮為 .tar.gz 並清理原目錄。
  • 記錄開始/結束時間至日誌。

腳本內容

#!/bin/sh
BACKUP_TIME=$(date +%Y-%m-%d-%H-%M-%S)
BACKUP_SOCK=/tmp/mysql3306.sock
BACKUP_CNF=/etc/my3306.cnf
BACKUP_USER=user
BACKUP_PWD=123456
BACKUP_DB=employees
BACKUP_DIR=/data/backup/mysql/backup3306/

BAK=${BACKUP_DIR}${BACKUP_DB}_${BACKUP_TIME}
INNOBACKUPEX=/opt/soft/xtrabackup-1.6.6/innobackupex

# 執行備份
${INNOBACKUPEX} --defaults-file=${BACKUP_CNF} --socket=${BACKUP_SOCK} \
  --user=${BACKUP_USER} --password=${BACKUP_PWD} ${BAK} --no-timestamp

# 壓縮
cd ${BACKUP_DIR}
tar zcf ${BACKUP_DB}_${BACKUP_TIME}.tar.gz ${BACKUP_DB}_${BACKUP_TIME}
rm -rf ${BACKUP_DB}_${BACKUP_TIME}

# 日誌
echo "==========$(date +'%Y-%m-%d %H:%M:%S')========== 備份完成" >> ${BACKUP_DIR}/full_backup.log

關鍵參數說明

參數用途
--defaults-file指定實例專用 my.cnf
--socket指定實例 socket 路徑
--no-timestamp不在目錄名加時間戳,由腳本自行控制
--stream=tar(可選)直接輸出 tar 流,配合管道壓縮
--apply-log(可選)備份後直接 prepare,加速恢復

定時執行

加入 crontab -e:

0 2 * * * /path/to/xtrabackup_full.sh >> /var/log/xtrabackup.log 2>&1
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved