使用XtraBackup备份恢复MariaDB数据库(4)

说明:由于没有实现将bin-log文件和数据目录分开,所以我先导入二进制日志文件中的修改内容。
查看binlog_info日志位置记录位置为1621,那么只需要把1621之后的修改导出为sql文件即可。
[root@MariaDB~]# cat /backup/2015-06-15_23-51-55/xtrabackup_binlog_info 
mysql-bin.000005    979 
[root@MariaDB ~]# mysqlbinlog --start-position=979/mydata/data/mysql-bin.000005 > /backup/timepoint.sql

模拟损坏
停止mysqld服务,然后删除数据目录下的所有数据,模拟硬盘损坏
[root@MariaDB~]# service mysqld stop
[root@MariaDB~]# rm -rf /mydata/data/*

数据恢复
恢复过程:合并完全备份
[root@MariaDB ~]# innobackupex --apply-log-redo-only /backup/2015-06-15_23-45-01/

合并第一个增量备份
[root@MariaDB ~]# innobackupex --apply-log-redo-only /backup/2015-06-15_23-45-01/--incremental-dir=/backup/2015-06-15_23-47-02/

合并第二个增量备份
[root@MariaDB ~]# innobackupex --apply-log-redo-only /backup/2015-06-15_23-45-01/--incremental-dir=/backup/2015-06-15_23-51-55/

使用合并后的命令进行恢复
[root@MariaDB ~]# innobackupex --copy-back/backup/2015-06-15_23-45-01/

设置完成之后修改数据目录的属主属组
[root@MariaDB data]# chown -R mysql.mysql ./*
[root@MariaDB data]# ll
total 18452
drwxr-xr-x 2 mysql mysql    4096 Jun 16 00:01 hellodb
-rw-r--r-- 1 mysql mysql 18874368 Jun 16 00:01ibdata1
drwxr-xr-x 2 mysql mysql    4096 Jun 16 00:01 mysql
drwxr-xr-x 2 mysql mysql    4096 Jun 16 00:01 performance_schema
drwxr-xr-x 2 mysql mysql    4096 Jun 16 00:01 test
-rw-r--r-- 1 mysql mysql      632 Jun 16 00:01 xtrabackup_info

设置完成之后启动Mysql服务器
[root@MariaDBdata]# service mysqld start

查看数据库这个时候还没有第二次增量备份之后修改的数据
MariaDB[hellodb]> select * from tb1;
+------+
|id  |
+------+
|    1 |
|    2 |
|    3 |
|  23 |
|1000 |
|9000 |
+------+

将从二进制导出的sql文件,导入到数据库
[root@MariaDB ~]# mysql -u root -p < /backup/timepoint.sql

查看数据就已经恢复了
MariaDB[hellodb]> select * from tb1;
+-------+
|id    |
+-------+
|    1 |
|    2 |
|    3 |
|    23 |
|  1000 |
|  9000 |
|88888 |
+-------+

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

转载注明出处:https://www.heiqu.com/2f67218c4a3fbe45d0c295a824e3fbb6.html