MySql备份·增量备份percona-数据库论坛-技术分享-千百度社区

MySql备份·增量备份percona

MySql备份·增量备份percona

一、增量备份定义:

  • 增量备份是备份上次备份后新产生的数据,所以在执行增量备份之前 必须要先有一次备份,否则无法得知那些数据是新数
  • 通常增量备份前的首次备份是完全备份
  • 通常每周的周二到周日可以对数据都做增量备份

二、增量备份percona软件说明:

  • 第三方软件percona提供的备份命令innobackupex可以实现对数据的备份和恢复
  • 还可以使用percona来实现完全备份的功能
  • percona每次备份数据,其选择的备份目录每次都要不一样
  • percona的特点是:在线热备不锁表,适合生产环境下备份业务
  • percona恢复数据时,必须要停止数据库服务

三、增量备份语法格式及参数说明:

完全备份格式

innobackupex -uroot -p密码 备份目录 [参数]

增量备份格式

innobackupex -uroot -p密码 备份目录 –incremental 新数据存放目录 –incremental-basedir=上次备份目录 [参数]

准备恢复数据格式

innobackupex –apply-log –redo-only 完全备份目录

合并数据格式(合并的顺序要与增量备份的顺序一致)

innobackupex –apply-log –redo-only 完全备份目录 –incremental-dir=新数据存放目录

拷贝数据格式

innobackupex –copy-back 完全备份目录

类型 参数 说明
备份 –no-timestamp 不用时间戳创建子目录存储备份数据
–incremental /newdir 备份新数据
newdir:新数据备份目录
–incremental-basedir=/olddir 上次备份
olddir:上次备份目录
恢复 –apply-log –redo-only 准备恢复数据
–incremental-dir 合并数据中指定增量备份数据存放目录
–copy-back 将合并完的完全备份数据拷贝数据到默认/自定义数据库目录下

四、增量备份及恢复数据具体操作步骤:

  • 安装命令软件
  • 备份:完全备份+增量备份
  • 准备恢复数据并合并
  • 恢复数据

第一步:安装命令软件

  • 安装软件包
[root@host50 ~]# yum -y install libev-4.15-1.el6.rf.x86_64.rpm 
[root@host50 ~]# yum -y install percona-xtrabackup-24-2.4.7-1.el7.x86_64.rpm
# 查看帮助
[root@host50 ~]# man innobackupex

第二步:备份

  • 周一 执行完全备份
[root@host50 ~]# innobackupex -uroot -p密码 /fullbak  
--no-timestamp
  • 周二~周日 执行增量备份
[root@host50 ~]# innobackupex –uroot –p密码  --incremental /new2 
--incremental-basedir=/fullbak  --no-timestamp
[root@host50 ~]# innobackupex –uroot –p密码  --incremental /new3 
--incremental-basedir=/new2 --no-timestamp
[root@host50 ~]# innobackupex -uroot -p密码  --incremental /new4
--incremental-basedir=/new3 --no-timestamp
[root@host50 ~]# innobackupex -uroot -p密码  --incremental /new5
--incremental-basedir=/new4 --no-timestamp
[root@host50 ~]# innobackupex -uroot -p密码  --incremental /new6
--incremental-basedir=/new5 --no-timestamp
[root@host50 ~]# innobackupex -uroot -p密码  --incremental /new7
--incremental-basedir=/new6 --no-timestamp

第三步:准备恢复数据并合并

  • 准备恢复数据
#  告诉innobackupex从什么位置开始合并数据
[root@host51 ~]# innobackupex --apply-log --redo-only /opt/fullbak/
  • 合并数据(需要恢复哪一天的就合并到哪一天)
# 合并周二增量备份数据
[root@host51 ~]# innobackupex --apply-log --redo-only /fullbak/ 
--incremental-dir=/opt/new2
# 合并周三增量备份数据
[root@host51 ~]# innobackupex --apply-log --redo-only /fullbak/ 
--incremental-dir=/opt/new3   
# 合并周四增量备份数据
[root@host51 ~]# innobackupex --apply-log --redo-only /fullbak/  
--incremental-dir=/opt/new4 
# 合并周五增量备份数据
[root@host51 ~]# innobackupex --apply-log --redo-only /fullbak/  
--incremental-dir=/opt/new5 
# 合并周六增量备份数据
[root@host51 ~]# innobackupex --apply-log --redo-only /fullbak/  
--incremental-dir=/opt/new6 
# 合并周日增量备份数据
[root@host51 ~]# innobackupex --apply-log --redo-only /fullbak/  
--incremental-dir=/opt/new7 

第四步:恢复数据

  • 停止数据库服务
[root@host51 ~]# systemctl stop mysqld
  • 清空数据库目录(必须要清空目录信息,否则无法恢复)
[root@host51 ~]# rm -rf /var/lib/mysql/*
  • 恢复数据
# 把合并后的数据拷贝到数据库目录下
[root@host51 ~]# innobackupex --copy-back /opt/fullbak
# 修改数据库目录的所有者和组用户为mysql
[root@host51 ~]# chown -R mysql:mysql /var/lib/mysql        
# 重启数据库服务
[root@host51 ~]# systemctl start mysqld

© 著作权归作者所有,转载或内容合作请联系作者

请登录后发表评论

    没有回复内容