Point-In-Time recovery(时间点的恢复innobackupex)

本文介绍如何使用innobackupex工具进行MySQL数据库的全量备份和增量恢复过程,包括创建测试数据、全量备份、备份文件prepare、更新数据库、查询二进制日志位置、清空数据库并恢复数据等步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用工具:innobackupex

第一步:在自己的数据创建添加一些数据

create database xtra_test default charset utf8;

use xtra_test;

create table M(id int,name varchar(10))engine=myisam;

create table I(id int,name varchar(10))engine=innodb;

insert into I values(11,'A'),(22,'B'),(33,'C'),(44,'D'),(55,'E');

insert into M values(1,'a'),(2,'b'),(3,'c'),(4,'d'),(5,'e');

 

第二步:进行全量备份

innobackupex --defaults-file=/etc/my.cnf --user=root --password=@126.com /home/backup/xtrabackup/

 

第三步:prepare备份文件

innobackupex --apply-log /home/backup/xtrabackup/2018-07-31_23-32-17/

 

第四步:登录数据库,做些插入删除操作,使备份的position和最新的position有一定的举例,为下一步做Point-In-Time recovery做准备

update M set name = upper(name);

create table X(name varchar(20))default charset utf8;

insert into X values('zjy');

 

第五步:查询数据库当前的binary logs 和最新的位置,及在备份文件中,查看备份到的位置

mysql> SHOW BINARY LOGS;

+------------------+-----------+

| Log_name         | File_size |

+------------------+-----------+

| mysql-bin.000001 |       177 |

| mysql-bin.000002 |      2586 |

+------------------+-----------+

2 rows in set (0.00 sec)

 

mysql> SHOW MASTER STATUS;

+------------------+----------+--------------+------------------+-------------------+

| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |

+------------------+----------+--------------+------------------+-------------------+

| mysql-bin.000002 |     2586 |              |                  |                   |

+------------------+----------+--------------+------------------+-------------------+

1 row in set (0.00 sec)

 

备份到的Position:

[root@localhost 2018-07-31_23-32-17]# cat xtrabackup_binlog_info

mysql-bin.000002    1743

 

第六步:清空mysql数据库,进行全备份的copy-back。注意若你的binlog文件在数据目录下,需要将binlog备份一下,我是讲整个数据目录,cp到同目录下的backMySQL文件下。

service mysqld stop        #关掉服务器

rm -rf /var/lib/mysql/*    #删空数据文件

innobackupex --copy-back /home/backup/xtrabackup/2018-07-31_23-32-17/        #数据恢复

sudo chown mysql:mysql /var/lib/mysql -R        #修改权限

service mysqld start      #启动服务器

 

第七步:登录数据库,查看是否恢复到完全备份的时间点

OK

 

第八步:使用二进制文件,数据恢复到最新的位置

mysqlbinlog /var/lib/backupMySQL/mysql-bin.000002 --start-position=1743 | mysql -uroot -p

第九步:登录数据库,检查是否恢复到最新位置

OK

 

补充:

如果有多个二进制文件需要进行恢复的话:

第八步可写成:

mysqlbinlog /var/lib/backupMySQL/mysql-bin.000002 /var/lib/backupMySQL/mysql-bin.000003 --start-position=1743 | mysql -u root -p

 

如果想要恢复到确定的时间,假设为:18-10-13 01:00:00:可使用一下命令:

mysqlbinlog /path/to/datadir/mysql-bin.000003 /path/to/datadir/mysql-bin.000004 \

--start-position=57 --stop-datetime="11-12-25 01:00:00" | mysql -u root -p

 

数据进行时间点的恢复时还可下边这种方法:(从第八步开始可换成一下方法)

1、从二进制文件中提取SQL语句,并存放到mybinlog.sql文件

mysqlbinlog /var/lib/backupMySQL/mysql-bin.000002 /var/lib/backupMySQL/mysql-bin.000003

--start-position=1743 > mybinlog.sql

2、登录mysql,执行mybinlog.sql

source  /data/backup/mybinlog.sql

数据库恢复完成

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值