八月 27th, 2018 by lanxinxichen@126.com

安装

1. 从官方网站下载Percona XtraBackup,依赖环境rsync perl-DBD-Mysql libev,使用yum源安装以上依赖,高版本的mysql可能还需要mysql-community-libs-compat适配支持.
2. 从github上下载autoxtrabackup脚本

定期备份

利用autoxtrabackup配置一定的参数可以实现定期增量备份.

backupDir=/home/database_bak 备份路径
hoursBeforeFull=240 全量备份间隔时间
mysqlUser=root 本地数据库备份采用用户名
mysqlPwd=root 本地数据库备份采用密码
compression=false 备份是否压缩
compressThreads=8 压缩线程
keepDays=30 备份持有时间
sendEmail=never 备份完成是否发邮件
emailAddress=

配置好参数之后添加到crontab任务调度中(每天晚上23点备份数据库).

00 23 * * * /home/software/autoxtrabackup/autoxtrabackup.sh

备份生成的路径如下:

/home/database_bak/
├── 2018-08-24_11-27-36_full
├── 2018-08-24_13-23-51_incr
├── 2018-08-24_23-40-01_incr
├── 2018-08-25_23-40-01_incr
└── 2018-08-26_23-40-01_incr

还原

注意: 如果要还原数据, 首先要先备份已经备份的数据, 特别是全量数据.

autoxtrabackup的备份原则是一天一个相对于全量的增量的备份, 而不是相对于上一次的增量备份的增量. 所以在看xtrabackup的文档的时候, 需要注意由于采取的备份策略不同, 还原流程也是不一样的,具体对比可以看扩展内容.
根据增量备份数据还原数据库流程, 假设我需要还原2018-08-26的数据库数据
1. 找到最后一次的完整备份

innobackupex –apply-log –redo-only /home/database_bak/2018-08-24_11-27-36_full/

2. 找到2018-08-26的增量备份

innobackupex –apply-log /home/database_bak/2018-08-24_11-27-36_full/ –incremental-dir=/home/database_bak/2018-08-26_23-40-01_incr/

3. 准备数据

innobackupex –apply-log /home/database_bak/2018-08-24_11-27-36_full/

4. 回拷数据

innobackupex –copy-back /home/database_bak/2018-08-24_11-27-36_full/

5. 更改文件权限

chown –R mysql:mysql

6. 启动mysql服务

server mysqld start

扩展

对比标准增量备份和autoxtrabackup增量备份

官方推荐的使用办法是创建一个原始的增量备份, 第一次增量备份是针对全量备份, 第二次备份是针对第一次增量备份的增量备份, 同理第三次是针对第二次的增量备份.
而autoxtrabackup采用的是每次都针对原始的全量备份的增量备份.
二者在还原的时候自然也不一样, 标准的备份需要把增量一次一次的还原进去, 这样比较灵活. autoxtrabackup则增加实用, 需要还原的时候只需要找到全量备份,并且拿对应日期的增量备份, 即可还原到全部数据, 当然中间日期的数据就会有冗余.
使用环境就各自根据自己的环境确定吧, 如果每天新增数据比较多, 就采用官方的标准备份, 如果不是很多, 可以接受冗余数据, 并且为了方便的话可以采用autoxtrabackup脚本进行备份.

Posted in 服务器 Tagged with: ,