--首先要安装依赖包libev [root@rudy tmp]# rpm -ivh percona-xtrabackup-2.3.3-1.el6.x86_64.rpm warning: percona-xtrabackup-2.3.3-1.el6.x86_64.rpm: Header V4 DSA/SHA1 Signature, key ID cd2efd2a: NOKEY error: Failed dependencies: libev.so.4()(64bit) is needed by percona-xtrabackup-2.3.3-1.el6.x86_64 --下载地址 http://rpmfind.net/linux/rpm2html/search.php?query=libev.so.4()(64bit) --执行安装 rpm -ivh libev-4.04-2.el6.x86_64.rpm rpm -ivh percona-xtrabackup-2.3.3-1.el6.x86_64.rpm --全量备份与恢复,对于采用配置文件my.cnf为multi的数据库,最好把要备份的数据库单独提取到一个新的文件 innobackupex --defaults-file=/etc/my3306.cnf --user=root --password=123456 --socket=/tmp/mariadb.sock /tmp/backup --停止数据库 mysqld_multi --defaults-extra-file=/etc/my.cnf stop 3 --apply-log日志 innobackupex --defaults-file=/etc/my3306.cnf --user=root --password=123456 --apply-log /tmp/backup/2015-12-29_09-37-37 --执行数据恢复 innobackupex --defaults-file=/etc/my3306.cnf --user=root --password=123456 --copy-back /tmp/backup/2015-12-29_09-37-37 --改变恢复数据目录的所有者,因为默认使用哪个账户恢复,目录所有者既为该用户 chown -R mysql.mysql 3306 --以原有的配置启动数据库 mysqld_multi --defaults-extra-file=/etc/my.cnf start 3 --基于增量的备份与恢复 --执行一个增量的备份,注意其备份是基于 LSN innobackupex --defaults-file=/etc/my3306.cnf --user=root --password=123456 --incremental /tmp/backup/increment --incremental-basedir=/tmp/backup/2015-12-29_10-29-01 --指定基于LSN的增量备份,注意其只是针对xtraDB和innodb表实现的增量,对于myisam表其还是全量的备份 innobackupex --defaults-file=/etc/my3306.cnf --user=root --password=123456 --incremental /tmp/backup/increment --incremental-lsn=1713696 --redo-only //在做增量恢复时,全备和增量备份的数据文件在恢复前必须先将在重做日志文件中的已提交的事务重做!此参数将会合并全备和增量备份的数据文件,但不包括最后一次增量备份的数据文件! (--redo-only should be used when merging all incrementals except the last one ) --先做全量的redo恢复 innobackupex --defaults-file=/etc/my3306.cnf --user=root --password=123456 --apply-log --redo-only /tmp/backup/2015-12-29_10-29-01 --再做增量的恢复,切记顺序不可相反了 innobackupex --defaults-file=/etc/my3306.cnf --user=root --password=123456 --apply-log --redo-only /tmp/backup/2015-12-29_10-29-01 --incremental-dir=/tmp/backup/increment/2015-12-29_10-30-07 --再基于全库做一次apply-log,注意 If you merge the incrementals in the wrong order, the backup will be useless innobackupex --defaults-file=/etc/my3306.cnf --user=root --password=123456 --socket=/tmp/mariadb.sock --apply-log /tmp/backup/2015-12-29_10-29-01 --执行一次备份 innobackupex --user=root --password=123456 --socket=/tmp/mariadb.sock /tmp/backup --apply-log:同xtrabackup的--prepare参数,一般情况下,在备份完成后,数据尚且不能用于恢复操作,因为备份的数据中可能会包含尚未提交的事务或已经提交但尚未同步至数据文件中的事务。 --因此,此时数据 文件仍处理不一致状态。--apply-log的作用是通过回滚未提交的事务及同步已经提交的事务至数据文件使数据文件处于一致性状态。 innobackupex --user=root --password=123456 --socket=/tmp/mariadb.sock --apply-log /tmp/backup/2015-12-29_10-29-01 --如果系统内存充足,可以使用加大内存进行备份 --use-memory=4G --使用流式备份 innobackupex --defaults-file=/etc/my3306.cnf --user=root --password=123456 --incremental --incremental-lsn=1818269 --stream=xbstream ./ > incremental.xbstream --解压xbstream xbstream -x < incremental.xbstream --备份指定的表,支持正则 innobackupex --defaults-file=/etc/my3306.cnf --user=root --password=123456 --include='t*' /tmp/backup innobackupex --defaults-file=/etc/my3306.cnf --user=root --password=123456 --apply-log --export /tmp/backup/2015-12-29_14-13-48 --创建与原来同样的表结构,表名也要相同 CREATE TABLE `t` ( `seq` bigint(20) unsigned NOT NULL, `concat('rudy',seq)` varchar(24) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8; --discard its tablespace ALTER TABLE t DISCARD TABLESPACE; --copy mytable.ibd and mytable.exp ( or mytable.cfg if importing to MySQL 5.6) files to database’s home, and import its tablespace cp /tmp/backup/2015-12-29_11-06-46/test/t.cft /usr/local/mariadb/3306/data/test cp /tmp/backup/2015-12-29_11-06-46/test/t.ibd /usr/local/mariadb/3306/data/test cp /tmp/backup/2015-12-29_11-06-46/test/t.exp /usr/local/mariadb/3306/data/test --修改表的所有者 chown mysql.mysql t* ALTER TABLE t IMPORT TABLESPACE;