xtrabackup:
xtrabackup是由percona公司开发的。对innoDB引擎支持非常好。在备份的时候不用锁表。如果是MYiSAM引擎的,则需要锁表。
xtrabackup 是复制 ib_logfile0(ib_logfile1)事务日志来实行复制的。此外,还提供了perpare 功能。在恢复的时候还可以和数据库数据比对。如果有更新的则更新到备份中。避免了数据的丢失。同时还提供了压缩机制减少存储压力。
官网下载rpm包地址:https://www.percona.com/downloads/XtraBackup 也 可以yum安装
yum方式安装:(以下是官网提供的制作yum源的方法)
构建yum仓库
#yum install http://www.percona.com/downloads/percona-release/redhat/0.1-3/percona-release-0.1-3.noarch.rpm
(此时:/etc/yum.repos.d/目录下多个仓库 percona-release.repo)
# yum list | grep percona (查看软件包)
安装 #yum install percona-xtrabackup-20.x86_64 -y (这里选择 20版本的)
备份:
innobackupex是perl脚本对xtrabackup的封装,和功能扩展。xtrabackup需要连接到数据库和datadir操作权限。
命令:# innobackupex --user=root --defaults-file=.../my.cnf /mnt
#user 是数据库的用户(非系统的root) 有密码 的还可以加参数 --password=
# --defaults-file 如果不设置会自动设置为 /etc/my.cnf(如果多实例需要注意)
--database= 单独对某个数据库做备份 ,若是不添加此参数那就那就是对全库做备份
#/mnt是将备份存放的目录
恢复:(可以把 数据文件夹下的文件清空 ,但是保留数据文件夹)
# innobackupex --copy-back /mnt/2017-02-13_17-05-08/
这里如果my.cnf文件位置不在/etc下。需要 加参数 --default-file=.../my.cnf
如果在备份的同时数据库依旧在写入操作。则需要 prepare 操作。(回滚日志)
先是:prepare 操作,分析事物日志。然后在恢复。
--user-memory:指定prepare阶段可使用的内存,内存多则速度快,默认为10MB
# innobackupex --apply-log /mnt/2017-02-13_17-05-08/
# innobackupex --copy-back /mnt/2017-02-13_17_05_08/
修改data目录的属组和属主:# chown -R mysql:mysql ../data
不然启动的时候会提示找不到 。pid 文件。
启动服务即可。
压缩备份:(流操作)
#innobackupex --user=root --stream=tar --defaults-file=/etc/my.cnf /mnt|gzip ->/mnt/mysql.tar.gz
这里的defaults-file 可以省略。如果配置文件在别处需要。指定。
可用参数:
--parallel=4: 加速备份,这个选项会指定xtrabackup备份文件的线程数。
特别注意的是:这里解压文件 需要参数 i
tar zixf ......tar.gz 不然解压会出错。