percona软件介绍 、 innobackupex备份与恢复

案例1:数据完全备份与恢复

1.1 问题

安装percona软件包
备份所有数据到/allbak目录下
搭建新的数据库服务器,使用备份文件恢复数据
验证数据恢复
常用的MySQL备份工具

物理备份缺点

  • 跨平台性差
  • 备份时间长,冗余备份,浪费存储空间

mysqldump备份缺点

  • 效率较低,备份和还原速度慢,锁表
  • 备份过程中,数据插入和更新操作被阻塞

在这里插入图片描述

XtraBackup工具

一款强大的在线热备工具

  • 备份过程中不锁库表,适合生产环境
  • 由专业组织Percona提供(改进MySQL分支)

主要含两个组件

  • XtraBackup : C程序,支持InnoDB/XtraDB
  • innobackupex : 以Perl脚本封装XtraBackup,还支持MyISAM
步骤一:安装XtraBackup软件包
  1. 安装软件
[root@host50 ~]# rpm -ivh 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
  1. 确认安装的主要程序/脚本
[root@host50 ~]# rpm -qa  | grep -i percona
percona-xtrabackup-24-2.4.7-1.el7.x86_64
[root@host50 ~]# rpm -ql percona-xtrabackup-24
/usr/bin/innobackupex
/usr/bin/xbcloud
/usr/bin/xbcloud_osenv
/usr/bin/xbcrypt
/usr/bin/xbstream
/usr/bin/xtrabackup
/usr/share/doc/percona-xtrabackup-24-2.4.7
/usr/share/doc/percona-xtrabackup-24-2.4.7/COPYING
/usr/share/man/man1/innobackupex.1.gz
/usr/share/man/man1/xbcrypt.1.gz
/usr/share/man/man1/xbstream.1.gz
/usr/share/man/man1/xtrabackup.1.gz
[root@host50 ~]# innobackupex --help  //查看简单帮助
[root@host50 ~]# man  innobackupex //查看详细帮助
/usr/share/man/man1/xtrabackup.1.gz
步骤二:备份所有数据到/allbak目录下
常规选项含义
–host主机名
–user用户名
–port端口号
–password密码
–databases数据库名
–no-timestamp不用日期命名备份文件名

在这里插入图片描述

常用选项含义
–redo-noly日志合并
–apply-log准备恢复数据
–copy-back拷贝数据
–incremental 目录名增量备份
–incremental-basedir=目录名增量备份时,指定上一次备份数据存储的目录名
–incremental-dir=目录名准备数据恢复时,指定增量备份数据存储的目录名
–export导出信息表
import导出空间表
  1. 备份所有数据
[root@host50 ~]# innobackupex --user root --password 123456 /allbak --no-timestamp //执行备份命令
170425 11:05:44 innobackupex: Starting the backup operation
IMPORTANT: Please check that the backup run completes successfully.
           At the end of a successful backup run innobackupex
           prints "completed OK!".
........
170425 11:06:01 completed OK
  1. 确认备份好的文件数据
[root@host50 ~]# ls /allbak
backup-my.cnf  ib_buffer_pool  mysql      sys                   xtrabackup_info
db1  ibdata1      performance_schema  xtrabackup_checkpoints  xtrabackup_logfile
  1. 把备份文件传递给 目标服务器51
[root@host50 ~]# scp -r /allbak root@192.168.4.51:/root/
步骤三:在51主机,使用备份文件恢复数据
  1. 安装软件包,提供恢复命令
[root@host51 ~]#  rpm -ivh  libev-4.15-1.el6.rf.x86_64.rpm
[root@host51 ~]# yum -y  install percona-xtrabackup-24-2.4.7-1.el7.x86_64.rpm
  1. 恢复数据
[root@host51 ~]# systemctl  stop mysqld
[root@host51 ~]# ls /var/lib/mysql
[root@host51 ~]# rm -rf /var/lib/mysql/* //清空数据
[root@host51 ~]#innobackupex--apply-log  --redo-only /root/allbak //恢复数据
170425 11:42:19 innobackupex: Starting the apply-log operation
IMPORTANT: Please check that the apply-log run completes successfully.
...........
170425 11:43:10 completed OK!
[root@host50 ~]# chown  -R mysql:mysql /var/lib/mysql //修改所有者与组
步骤四:验证数据恢复
  1. 启动服务
[root@host51 ~]# systemctl  start mysqld
[root@host51 ~]# mysql -uroot -p123456
mysql> show databases;
mysql> select * from db3.user2;
mysql>select count(*) from db3.user;
  1. 查看数据
[root@host51 ~]# mysql -uroot -p123456
mysql> show databases;
mysql> select * from db3.user2;
mysql> select count(*) from db3.user;

案例2:恢复单张表

2.1 问题

执行删除数据命令
使用备份目录/allbak 恢复表数据
验证数据恢复
步骤一:安装XtraBackup软件包
  1. 执行删除数据命令
mysql> delete from db3.user2; //误删除数据操作   
  1. 删除表空间
mysql> alter table db3.user2 discard  tablespace;
  1. 导出表信息
[root@host50 ~ ]# innobackupex --apply-log --export  /allbak
  1. 拷贝表信息文件到数据库目录下
 [root@host50 ~]# cp /allbak/db3/user2.{cfg,exp,ibd} /var/lib/mysql/db3/
  1. 修改表信息文件的所有者及组用户为mysql
[root@host50 ~]# chown mysql:mysql /var/lib/mysql/db3/user2.*    
  1. 导入表空间
mysql> alter  table db3.user2   import  tablespace;
  1. 删除数据库目录下的表信息文件
[root@host50 ~]# rm -rf /var/lib/mysql/db3/user2.cfg
[root@host50 ~]# rm -rf /var/lib/mysql/db3/user2.exp
  1. 查看表记录
mysql> select  * from db3.user2;

案例3:增量备份与恢复

问题

具体要求如下:
备份所有数据
备份新产生的数据
删除数据
使用备份文件恢复数据
步骤一:备份所有数据,在50主机执行
  1. 完全备份 (备份所有数据到/fullbak目录)
[root@host50 ~]# innobackupex --user root --password 123456  /fullbak --no-timestamp
步骤二:增量备份 (每次执行备份,值备份新数据,在50主机执行)
  1. 插入新记录,并做增量备份
mysql> insert into db3.user2 values(5,"jack");// 插入新记录,多写几条
[root@host50 ~]# innobackupex --user root --password 123456 --incremental /new1dir --incremental-basedir=/fullbak  --no-timestamp //第1次增量备份 ,数据存储目录/new1dir
  1. 插入新记录,并做增量备份
mysql> insert into db3.user2 values(6,"jack");// 插入新记录,多写几条

[root@host50 ~]# innobackupex --user root --password 123456 --incremental /new2dir --incremental-basedir=/newdir1 --no-timestamp //第2次增量备份 ,数据存储目录/new2dir
  1. 把备份文件拷贝给目标主机51
[root@host50 ~]# scp -r /fullbak  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/
步骤三:在主机51 恢复数据
  1. 停止服务,并清空数据
[root@host51 ~]# systemctl  stop  mysqld
[root@host51 ~]# rm -rf /var/lib/mysql/*
  1. 合并日志
[root@host51 ~ ]# innobackupex --apply-log --redo-only /root/fullbak //准备恢复数据
[root@host51 ~ ]# innobackupex --apply-log --redo-only /root/fullbak --incremental-dir=/root/new1dir  //合并日志
[root@host51 ~ ]# innobackupex --apply-log --redo-only /root/fullbak --incremental-dir=/root/new2dir //合并日志
 [root@host51 ~ ]# rm -rf  /root/new2dir  //恢复后,可以删除了
 [root@host51 ~ ]# rm -rf  /root/new1dir  //恢复后,可以删除了
  1. 恢复数据
[root@host51 ~ ]# innobackupex --copy-back /root/fullbak   //拷贝文件到数据库目录下
[root@host51 ~ ]# chown  -R mysql:mysql /var/lib/mysql //修改所有者与组用户
[root@host51 ~ ]# systemctl  start mysqld //启动服务
[root@host51 ~ ]# mysql -uroot -p123456 //登录
mysql> select  count(*)  from db3.user; //查看数据
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值