MySQL是一款常用的關(guān)系型數(shù)據(jù)庫管理系統(tǒng),而Linux中則常常使用增量備份與恢復(fù)的方式來對數(shù)據(jù)庫進(jìn)行備份。下面將介紹在Linux中使用MySQL增量備份與恢復(fù)的方法。
一、增量備份
#!/bin/bash #每次增量備份前,將上次備份(也就是全量備份)拷貝到本地 cp -r /data/mysql/backup/full /data/mysql/backup/incremental #統(tǒng)計(jì)需要備份的數(shù)據(jù)庫數(shù)量 num=`grep -cvE '^#|^$' /data/mysql/backup/conf.txt` #逐個(gè)備份每個(gè)數(shù)據(jù)庫,并記錄備份的日志到指定目錄 for i in `seq $num`;do db=`sed -n "${i}p" /data/mysql/backup/conf.txt` innobackupex --user=root --password='passwd' --incremental /data/mysql/backup/incremental --incremental-basedir=/data/mysql/backup/incremental/$(ls -t /data/mysql/backup/incremental|head -n1) --databases "$db" >>/data/mysql/backup/incremental/backup.log 2>&1 done #備份完成后記錄備份時(shí)間,用于后續(xù)恢復(fù)使用 date '+%F %T' > /data/mysql/backup/incremental/last_backup_time.txt
二、增量恢復(fù)
#!/bin/bash #獲取最后一次備份的時(shí)間 last_backup_time=`cat /data/mysql/backup/incremental/last_backup_time.txt` #如果從未備份過,則只還原全量備份版本 if [ -z "$last_backup_time" ];then #獲取最后一個(gè)全量備份的目錄 full_backup=`ls -t /data/mysql/backup/full | grep '[0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\}.*'| head -n1` #使用全量備份還原數(shù)據(jù)庫 innobackupex --apply-log /data/mysql/backup/full/$full_backup >/dev/null 2>&1 innobackupex --copy-back /data/mysql/backup/full/$full_backup >/dev/null 2>&1 else #獲取最近一次增量備份的目錄 incremental_backup=`ls -t /data/mysql/backup/incremental | grep '[0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\}.*'| head -n1` #獲取最后一個(gè)全量備份的目錄 full_backup=`ls -t /data/mysql/backup/full | grep '[0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\}.*'|head -n1` #恢復(fù)最近一次增量備份 innobackupex --apply-log /data/mysql/backup/full/$full_backup >/dev/null 2>&1 innobackupex --apply-log /data/mysql/backup/incremental/$incremental_backup --incremental-basedir=/data/mysql/backup/full/$full_backup >/dev/null 2>&1 innobackupex --copy-back /data/mysql/backup/full/$full_backup >/dev/null 2>&1 fi
以上兩個(gè)腳本實(shí)現(xiàn)了Linux中MySQL增量備份與恢復(fù),通過使用增量備份可以有效減小備份文件的大小、降低備份時(shí)間,提高備份的效率,同時(shí)也能夠在恢復(fù)數(shù)據(jù)時(shí)以最近的一次備份為基礎(chǔ),大大減小了數(shù)據(jù)恢復(fù)時(shí)間。大家在進(jìn)行備份與恢復(fù)時(shí)可將以上腳本作為參考,簡化自己的操作。