使用xtrabackup备份还原mysql
xtrabackup是一种物理备份工具,通过协议连接到mysql服务端,然后读取并复制innodb底层的”数据块”,完成所谓的”物理备份”。支持在线热备份(备份时不影响数据读写)。
相对于mysqldump的逻辑备份还原快了太多了。
安装
最新版看https://www.percona.com/downloads
下载rpm包:wget https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.4.9/binary/redhat/7/x86_64/percona-xtrabackup-24-2.4.9-1.el7.x86_64.rpm
yum安装:yum install percona-xtrabackup-24-2.4.9-1.el7.x86_64.rpm
全量备份
将备份的文件存放在/backup目录下
innobackupex --defaults-file=/etc/my.cnf --user=root --password=123123 /backup
备份完成后会显示 ok字样
全量备份的还原
1.先prepare,利用–apply-log的作用是通过回滚未提交的事务及同步已经提交的事务至数据文件使数据文件处于一致性状态。
备份出的数据并不能直接使用,因为备份出的数据是不一致的,我们还需要将同时备份出的事务日志应用到备份中,才能得到一份完整、一致、可用的数据,xtrabackup称这一步操作为prepare,也就是还原数据前的”准备”工作。
innobackupex --apply-log /backup/2018-06-23_10-53-51/
在事务日志容量很大的情况下,可以使用–use-memory选项加速,在不指定内存大小的情况下,默认会占用100MB的内存。
2.copy:需要数据目录为空
innobackupex --defaults-file=/etc/my.cnf --copy-back /backup/2018-06-23_10-53-51/
3.改权限
chown -R mysql:mysql /var/lib/mysql/
指定库/表备份还原
备份加参数–databases=”dba_test xtra_test”(多个库用空格隔开,指定表直接加点zabbix.history)
prepare过程一样。
还原,因为是部分备份,不能直接用–copy-back,只能手动来复制需要的库,也要复制ibdata(数据字典)