zoukankan      html  css  js  c++  java
  • xbak 备份

    完整备份

    命令:innobackupex --defaults-file=/etc/my.cnf --user=root --password=PASSWORD --database=DATE BACK_DIR_PATH

    1. PASSWORD 数据库密码
    2. DATE 数据库名
    3. --database=DATE 针对所有库做备份去掉该选项即可
    4. BACK_DIR_PATH 完全备份目录位置
    5. 注:该命令执行后会在备份目录位置以当前时间为命名生成一个目录,备份的文件会备份到该目录中。例如2014-12-06_16-00-15
    6. --port=端口号
    7. --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

    1. PASSWORD 数据库密码
    2. DATE 数据库名
    3. BACK_DIR_PATH 完全备份目录位置
    4. BACK_DIR_ZENG_1 第一次增量备份目录位置
    5. --incremental-basedir 该选项后面写的为第一次完整备份的路径
    6. 注:此次增量备份是在第一次完整备份的基础之上进行的增量备份

    第二次增量备份

    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 [
  • 相关阅读:
    C#
    C#
    ssh学习笔记
    (已解决)Could not open '/var/lib/nova/mnt/*/volume-*': Permission denied
    RPCVersionCapError: Requested message version, 4.17 is incompatible. It needs to be equal in major version and less than or equal in minor version as the specified version cap 4.11.
    如何在linux下安装idea
    The system has no LUN copy license
    调整mysql数据库最大连接数
    mysql数据库编码问题
    cinder支持nfs快照
  • 原文地址:https://www.cnblogs.com/plefan/p/14965883.html
Copyright © 2011-2022 走看看