接上回:
mysql> select Host,User,Password from mysql.user; +------------------+--------+-------------------------------------------+ | Host | User | Password | +------------------+--------+-------------------------------------------+ | localhost | root | *2CF528CA7B474EC019B52035BDF52F143D939DBA | | gzy.tongzhou.com | root | *2CF528CA7B474EC019B52035BDF52F143D939DBA | | 127.0.0.1 | root | *2CF528CA7B474EC019B52035BDF52F143D939DBA | | % | zabbix | *2CF528CA7B474EC019B52035BDF52F143D939DBA | | localhost | backup | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 | | localhost | test1 | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 | +------------------+--------+-------------------------------------------+ 6 rows in set (0.00 sec)
此时发现用户test1已经存在了,证明xtrabackup的恢复是成功的,但是test2却没有恢复,只能使用我们之前备份的二进制日志文件来恢复了。
去完全备份的目录下查看一下当时备份时候binlog的日志信息(因为增量备份是被应用到完全备份里的,当然,查看最后一次增量备份目录中的这个文件信息也可以,其实两个内容是一样的):
[root@gzy ~]# cat /backup/2014-02-17_01-09-48/xtrabackup_binlog_info mysql-bin.000021 574
读取该二进制日志的位置并保存至.sql文件
[root@gzy ~]# mysqlbinlog --start-position=574 /tmp/mysql-bin.000021 > /tmp/1.sql [root@gzy ~]#
进入mysql且先关闭二进制功能,进行恢复,再开启二进制功能:
mysql> set sql_log_bin = 0; Query OK, 0 rows affected (0.00 sec) mysql> source /tmp/1.sql; Query OK, 0 rows affected (0.00 sec) Query OK, 0 rows affected (0.00 sec) mysql> set sql_log_bin = 1; Query OK, 0 rows affected (0.00 sec)
再查看一下,发现用户test2已恢复回来了
mysql> select Host,User,Password from mysql.user; +------------------+--------+-------------------------------------------+ | Host | User | Password | +------------------+--------+-------------------------------------------+ | localhost | root | *2CF528CA7B474EC019B52035BDF52F143D939DBA | | gzy.tongzhou.com | root | *2CF528CA7B474EC019B52035BDF52F143D939DBA | | 127.0.0.1 | root | *2CF528CA7B474EC019B52035BDF52F143D939DBA | | % | zabbix | *2CF528CA7B474EC019B52035BDF52F143D939DBA | | localhost | backup | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 | | localhost | test1 | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 | | localhost | test2 | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 | +------------------+--------+-------------------------------------------+
到这里,xtrabackup的完全+增量+二进制备份及恢复已经完成了。
当然了,xtrabackup还有很多高级功能,比如说进行备份恢复时指定具体的内存资源来加快速度、指定以数据流的形式压缩、从远程主机上的备份文件进行恢复、备份指定库或指定表等等,总得来说功能还是比较强大的,重要的是其基于文件系统或者说基于innodb存储引擎底层技术实现的物理备份特性还是比较赞的,根据公司业务的对数据备份可靠性的具体需求,可以自定义其使用的命令参数和方法。有兴趣的朋友可以去深入研究一下,这里就不一一列举了,其实这个工具的使用无非就是命令行参数的组合,使用xtrabackup --help列出其参数选项然后读一下然后理解其含义,然后测试使用即可。