在线热备份数据库之innobackupex 完整备份InnoDB
Posted 眼界、格局、胸怀
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在线热备份数据库之innobackupex 完整备份InnoDB相关的知识,希望对你有一定的参考价值。
在线热备份数据库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 |
+------+
以上是关于在线热备份数据库之innobackupex 完整备份InnoDB的主要内容,如果未能解决你的问题,请参考以下文章