entOS-6 mysql]# chown -R mysql:mysql /data/mysql
[root@CentOS-6 mysql]# service mysqld start
Starting MySQL.??????????????????????????????????????????? [? OK? ]
在恢复的整个过程中,mysql服务不需要启动。xtrabackup的恢复不包括二进制日志文件的恢复。
Xtrabackup增量备份
使用--incremental选项指定这是一个增量备份过程,通过--incremental-basedir指定这个增量备份是基于哪个完全备份。如果不是第一次增量备份,--incremental-basedir应该指向上一次的增量备份。完成之后会有一个独立的备份文件。
1、完全备份
[root@CentOS-6 ~]# innobackupex --user=bkpuser --password=bkpuser --no-timestamp /backup/whole.back
.....
150728 21:19:55? innobackupex: completed OK!
2、第一次增量备份
[root@CentOS-6 ~]# innobackupex --no-timestamp --incremental /backup/inc.1.back --incremental-basedir=/backup/whole.back/
......
150728 21:22:36? innobackupex: completed OK!
3、第二次增量备份
[root@CentOS-6 ~]# innobackupex --no-timestamp --incremental /backup/inc.2.back --incremental-basedir=/backup/inc.1.back/
.......
150728 21:24:48? innobackupex: completed OK!
增量备份的恢复
--redo-only表示仅提交已完成的事务,而不回滚未提交的事务,因为未提交的事务可能在增量备份中提交,将增量备份合并至完全备份后,恢复即可。
1、合并所有的增量备份至完全备份。最后一个增量备份合并时可以不加--redo-only选项
[root@CentOS-6 ~]# innobackupex --apply-log --redo-only /backup/whole.back/
......
150728 21:28:47? innobackupex: completed OK!
?
[root@CentOS-6 ~]# innobackupex --apply-log --redo-only /backup/whole.back/ --incremental-dir=/backup/inc.1.back/
......
150728 21:37:48? innobackupex: completed OK!
?
[root@CentOS-6 ~]# innobackupex --apply-log --redo-only /backup/whole.back/ --incremental-dir=/backup/inc.2.back/
.......
150728 21:38:48? innobackupex: completed OK!
2、复制到数据库的数据目录下。
[root@CentOS-6 ~]# innobackupex --copy-back /backup/whole.back/
[root@CentOS-6 ~]# chown -R mysql:mysql /data/mysql
[root@CentOS-6 ~]# service mysqld start
Starting MySQL....???????????????????????????????????????? [? OK? ]
单张表的导入导出
MyISAM表可以通过直接复制文件的方式,实现单张表在MySQL服务器之间的转移,InnoDB表无法通过此方式来实现转移。xtrabackup工具可以帮助实现此功能(前提是InnoDB表的表空间单独存放)。
1、这个需要在数据文件处于一致性状态下,通过--export选项将某表导出(所有的表)
[root@CentOS-6 ~]# innobackupex --apply-log --export /backup/whole.back/
........
150728 21:45:08? innobackupex: completed OK!
2、在目标服务器上创建一个跟原表表结构完全一致的表。
MariaDB [hellodb]> CREATE TABLE mytable (...)? ENGINE=InnoDB;
3、删除此表的表空间
MariaDB [hellodb]> alter table database.tableName discard tablespace;
4、从“导出”表的服务器上,复制该表的table.ibd和table.exp文件至目标服务器的数据目录中(复制过来的文件属组属主都应该是mysql)
[root@CentOS-6 hellodb]# cp -a students.ibd students.exp /data/mysql/hellodb/
[root@CentOS-6 hellodb]# cd /data/mysql/hellodb/
[root@CentOS-6 hellodb]# chown mysql:mysql students.ibd students.exp
5、导入表空间
MariaDB [hellodb]> alter table students import tablespace;
|