xtrabackup的初使用(1)
这里参考了jeanron大师的文章:http://chuansong.me/n/1696438151334
http://www.cnblogs.com/chenpingzhao/p/4905310.html
经过前边恶心的安装以后,接下来尝试一番xtrabackup的备份功能。
xtrabackup主要是用于热备份innodb,或者是 xtradb表中数据的工具,不能备份其他类型的表,也不能备份数据表结构;
innobackupex是将xtrabackup进行封装的perl脚本,可以备份和恢复MyISAM表以及数据表结构。
**
1、备份的解析
**
从innobackupex –help命令可以看到innobackupex 的参数有很多,下面尝试做一个全备。
innobackupex -S /data/3306/mysql.sock /data/backup/0408/ --no-timestamp --no-lock --throttle=100 -uroot -pmysql123
经过一段时间的备份,可以看到备份完成了
让我们查看一下备份文件如下:
可以看到备份了my.cnf,ibdata1,各种数据库,这时候还多出来几个xtrabackup打头的文件
查看这几个文件的内容如下:
–xtrabackup_binlog_info文件记录了对应当下binlog的信息
[root@cxqtest 0408]# more xtrabackup_binlog_infomore xtrabackup_binlog_info mybinlog.000006 191 82f3c6ed-007a-11e7-9b50-000c298ee31c:1-7
–xtrabackup_checkpoints记录了备份的类型是全备,是从0到1626008的最新的全备
[root@cxqtest 0408]# more xtrabackup_checkpointsbackup_type = full-backupedfrom_lsn = 0to_lsn = 1626008last_lsn = 1626008compact = 0recover_binlog_info = 0
–xtrabackup_info记录的是命令的信息
[root@cxqtest 0408]# more xtrabackup_infouuid = f0083067-0086-11e7-8435-000c298ee31cname = innobackupextoolcommand = -S /data/3306/mysql.sock /data/backup/0408/ --no-timestamp --no-lock --throttle=100 -uroot -pmysql123version = 2.4.6ibbackup_version = 2.4.6server_version = 5.6.30logstart_time = 2017-03-04 11:01:24end_time = 2017-03-04 11:02:01lock_time = 1488596521binlog_pos = filename 'mybinlog.000006', position '191', GTID of the last change '82f3c6ed-007a-11e7-9b50-000c298ee31c:1-7'innodb_from_lsn = 0innodb_to_lsn = 1626008partial = Nincremental = Nformat = filecompact = Ncompressed = Nencrypted = N
–xtrabackup_logfile 看到logfile无法用more查看,是一个二进制日志文件格式,所以使用strings进行查看如下:
记录的是备份的时间
[root@cxqtest 0408]# more xtrabackup_logfile--More--(88%) ?庰掟栶氿烉︷ [root@cxqtest 0408]# XshellXshellXshellXshellXshellXshellXshellXshellXshellXshell -bash: XshellXshellXshellXshellXshellXshellXshellXshellXshellXshell: command not found[root@cxqtest 0408]# [root@cxqtest 0408]# strings xtrabackup_log filextrabkup 170304 11:01:25
2、全备恢复测试
数据的恢复还是使用innobackupex这个工具
这里的数据恢复分为两个步骤,prepare和还原恢复,prepare意义是如果我们备份数据的时候,存在未提交的事务,但是数据却存在于备份中,这样就是一个数据不一致的状态,在启动数据库的时候需要走一个前滚,然后是一个回滚的操作。这个体现主要就在于logfile和ibdata。是使用apply-log这个选项实现的。
前提需要先将之前的目录删除,停掉mysql服务。
[root@cxqtest 0408]# /etc/init.d/mysqld stopShutting down MySQL... [ OK ] [root@cxqtest 0408]# [root@cxqtest 0408]# cd [root@cxqtest ~]# [root@cxqtest 3306]# lsdata [root@cxqtest 3306]# mv data data.bak[root@cxqtest 3306]# lsdata.bak [root@cxqtest 3306]# mkdir data
可以使用如下命令进行恢复操作:
第一步:执行innobackupex –defaults-file=/data/backup/0408/backup-my.cnf -uroot -pmysql123 –apply-log /data/backup/0408/
然后执行如下:
innobackupex --defaults-file=/etc/my.cnf -uroot -pmysql123 --copy-back /data/backup/0408/
然后将对应的属组修改回MySQL,默认是root。启动MySQL服务登陆正常
[root@cxqtest data]# /etc/init.d/mysqld startStarting MySQL................ [ OK ] [root@cxqtest data]# [root@cxqtest data]# [root@cxqtest data]# mysql -uroot -pmysEnter password: ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES) [root@cxqtest data]# mysql -uroot -pEnter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 2Server version: 5.6.30-log Source distribution Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or itsaffiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. root@localhost:mysql.sock 12:56:04 [(none)]> root@localhost:mysql.sock 12:56:05 [(none)]> root@localhost:mysql.sock 12:56:05 [(none)]> root@localhost:mysql.sock 12:56:05 [(none)]>show databases; +--------------------+| Database | +--------------------+| information_schema | | mysql | | performance_schema | | test | +--------------------+4 rows in set (0.14 sec) root@localhost:mysql.sock 12:56:08 [(none)]> root@localhost:mysql.sock 12:56:09 [(none)]> root@localhost:mysql.sock 12:56:09 [(none)]>exit
---------
未完待续!!!