完整备份
命令:innobackupex --defaults-file=/etc/my.cnf --user=root --password=PASSWORD --database=DATE BACK_DIR_PATH
- PASSWORD 数据库密码
- DATE 数据库名
- --database=DATE 针对所有库做备份去掉该选项即可
- BACK_DIR_PATH 完全备份目录位置
- 注:该命令执行后会在备份目录位置以当前时间为命名生成一个目录,备份的文件会备份到该目录中。例如2014-12-06_16-00-15
- --port=端口号
- --no-timestamp 此参数可以取消自动时间戳
完整备份的恢复
首先需要备份数据库
停止数据库运行
删除数据库目录内所有文件
然后执行下列命令进行恢复
恢复第一步:应用日志。
innobackupex --defaults-file=/etc/my.cnf --user=root --password=PASSWORD --database=DATE --apply-log BACK_DIR_PATH/你的全备数据库文件名
(# PASSWORD 数据库密码 # DATE 数据库名 # BACK_DIR_PATH 完全备份目录位置)
恢复第二步:拷贝文件。
innobackupex --defaults-file=/etc/my.cnf --user=root --password=PASSWORD --database=DATE --copy-back /BACK_DIR_PATH
(--defaults-file=/etc/my.cnf 恢复会使用my.cnf文件把需要恢复的文件,恢复到my.cnf指定的位置。
--apply-log 这是备份时产生的日志,
--copy-back 这是备份源,解压后的备份文件。 --database=DATE 如果不加此参数,默认恢复全部数据库)
增量备份
innobackupex --defaults-file=/etc/my.cnf --user=root --password=PASSWORD --database=DATE --incremental-basedir=BACK_DIR_PATH/全备数据库的文件名 --incremental BACK_DIR_ZENG_1
- PASSWORD 数据库密码
- DATE 数据库名
- BACK_DIR_PATH 完全备份目录位置
- BACK_DIR_ZENG_1 第一次增量备份目录位置
- --incremental-basedir 该选项后面写的为第一次完整备份的路径
- 注:此次增量备份是在第一次完整备份的基础之上进行的增量备份
第二次增量备份
innobackupex --defaults-file=/etc/my.cnf --user=root --password=PASSWORD --database=DATE --incremental-basedir=BACK_DIR_ZENG_1 --incremental BACK_DIR_ZENG_2
2. PASSWORD 数据库密码
3. DATE 数据库名
4. BACK_DIR_PATH 完全备份目录位置
5. BACK_DIR_ZENG_1 第一次增量备份目录位置
6. BACK_DIR_ZENG_2 第二次增量备份目录位置
7. --incremental-basedir 该选项后面写的为第一次增量备份的路径
8. 注:此次增量备份是在第一次增量备份的基础之上进行的第二次增量备份
多次增量备份之后的恢复
1、首先需要备份现有数据库
2、停止数据库运行
3、删除数据库目录内所有文件
4、然后执行下列命令进行恢复 先恢复第一次全备的数据库的应用日志
- 命令: innobackupex --defaults-file=/etc/my.cnf --user=root --password=‘密码‘ --apply-log --redo-only BACK_DIR_PATH 5、恢复第一次增量备份的数据库应用日志
innobackupex --defaults-file=/etc/my.cnf --user=root --password=‘密码‘ --apply-log --redo-only BACK_DIR_PATH --incremental-dir=BACK_DIR_ZENG_1
6、恢复第二次增量备份的数据库应用日志 innobackupex --defaults-file=/etc/my.cnf --user=root --password=‘密码‘ --apply-log BACK_DIR_PATH --incremental-dir=BACK_DIR_ZENG_2
(1. # BACK_DIR_PATH 完全备份目录位置
(2. # BACK_DIR_ZENG_1 第一次增量备份目录位置
(3. # BACK_DIR_ZENG_2 第二次增量备份目录位置
(4. 注: 如果只有2次增量备份则执行此条命令,如果有多次增量命令,则参照上一条命令 5. 最后一次恢复的时候不需要加--redo-only这个参数。
#!/bin/bash
export PATH=$PATH:/usr/local/xtrabackup/bin
HOST=127.0.0.1
DATE=`date +"%Y-%m-%d-%A"`
LASTDATE=`date +"%Y-%m-%d-%A" -d "-1 days"`
DATEDAY=`date +%A`
WEEKDAY=‘Sunday‘
BACKUP_DIR_PATH=/要备份的目录
FILE_CNF=/usr/local/mysql55/conf/配置文件
USER_NAME=用户名
PASSWORD="密码"
MYPORT=端口号
#全备备份函数
cd $BACKUP_DIR_PATH
all_bak () {
echo "start $DATE-all" >> $BACKUP_DIR_PATH/access.log innobackupex --defaults-file=$FILE_CNF --user=$USER_NAME --password=$PASSWORD --port=MYPORT --host=$HOST --no-timestamp $BACKUP_DIR_PATH/$DATE-all
if [ $? -eq 0 ];then
echo "$DATE-all is succeed" >> $BACKUP_DIR_PATH/access.log
tar -zcvf $BACKUP_DIR_PATH/$DATE-all.tar.gz $DATE-all
if [ $? -eq 0 ];then
echo "$DATE-all is packaging succeed" >> $BACKUP_DIR_PATH/access.log
# rm -rf $DATE-all
else echo "$DATE-all is packaging failure" >> $BACKUP_DIR_PATH/access.log
fi
else echo "$DATE-all is failure" >> $BACKUP_DIR_PATH/access.log
fi
echo "stop $DATE-all" >> $BACKUP_DIR_PATH/access.log
}
#增量备份函数
incremental(){
echo "start $DATE-incremental" $BACKUP_DIR_PATH/access.log
innobackupex --defaults-file=$FILE_CNF --user=$USER_NAME --password=$PASSWORD --port=MYPORT --host=$HOST --incremental-basedir=$BACKUP_DIR_PATH/$LASTDATE-$1 --no-timestamp --incremental $BACKUP_DIR_PATH/$DATE-incremental
if [ $? -eq 0 ];then
echo "$DATE-incremental is succeed" >> $BACKUP_DIR_PATH/access.log
tar -zcvf $BACKUP_DIR_PATH/$DATE-incremental.tar.gz $DATE-incremental
if [ $? -eq 0 ];then
echo "$DATE-incremental is packaging succeed" >> $BACKUP_DIR_PATH/access.log
# rm -rf $DATE-incremental
else
echo "$DATE-ncremental is packaging failure" >> $BACKUP_DIR_PATH/access.log
fi
else
echo "$DATE-incremental is failure" >> $BACKUP_DIR_PATH/access.log
fi echo "stop $DATE-incremental" >> $BACKUP_DIR_PATH/access.log
}
#判断数据库备份存放目录,不存在创建 if [ ! -d $BACKUP_DIR_PATH ];then mkdir $BACKUP_DIR_PATH fi #判断如果今天是周天,那么全备,否则增备 if [