mysql备份神器——Xtrabackup全量备份&还原

概述

Xtrabackup是一种物理备份工具,通过协议连接到mysql服务端,然后读取并复制innodb底 层的"数据块",完成所谓的"物理备份"。

支持对innodb进行热备、增量备份、差量备份。

前面已经分享了怎么去安装xtrabackup工具,所以今天主要详细介绍 XtraBackup 备份和恢复的具体过程。


1、源数据库备份

./innobackupex --user=root --password=xxxxx --host=127.0.0.1 --databases=jpcpdb /home/xtrabackup/

mysql备份神器——Xtrabackup全量备份&还原

查看备份出来的文件:

mysql备份神器——Xtrabackup全量备份&还原

/home/xtrabackup/ 备份存放的位置,备份会在该目录下生成一个按照时间命名的文件夹。用--no-timestamp参数可以指定到自己想要的备份文件夹,不受时间命名的文件夹限制。


2、传到目标数据库服务器并解压

# tar -czvf xtrabackupxx.tar.gz xtrabackup/

# scp xtrabackupxx.tar.gz 10.150.xx.xx:/opt

3、恢复(目标数据库服务器执行)

3.1 --apply-log保持数据一致性

利用 --apply-log的作用是通过回滚未提交的事务及同步已经提交的事务至数据文件使数据文件处于一致性状态。

# innobackupex --defaults-file=/etc/my.cnf --use-memory=16G --apply-log /opt/xtrabackup/2018-07-24_10-43-34/
为了加快速度,一般建议设置--use-memory,这个步骤完成之后,目录/opt/xtrabackup/2018-07-24_10-43-34/下的备份文件已经准备就绪。

mysql备份神器——Xtrabackup全量备份&还原

应用完之后再查看备份文件看是否有变化:

mysql备份神器——Xtrabackup全量备份&还原

这里可以看到redo log已经出现。xtrabackup_开头的几个文件记录了一些日志偏移量的信息和日志名和时间等信息

3.2 开始恢复

1、停止后备份从数据库文件

#service mysql stop
# cp -rpf /usr/local/mysql/data/ /backup
# rm -rf /usr/local/mysql/data/

说明:p保留属主属组权限

2、恢复jpcpdb数据库

innobackupex --defaults-file=/etc/my.cnf --copy-back /opt/xtrabackup/2018-07-24_10-43-34/

执行上面的命令需要保证数据库目录是空的,否则会失败,因为目录里有binlog日志,要么移走,要么就用手动复制需要的文件。总之日志不要和数据放在一起!

mysql备份神器——Xtrabackup全量备份&还原

3、恢复mysql数据库文件(密码之类)

[root@s-pp-02 /]# cp -r /backup/mysql/ /usr/local/mysql/data/
[root@s-pp-02 /]# cp -r /backup/performance_schema/ /usr/local/mysql/data/
[root@s-pp-02 /]# cp -r /backup/sys/ /usr/local/mysql/data/

mysql备份神器——Xtrabackup全量备份&还原

4、修改权限

# chown -R mysql:mysql /usr/local/mysql/
# chmod -R 755 /usr/local/mysql/

5、启动数据库

#service mysql start

重启后对数据表数量、索引等做检查。


总结:

大家有空可以也可以在自己电脑测试一下,备份恢复的话xtrabackup是很不错的一个选择,后面会分享更多工作中比较多涉及的一些工具,感兴趣的朋友可以关注下!!

mysql备份神器——Xtrabackup全量备份&还原

相关推荐