XtraBackup不停機不鎖表熱備mysql數據庫

環境mysql

  • mysql版本 Server version: 5.6.42-log MySQL Community Server
  • 數據庫data目錄 /data/mysql/
  • binlog日誌目錄 /data/bin_logs/
  • 備份目錄 /data/backup/

徹底備份腳本 (每日一次,00:10:00執行)sql

#!/bin/bash
base_dir=」/data/backup/`date +%F`」
[ -d ${base_dir} ] || mkdir ${base_dir}
[ -d ${base_dir}/full_`date +%F` ] && exit 0
innobackupex –defaults-file=/etc/my.cnf –user=root –password=’123456′ –no-timestamp ${base_dir}/full_`date +%F`
[ $? -eq 0 ] || echo 「$(date +」%F_ %T」) 徹底備份失敗,請從新備份」 >> /data/backup/backup.log

增量備份腳本 (每小時一次,xx:30:00執行)數據庫

 

#!/bin/bash
base_dir=」/data/backup/`date +%F`」
full_dir=」/data/backup/`date +%F`/full_`date +%F`」
inc_dir=」${base_dir}/inc_`date +%H`」
[ -d ${inc_dir} ] && exit 0
innobackupex –defaults-file=/etc/my.cnf –user=root –password=’123456′ –no-timestamp –incremental-basedir=${full_dir} –incremental ${inc_dir} &> /dev/null
[ $? -eq 0 ] || echo 「$(date +」%F_ %T」) ${inc_dir}增量備份失敗,請從新備份」 >> /data/backup/backup.log

一鍵還原腳本centos

#!/bin/bash
base_dir=」/data/backup/`date +%F`」
full_dir=」${base_dir}/full_`date +%F`」
inc_dir=」${base_dir}/`ls ${base_dir} | tail -1`」
cp -a ${base_dir} /data/backup/`date +」%F-%T」`_bak
innobackupex –defaults-file=/etc/my.cnf –user=root –apply-log –redo-only ${full_dir}
innobackupex –defaults-file=/etc/my.cnf –user=root –apply-log –redo-only ${full_dir} –incremental-dir=${inc_dir}

service mysqld stop
mv /data/mysql /data/mysql_bak`date +」%F_%T」`
mkdir /data/mysql
innobackupex –defaults-file=/etc/my.cnf –user=root –copy-back ${full_dir}
chown -R mysql.mysql /data/mysql
service mysqld start

###binlog日誌還原
###這裏選擇的是最後一個binlog日誌,若是增量備份的一個小時內,有多個mysql-bin.0000xx生成,須要手動選擇bin-log日誌;
###還原執行13:30點後的全部sql命令
Hour=`basename ${inc_dir}|grep -o ‘[0-9]*’`
binlog=`ls /data/bin_logs/|grep [0-9]|tail -1`
mysqlbinlog –start-datetime=」`date +%F` ${Hour}:30:00″ /data/mysql/${binlog} | mysql -uroot -p ‘123456’

###還原執行13:30-14:10之間的全部sql命令
##mysqlbinlog –start-datetime=」2018-11-21 13:30:00″ –stop-datetime=」2012-03-15 14:10:00″ /data1/log/mysql/mysql-bin.000001 > /tmp/mysql_restore_030915.sql

計劃任務bash

10 00 * * * /bin/bash /root/.scripts/full_back.sh
30 * * * * /bin/bash /root/.scripts/inc_back.sh
相關文章
相關標籤/搜索