innobackupex --user=root --password=123456 --no-timestamp /data/full/ #备份
1.执行 --apply-log
2.清空损坏目录,cp复制回去。或者指向datadir备份目录。(或者使用innobackupex --copy-back)
3.datadir授权mysql用户
innobackupex --apply-log /data/full/ #模拟了CSR的全过程,在恢复之前,将数据的LSN号和redo LSN号追平
innobackupex --copy-back /data/full/
chown mysql.mysql -R /data/3306/
systemctl start mysqld
模拟数据:
create database full charset utf8mb4;
use full;
create table t1 (id int);
insert into t1 values(1),(2),(3);
commit;
全备:
innobackupex --user=root --password=123456 --no-timestamp /data/full
模拟周一的数据变化:
create database inc1 charset utf8mb4;
use inc1;
create table t1 (id int);
insert into t1 values(1),(2),(3);
commit;
进行周一的增量备份:
innobackupex --user=root --password=123456 --no-timestamp --incremental --incremental-basedir=/data/full /data/inc1
模拟周二数据变化
create database inc2 charset utf8mb4;
use inc2;
create table t1 (id int);
insert into t1 values(1),(2),(3);
commit;
进行周二的增量备份:
innobackupex --user=root --password=123456 --no-timestamp --incremental --incremental-basedir=/data/inc1 /data/inc2
周三的数据变化
create database inc3 charset utf8mb4;
use inc3;
create table t1 (id int);
insert into t1 values(1),(2),(3);
commit;
模拟上午10点数据库崩溃
rm -rf /data/3306/
恢复思路
恢复前的准备
(1) 整理full
innobackupex --user=root --password=123456 --apply-log --redo-only /data/full/
(2) 合并inc1到full,并整理备份
innobackupex --user=root --password=123456 --apply-log --redo-only --incremental-dir=/data/inc1/ /data/full/
(3) 合并inc2到full,并整理备份
innobackupex --user=root --password=123456 --apply-log --incremental-dir=/data/inc2/ /data/full/
(4) 最后一次整理full
innobackupex --user=root --password=123456 --apply-log /data/full
mv /data/full/ /data/3306
chown -R mysql.mysql 3306/
截取二进制日志
#起点:
[root@WANGXIANG data]# cat /data/inc2/xtrabackup_binlog_info
mysql-bin.000009 1779 275d1a27-cfe9-11ea-9c4f-000c294f7b08:1-4,
5f40d9c9-d184-11ea-becd-000c294f7b08:1-9,
bb6b0c36-d16c-11ea-a900-000c294f7b08:1-9,
cb151102-cfe7-11ea-b567-000c294f7b08:1 #这里有很多行说明记录的是binlog没有记录数据的起始点,不是备份起始点
#起点:
[root@WANGXIANG ~]# mysqlbinlog /binlog/3306/mysql-bin.000009|grep ‘SET @@‘
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=1*/;
SET @@SESSION.GTID_NEXT= ‘5f40d9c9-d184-11ea-becd-000c294f7b08:3‘/*!*/; #起始点
......
SET @@SESSION.GTID_NEXT= ‘5f40d9c9-d184-11ea-becd-000c294f7b08:13‘/*!*/; #终点
SET @@SESSION.GTID_NEXT= ‘AUTOMATIC‘ /* added by mysqlbinlog */ /*!*/;
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=0*/;
mysqlbinlog --skip-gtids --include-gtids=‘5f40d9c9-d184-11ea-becd-000c294f7b08:3-13‘ /binlog/3306/mysql-bin.000009 > /data/bin.sql
mysql> set sql_log_bin=0;
mysql> source /data/bin.sql;
#验证数据
mysql> select * from full.t1;
mysql> select * from inc1.t1;
mysql> select * from inc2.t1;
mysql> select * from inc3.t1;
原文:https://www.cnblogs.com/wangxiang135/p/13398922.html