Xtrabackup全量备份/增量备份脚本

本文提供了一套MySQL数据库的备份方案,包括全量备份和增量备份的Shell脚本,并配置了crontab实现定时任务,确保数据的安全性和连续性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

wKioL1mIa3Xhw37VAAArXblQcsw543.jpg


一、全量备份脚本

    

    1.全量备份脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
#!/bin/bash
#Description:xtrabackup complete
#Author:created by michael
#2017-08-07 v0.1
#
USER=root
PASSWD=123456
BACKUP_DIR= /backup/mysql/complete
DATE=$( date  + "%F_%T" )
[[ -d $BACKUP_DIR ]] ||  mkdir  $DATE_DIR
innobackupex --user=$USER --password=$PASSWD $BACKUP_DIR &>  /tmp/mysql/ "$DATE" .txt
egrep  ".* Backup created in directory.*"  /tmp/mysql/ "$DATE" .txt >> $BACKUP_DIR /complete .info
rm  -rf  /tmp/mysql/ "$DATE" .txt

    2.启动crond以及开机自启动crond

1
2
systemctl start crond
systemctl  enable  crond

    3.授予执行权限

1
chmod  755  /root/script/backup_complete .sh

    4.每周六的凌晨4点整定时执行全量备份

1
2
3
4
[root@michaelos complete] # crontab -e
crontab : installing new  crontab
[root@michaelos complete] # crontab -l
0 4 * * 6  /root/script/backup_complete .sh

二、增量备份脚本

    1.增量备份脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[root@michaelos script] # cat backup_increment.sh 
#!/bin/bash 
#Description: mysql backup incremention
#Author:michael
#2017-08-07 v0.1
#
USER=root
PASSWORD=123456
BACKUP_DIR= /backup/mysql/increment
DATE=$( date  + "%F_$T" )
BASE_DIR=$( tail  -1  /backup/mysql/complete/complete .info |  cut  -d\' -f2)
[[ -d $BACKUP_DIR ]] ||  mkdir  $BACKUP_DIR
innobackupex --user=$USER --password=$PASSWORD --incremental $BACKUP_DIR --incremental-basedir=$BASE_DIR &>  /tmp/mysql/ "$DATE" .txt
egrep  ".*Backup created in directory.*"  /tmp/mysql/ "$DATE" .txt >> $BACKUP_DIR /backup .info
rm  -rf  /tmp/mysql/ "$DATE" .txt

    2.授予执行权限     

1
chmod  755 backup_increment.sh

    3.每周二、四、日的凌晨2点执行增量备份

1
2
3
[root@michaelos script] # crontab -l
0 4 * * 6  /root/script/backup_complete .sh
0 2 * * 2,4,7  /root/script/backup_increment .sh



本文转自 PowerMichael 51CTO博客,原文链接:http://blog.51cto.com/huwho/1954307,如需转载请自行联系原作者
### Xtrabackup备份增量备份的区别及用法 #### 备份 (Full Backup) 备份是指对整个数据库的数据文件进行一次完整的复制操作。这种备份方式会捕获所有的数据页,即使某些页面未被修改也会包含在内。以下是创建备份的具体方法: 通过运行`xtrabackup`命令可以完成备份的操作[^3]。例如,以下是一个典型的备份命令: ```bash xtrabackup --backup --target-dir=/path/to/full_backup_dir/ ``` 此命令会在指定的目标目录下保存所有必要的数据文件。 #### 增量备份 (Incremental Backup) 增量备份则是基于上一次的增量备份来记录自上次备份以来发生的变化部分。这种方式的优点在于它仅存储发生变化的部分,因此通常占用更少的空间并能更快地完成备份过程。为了实现这一点,XtraBackup利用了InnoDB的日志机制来追踪这些变化[^5]。 要执行增量备份,需提供一个参数指向最近的一次基础备份(无论是另一个增量还是最初的全备)。下面展示了一个如何设置增量备份的例子: ```bash xtrabackup --backup --target-dir=/path/to/incr_backup_dir/ \ --incremental-basedir=/path/to/full_or_previous_incr_backup_dir/ ``` 这里的关键选项是`--incremental-basedir`,它指定了作为本次增量的基础备份位置[^1]。 #### 还原流程 对于备份来说,其恢复相对简单直接;而对于多层嵌套的增量备份,则需要依次应用每一级增量到初始的完副本之上才能最终得到最新的状态版本。这可以通过重复调用准备阶段的相关指令达成目标。 #### 工具对比考因素 当评估像MySQL Enterprise Backup这样的商业解决方案或者开源替代品如MariaDB Backup时,应该考虑到诸如性能表现、资源消耗以及特定功能需求等方面差异[^4]。然而无论如何挑选具体产品方案,都务必重视验证测试环节以确认所选策略能够满足实际业务连续性的要求[^2]。 ```bash # Example of preparing a full backup before applying incrementals. xtrabackup --prepare --apply-log-only --target-dir=/path/to/full_backup/ # Then apply each incremental on top sequentially. xtrabackup --prepare --apply-log-only --target-dir=/path/to/full_backup/ --incremental-dir=/path/to/incremental1/ xtrabackup --prepare --target-dir=/path/to/full_backup/ --incremental-dir=/path/to/incrementalN/ ``` 上述脚本展示了怎样逐步处理一系列增量更新至原始基线直至最新状况的过程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值