在线热备份数据库之innobackupex 完整备份InnoDB

时间:2021-08-21 03:50:06

在线热备份数据库innobackupex 完整备份InnoDB

XtraBackup

  • xtrabackup C程序,支持InnoDB/XtraDB
  • innobackupex : 以Perl脚本封装xtrabackup,还支持MyISAM

个人建议由innobackupex增量/完整 binlog 基本上可以满足小型企业需求

percona-xtrabackup安装部署

  • 依赖库:libev.so
  • 安装依赖事件库 libev
  • 安装percona-xtrabackup
常用选项 含义
- - host 主机名
- - user 用户名
- - port 端口号
- - databases 数据库名
- - password 密码
- - no-timestamp 不用时间命名备份子目录

-- databases 不加该参数则为 备份所有数据库
--databases="库名 库名" 指定多个库
--databases="库1.表名" 备份单张表

  • 安装percona-xtrabackup
yum install -y  libev-4.15-1.el6.rf.x86_64.rpm 
yum install -y  percona-xtrabackup-24-2.4.7-1.el7.x86_64.rpm
  • 建立测试环境和数据使用percona-xtrabackup 进行完整备份恢复.
create database lqh1;
create table lqh1.tb1(id int );
insert into lqh1.tb1 values (1),(2),(3);
  • 使用innobackupex对数据库进行完整备份
innobackupex --user root --password Aa123456. /fullbackup  --no-timestamp

这里使用的是本机备份,也可以结合脚本在异机备份,使用参数--host
这里使用的是不指定数据库,对数据库所有库所有表进行备份,也可以通过参数--databases指定数据库.
这里备份目录/fullbackup可以不用创建,备份程序会自动进行创建

  • 接下来使用完整备份进行恢复
  • 在目标机器上先停止mysql服务.
systemctl stop mysqld
  • 将恢复目标机器上的mysql数据目录(默认安装路径/var/lib/mysql)下的文件打包移走,仅仅留下空目录即可.
tar -zcvPf /home/mysqldata.tar.gz /var/lib/mysql && rm -rf /var/lib/mysql/*
  • 应用innobackupex备份日志,准备进行完整恢复.
innobackupex --apply-log /fullbackup
  • 进行innobackupex拷贝数据库(要求mysqldata 文件夹为空)
innobackupex --copy-back  /fullbackup
  • 将恢复的目录里面所有的文件和文件夹属组该成mysql,让mysql拥有权限操作,因为使用root操作的innobackupex所以目前是root
chown -R mysql:mysql /var/lib/mysql/*
  • 重启mysql服务,校验恢复结果
select * from lqh1.tb1;
 ------ 
| id   |
 ------ 
|    1 |
|    2 |
|    3 |
 ------