tar增量备份mysql_tar 实现增量备份

使用 tar -g 参数进行增量备份实验

完整备份:

#执行完整备份

tar -g snapshot -zcf back.tar.gz back

#查看 tarball 内容

[huzi@mail ~]$ tar ztf back.tar.gz

back/

back/readme.txt

back/rmmysql_back.sh

back/mysqlbackup.sh

back/tuning-primer.sh

back/iptables.sh

back/backup.sh

back/MYSQL_BACKUP.sh

back/read.sh

back/backup.sh.bak

back/iptables

增量备份:

#新增一个档案

cp MySQLBackup.log back

#执行第一次的增量备份 (注意 tarball 档名)

tar -g snapshot -zcf back_incremental_1.tar.gz back

#查看 tarball 内容

[huzi@mail ~]$ tar ztf back_incremental_1.tar.gz

back/

back/MySQLBackup.log

#执行第二次的增量备份 (注意 tarball 档名)

tar -g snapshot -zcf backup_incremental_2.tar.gz back

#查看 tarball 内容

[huzi@mail ~]$ tar ztf back_incremental_2.tar.gz

back/

back/iptables

还原备份资料:

#清空测试资料

rm -rf test

#开始进行资料还原

tar zxf backup_full.tar.gz

tar zxf backup_incremental_1.tar.gz

tar zxf backup_incremental_2.tar.gz

#查看测试资料

[huzi@mail ~]$ tar zxvf back.tar.gz

back/

back/MYSQL_BACKUP.sh

back/backup.sh

back/backup.sh.bak

back/iptables.sh

back/mysqlbackup.sh

back/read.sh

back/readme.txt

back/rmmysql_back.sh

back/tuning-primer.sh

[huzi@mail ~]$ tar zxvf back_incremental_1.tar.gz

back/

back/MySQLBackup.log

[huzi@mail ~]$ tar zxvf back_incremental_2.tar.gz

back/

back/iptables

[huzi@mail ~]$ ls back

backup.sh      iptables.sh      MYSQL_BACKUP.sh rmmysql_back.sh

backup.sh.bak MySQLBackup.log readme.txt       tuning-primer.sh

iptables       mysqlbackup.sh   read.sh

使用 tar -u 参数进行增量备份

第一次备份:

#备份资料

tar czvf back.tar.gz back

#查看 tarball 内容

[huzi@mail ~]$ tar ztf back.tar.gz

back/

back/readme.txt

back/rmmysql_back.sh

back/mysqlbackup.sh

back/tuning-primer.sh

back/iptables.sh

back/backup.sh

back/MYSQL_BACKUP.sh

back/read.sh

back/backup.sh.bak

back/iptables

增量备份:

#新增一个档案, 并异动一个档案内容

cp MySQLBackup.log back

#执行增量备份 (-u 参数只能执行於未压缩的 tarball)

gunzip backup.tar.gz

tar uf backup.tar back

gzip backup.tar

#查看 tarball 内容

tar ztf backup.tar.gz

[huzi@mail ~]$ tar ztf back.tar.gz

back/

back/readme.txt

back/rmmysql_back.sh

back/mysqlbackup.sh

back/tuning-primer.sh

back/iptables.sh

back/backup.sh

back/MYSQL_BACKUP.sh

back/read.sh

back/backup.sh.bak

back/iptables

back/

back/MySQLBackup.log

[huzi@mail ~]$

还原备份资料:

#解包 tarball

tar zxf backup.tar.gz

分享到:

18e900b8666ce6f233d25ec02f95ee59.png

72dd548719f0ace4d5f9bca64e1d7715.png

2011-02-16 17:53

浏览 7240

评论

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用以下的shell脚本来实现mysql增量备份: ``` #!/bin/bash if [ $# != 1 ]; then echo "Usage: $0 backup_directory" exit 1 fi backup_dir=$1 # 获取最新的全量备份文件名 latest_full_backup=$(ls -1 $backup_dir/full_* | tail -n 1) if [ -z "$latest_full_backup" ]; then echo "No full backups found in $backup_dir" exit 1 fi # 提取最新全量备份的时间戳 latest_full_backup_timestamp=$(echo $latest_full_backup | awk -F_ '{print $2}') # 获取当前时间戳 current_timestamp=$(date +%s) # 计算时间差,单位为秒 time_diff=$((current_timestamp - latest_full_backup_timestamp)) # 计算时间差对应的binlog文件名 binlog_file=$(mysql -N -e "SHOW MASTER STATUS\G" | awk '/File:/ {print $2}') binlog_pos=$(mysql -N -e "SHOW MASTER STATUS\G" | awk '/Position:/ {print $2}') # 根据时间差生成增量备份文件名 incremental_backup_filename=$backup_dir/incremental_$(date +%Y%m%d_%H%M%S).tar.gz # 执行增量备份 cd / tar -czf $incremental_backup_filename \ --listed-incremental=$backup_dir/backup.snar \ --exclude=/var/lib/mysql/mysql.sock \ --exclude=$backup_dir/full_* \ --exclude=$backup_dir/incremental_* \ /var/lib/mysql/ \ --exclude=/var/lib/mysql/mysql \ --exclude=/var/lib/mysql/performance_schema \ --exclude=/var/lib/mysql/sys \ --exclude=/var/lib/mysql/ib_logfile* \ --exclude=/var/lib/mysql/mysql-bin.* \ --exclude=/var/lib/mysql/ibdata1 \ --exclude=/var/lib/mysql/auto.cnf # 将增量备份导入到最新全量备份中 cd $backup_dir tar -xf $latest_full_backup # 合并增量备份 tar -zf $incremental_backup_filename \ --listed-incremental=$backup_dir/backup.snar \ --exclude=/var/lib/mysql/mysql.sock \ --exclude=$backup_dir/full_* \ --exclude=$backup_dir/incremental_* \ /var/lib/mysql/ \ --exclude=/var/lib/mysql/mysql \ --exclude=/var/lib/mysql/performance_schema \ --exclude=/var/lib/mysql/sys \ --exclude=/var/lib/mysql/ib_logfile* \ --exclude=/var/lib/mysql/mysql-bin.* \ --exclude=/var/lib/mysql/ibdata1 \ --exclude=/var/lib/mysql/auto.cnf # 压缩最新全量备份 full_backup_filename=$backup_dir/full_$(date +%Y%m%d_%H%M%S).tar.gz tar -czf $full_backup_filename mysql # 删除旧的增量备份 rm -f $incremental_backup_filename # 删除生成的备份文件Snar rm -f $backup_dir/backup.snar # 删除旧的全量备份 for file in $(ls -1 $backup_dir/full_* | head -n -3); do rm -f $file done echo "Backup completed successfully" ``` 该脚本会先查找最新的全量备份文件,并从中提取时间戳。然后计算当前时间和最新全量备份时间的差值,并根据差值获取对应的binlog文件名。 接下来生成增量备份文件名,然后执行增量备份。最后将增量备份合并到最新全量备份中,并压缩最新全量备份。同时删除旧的增量备份和全量备份。 需要注意的是,该脚本没有对备份文件进行加密处理,请根据实际需求添加加密功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值