Mysql数据库学习(五)innobackupex

数据库系统学习笔记

数据备份与恢复 之 innobackupex
软件连接:链接:https://pan.baidu.com/s/1hgMeAD2hk-Hog5IzESyIog
提取码:tty3

安装percona软件提供innobackupex命令对数据做备份和恢复
]# yum -y install libev-4.15-1.el6.rf.x86_64.rpm
]# yum -y install percona-xtrabackup-24-2.4.7-1.el7.x86_64.rpm
]# innobackupex --help
]# man innobackupex

命令格式
innobackupex 选项

选项说明?

1 使用 innobackupex 对数据完全备份与恢复
数据完全备份命令
]#innobackupex --user 用户名 --password 密码 备份目录名 --no-timestamp

    恢复数据命令

]#innobackupex --apply-log 目录名 //准备恢复数据
]#innobackupex --copy-back 目录名 //恢复数据

例子
host50 数据完全备份

[root@host50 ~]# innobackupex -u root -p 123456 /allbak --no-timestamp
[root@host50 ~]# ls /allbak/
[root@host50 ~]# scp -r /allbak/ root@192.168.4.51:/root/

host51 完全恢复数据,具体步骤如下:
(1)停止数据库服务
[root@host51 pub]# systemctl stop mysqld
(2)清空数据库目录
[root@host51 pub]# rm -rf /var/lib/mysql/*
[root@host51 pub]# cat /root/allbak/xtrabackup_checkpoints
backup_type = full-backuped
from_lsn = 0
to_lsn = 3189117
last_lsn = 3189126
compact = 0
recover_binlog_info = 0
(3)准备恢复数据
[root@host51 pub]# innobackupex --apply-log /root/allbak/
[root@host51 pub]# cat /root/allbak/xtrabackup_checkpoints
backup_type = full-prepared
from_lsn = 0
to_lsn = 3189117
last_lsn = 3189126
compact = 0
recover_binlog_info = 0
(4)拷贝备份数据到数据库目录下
[root@host51 pub]# innobackupex --copy-back /root/allbak/
(5) 修改数据库目录的所有者和组用户为mysql
[root@host51 pub]# chown -R mysql:mysql /var/lib/mysql
(6 启动服务
[root@host51 pub]# systemctl start mysqld
ss -utnlp | grep 3306
(7)查看数据 查看到数据为成功
mysql -uroot -p123456 -e ’ show databases’

3 使用 innobackupex 对数据增量备份与恢复
增量备份的定义: 备份上次备份后,所有新产生的数据

执行增备份前,必须先有1次备份(通常首次备份应该是备份所有数据),这样才能知道哪些数据是新数据

周1完全备份 备份服务器的所有数据
周2增量备份 做增量备份的时候 判断新数据有哪些 应该和周1比
周3增量备份 做增量备份的时候 判断新数据有哪些 应该和周2比
周4增量备份 做增量备份的时候 判断新数据有哪些 应该和周3比
周5增量备份 做增量备份的时候 判断新数据有哪些 应该和周4比
周6增量备份 做增量备份的时候 判断新数据有哪些 应该和周5比
周7增量备份 做增量备份的时候 判断新数据有哪些 应该和周6比

    增量备份数据命令

innobackupex --user 用户 --password 密码 --incremental 目录名 --incremental-basedir=上次备份文件存储的目录 --no-timestamp

    数据恢复命令

#准备恢复数据
]# innobackupex --apply-log --redo-only 目录名
#合并数据
]# innobackupex --apply-log --redo-only 目录名 --incremental-dir=目录名
#恢复数据
]# innobackupex --copy-back 目录名

例子:
首次的完全备份
[root@host50 ~]# innobackupex -u root -p 123456 /allbak --no-timestamp
insert into db3.user(name,uid,gid) values(“f”,11,11); 多执行几遍

host50 做增量备份 备份上次备份后 所有新产生的数据
[root@host50 ~]# innobackupex -u root -p 123456 --incremental /new1dir --incremental-basedir=/allbak --no-timestamp
[root@host50 ~]# ls /new1dir/
insert into db3.user(name,uid,gid) values(“w”,11,11); 多执行几遍

host50 做增量备份 备份上次备份后 所有新产生的数据

[root@host50 ~]# innobackupex -u root -p 123456 --incremental /new2dir
–incremental-basedir=/new1dir --no-timestamp
[root@host50 ~]# ls /new2dir/
把三个备份文件传到51主机
[root@host50 ~]# scp -r /allbak/ root@192.168.4.51:/root/
[root@host50 ~]# scp -r /new1dir/ root@192.168.4.51:/root/
[root@host50 ~]# scp -r /new2dir/ root@192.168.4.51:/root/

host51 做增量恢复,具体步骤如下:
(1)准备恢复数据
[root@host51 ~]# cat /root/allbak/xtrabackup_checkpoints
backup_type = full-prepared
from_lsn = 0
to_lsn = 3189117
last_lsn = 3189126
compact = 0
recover_binlog_info = 0
[root@host51 ~]#

[root@host51 ~]# innobackupex --apply-log --redo-only /root/allbak/

[root@host51 ~]# cat /root/allbak/xtrabackup_checkpoints
backup_type = log-applied
from_lsn = 0
to_lsn = 3189117
last_lsn = 3189126
compact = 0
recover_binlog_info = 0
[root@host51 ~]#
(2)合并数据
[root@host51 ~]# innobackupex --apply-log --redo-only /root/allbak/ --incremental-dir=/root/new1dir/

[root@host51 ~]# cat /root/allbak/xtrabackup_checkpoints
backup_type = log-applied
from_lsn = 0
to_lsn = 3192789
last_lsn = 3192798
compact = 0
recover_binlog_info = 0
[root@host51 ~]#

[root@host51 ~]# cat /root/new1dir/xtrabackup_checkpoints
backup_type = incremental
from_lsn = 3189117
to_lsn = 3192789
last_lsn = 3192798
compact = 0
recover_binlog_info = 0
[root@host51 ~]#

[root@host51 ~]# innobackupex --apply-log --redo-only /root/allbak/ --incremental-dir=/root/new2dir/

[root@host51 ~]# cat /root/allbak/xtrabackup_checkpoints
backup_type = log-applied
from_lsn = 0
to_lsn = 3194992
last_lsn = 3195001
compact = 0
recover_binlog_info = 0
[root@host51 ~]#
[root@host51 ~]# cat /root/new2dir/xtrabackup_checkpoints backup_type = incremental
from_lsn = 3192789
to_lsn = 3194992
last_lsn = 3195001
compact = 0
recover_binlog_info = 0
[root@host51 ~]#
(3)停止数据库服务
[root@host51 ~]# systemctl stop mysqld
(4)清空数据库目录
[root@host51 ~]# rm -rf /var/lib/mysql/*
(5)拷贝备份数据到数据库目录下
[root@host51 ~]# innobackupex --copy-back /root/allbak/
(6)修改目录权限
[root@host51 ~]# chown -R mysql:mysql /var/lib/mysql
(7)启动服务
[root@host51 ~]# systemctl start mysqld
(8)查看数据
[root@host51 ~]# mysql -uroot -p123456 -e ‘show databases’

4 使用 innobackupex 对数据差异备份与恢复
差异备份定义:每次判断新数据都和 完全备份比较
也必须首先先有1次备份 才能做差异备份

差异备份数据命令

[root@host50 ~]# innobackupex -u root -p 123456 /fullbak --no-timestamp
存储新数据
存储一次数据做一次差异备份操作:
差异备份及恢复命令
做第1次差异备份
[root@host50 ~]# innobackupex -u root -p 123456 --incremental /adir --incremental-basedir=/fullbak/ --no-timestamp

再存储新数据
做第2次差异备份
[root@host50 ~]# innobackupex -u root -p 123456 --incremental /bdir --incremental-basedir=/fullbak/ --no-timestamp

再存储新数据
做第3次差异备份
[root@host50 ~]# innobackupex -u root -p 123456 --incremental /cdir --incremental-basedir=/fullbak/ --no-timestamp

[root@host50 ~]# scp -r /fullbak root@192.168.4.51:/opt/
[root@host50 ~]# scp -r /cdir/ root@192.168.4.51:/opt/

125 innobackupex --apply-log --redo-only /opt/fullbak/
合并数据时只需要把最后一次备份的文件与第一次完全备份的文件合并即可
127 innobackupex --apply-log --redo-only /opt/fullbak/ --incremental-dir=/opt/cdir/
131 systemctl stop mysqld
132 rm -rf /var/lib/mysql/*
133 innobackupex --copy-back /opt/fullbak/
134 chown -R mysql:mysql /var/lib/mysql
135 systemctl start mysqld

增量备份和差异备份的不同:增量备份的每一份备份文件在合并当中都需要合并,因为增量备份每一次的备份数据都是
自上一次备份完之后到这次备份的时间段里的数据。而差异备份在合并当中只需要把最后一次备份文件与初始文件合并
即可,因为差异备份的每一次备份的数据都是自第一次备份以来到最后一次备份时间段里的数据。

5恢复单张表
1)执行删除数据命令
前提:50主机有完全备份的备份文件
[root@host50 ~]# mysql –uroot -p123456
mysql> delete from db3.user2; //误删除数据操作
mysql>

  1. 删除表空间
    mysql> alter table db3.user2 discard tablespace;

  2. 导出表信息
    [root@host50 ~ ]# innobackupex --apply-log --export /allbak

  3. 拷贝表信息文件到数据库目录下
    [root@host50 ~]# cp /allbak/db3/user2.{cfg,exp,ibd} /var/lib/mysql/db3/

  4. 修改表信息文件的所有者及组用户为mysql
    [root@host50 ~]# chown mysql:mysql /var/lib/mysql/db3/user2.*

  5. 导入表空间
    mysql> alter table db3.user2 import tablespace;

  6. 删除数据库目录下的表信息文件
    [root@host50 ~]# rm -rf /var/lib/mysql/db3/user2.cfg
    [root@host50 ~]# rm -rf /var/lib/mysql/db3/user2.exp

  7. 查看表记录
    mysql> select * from db3.user2;

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值