标签:gtid pos dmi 原理 清空 binlog tab 查看 create
恢复的过程会应用xtrabackup_log,将提交的事务变更到 InooDB表空间,同时回滚未提交的事务。
create database vcyber; use vcyber; create table t(id int primary key,name varchar(10)); insert into t select 1,‘a‘; insert into t select 2,‘b‘; select * from t; +----+------+ | id | name | +----+------+ | 1 | a | | 2 | b | +----+------+
innobackupex --defaults-file=/etc/my.cnf --slave-info --no-timestamp /data/backup/data/dbfull_3306_`date ‘+%Y%m%d_%H%M‘`
insert into t select 3,‘c‘; insert into t select 4,‘d‘; select * from t; +----+------+ | id | name | +----+------+ | 1 | a | | 2 | b | | 3 | c | | 4 | d | +----+------+
2.4. 模拟误删除数据库
drop database vcyber;
2.5. 恢复数据库
# 关闭数据库
mysqladmin shutdown
# 把原来的数据目录改名,清空 data目录下面的数据,要不然后面还原数据的时候会报目录非空
mv /data/mysql/mysql_3306/data /data/mysql/mysql_3306/data_bak
# 应用日志
innobackupex --defaults-file=/etc/my.cnf --apply-log /data/backup/data/dbfull_3306_20180907_0319
# 把一致性的备份还原到原来数据目录
innobackupex --defaults-file=/etc/my.cnf --move-back /data/backup/data/dbfull_3306_20180907_0319
# 修改权限
chown -R mysql:mysql /data/mysql/mysql_3306/data
2.6. 查看恢复情况
# 启动数据库
service mysqld start
# 查看恢复状况
select * from t; +----+------+ | id | name | +----+------+ | 1 | a | | 2 | b | +----+------+
有 2 条数据没有恢复过来
# 查看开始应用 binlog 的位置
cat xtrabackup_binlog_pos_innodb bin.000001 944
# 解析binlog
mysqlbinlog -vv --start-position=944 /data/mysql/mysql_3306/logs/bin.00000 > recover.sql
# 清空GTID,最好先备份 binlog
reset master
# 应用 binlog
mysql < recover.sql
# 查看恢复情况
select * from t; +----+------+ | id | name | +----+------+ | 1 | a | | 2 | b | | 3 | c | | 4 | d | +----+------+
看来已经是把数据恢复回来了
参考书籍:《涂抹MySQL》
标签:gtid pos dmi 原理 清空 binlog tab 查看 create
原文地址:https://www.cnblogs.com/ziroro/p/9859114.html