snapshot:基于LVM快照的备份(2)

由于该写入操作出现在我们完整备份之后,所以我们的完整备份中没有这个数据库和其中的数据,所以此时我们只能借助于二进制日志文件了。我们上次完整备份时的二进制日志文件是mysql-bin.000005,在我们做了完整备份恢复之后,重启了sql服务,

于是生成了mysql-bin.000006二进制日志文件。


查看二进制日志文件

[root@www data]# ls /mydata/binlogs/

mysql-bin.000001  mysql-bin.000003  mysql-bin.000005  mysql-bin.index

mysql-bin.000002  mysql-bin.000004  mysql-bin.000006


查看我们完整备份之前保存的二进制日志mysql-bin.000005的信息

[root@www data]# cat /backups/binlog.pos

FilePositionBinlog_Do_DBBinlog_Ignore_DB

mysql-bin.000005365


查看二进制日志文件mysql-bin.000005的具体内容

# mysqlbinlog --start-position=365 /mydata/binlogs/mysql-bin.000005

# at 365

#140412 22:55:48 server id 1  end_log_pos 403GTID 0-1-2176

/*!100001 SET @@session.gtid_domain_id=0*//*!*/;

/*!100001 SET @@session.server_id=1*//*!*/;

/*!100001 SET @@session.gtid_seq_no=2176*//*!*/;

......省略一些不甚重要的信息

# at 4857

#140412 22:55:51 server id 1  end_log_pos 4895GTID 0-1-2200

/*!100001 SET @@session.gtid_seq_no=2200*//*!*/;

# at 4895

#140412 22:55:51 server id 1  end_log_pos 5009Querythread_id=4exec_time=0error_code=0

SET TIMESTAMP=1397314551/*!*/;

DROP TABLE IF EXISTS `t5` /* generated by server */

/*!*/;

# at 5009

#140412 22:55:51 server id 1  end_log_pos 5047GTID 0-1-2201

/*!100001 SET @@session.gtid_seq_no=2201*//*!*/;

# at 5047

#140412 22:55:51 server id 1  end_log_pos 5245Querythread_id=4exec_time=0error_code=0

SET TIMESTAMP=1397314551/*!*/;

CREATE TABLE `t5` (

`ID` int(10) unsigned NOT NULL DEFAULT '0',

`Name` char(30) DEFAULT NULL

) ENGINE=InnoDB DEFAULT CHARSET=latin1

/*!*/;

# at 5245

#140412 22:55:51 server id 1  end_log_pos 5283GTID 0-1-2202


借助二进制日志文件实现增量备份的恢复


现在我们需要将这些二进制日志信息导入到mysql服务器

法1:

# mysqlbinlog --start-position=365 /mydata/binlogs/mysql-bin.000005 >/tmp/incr.sql

# mysql </tmp/incr.sql 或 mysql> source /tmp/incr.sql

法2:

# mysqlbinlog --start-position=365 /mydata/binlogs/mysql-bin.000005 | mysql


在数据库查看mydb数据库是否已经恢复了

MariaDB [(none)]> show databases;

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

| Database          |

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

| hellodb            |

| information_schema |

| mydb              |

| mysql              |

| performance_schema |

| test              |

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

6 rows in set (0.01 sec)

我们可以看到mydb数据库已成功恢复。

注:当数据库灾难恢复之后,我们要做的第一件事就是对当前数据库做一次完整备份,以备不时之需,有备无患

mylvbackup: perl脚本,快速基于lvm备份mysql

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/858e9e6b577cfb821d9e7aba4dc908d7.html