Xtrabackup备份 还原

完整备份:
innobackupex --defaults-file=/etc/my.cnf --user=root --password=fxiaokemysql --socket=/tmp/mysql.sock /tmp/bak   #必须将 defaults-file放在第一位
该语句将拷贝数据文件(由my.cnf里的变量datadir指定)至备份目录下( /tmp/bak ),注意:如果不指定--defaults-file,默认值为/etc/my.cnf。
备份成功后,将在备份目录下创建一个时间戳目录(本例创建的目录为 /tmp/bak / 2016-12-15_19-19-43 ),在该目录下存放备份文件。
在备份目录下,有一个文件xtrabackup_checkpoints记录着备份信息

完整备份并打包:
innobackupex --defaults-file=/etc/my.cnf --user=root --password=fxiaokemysql --socket=/tmp/mysql.sock --stream=tar /tmp/bak>/tmp/bak/alldb.tar   
完整备份压缩并打包:
innobackupex --defaults-file=/etc/my.cnf --user=root --password=fxiaokemysql --socket=/tmp/mysql.sock --stream=tar /tmp/bak/  | gzip > /tmp/bak/alldb.tar.gz  
完整备份到远程主机:  
innobackupex --defaults-file=/etc/my.cnf --user=root --password=fxiaokemysql --scoket=/tmp/mysql.sock --database=wenzhongDB  --no-lock --stream=tar  /tmp/bak/ | ssh [email protected] cat ">" /tmp/bak/20161219.tar
如果报错

则安装 :
yum -y install perl-DBD-MySQL.x86_64

增量备份:
进行第一次增量备份,需要在有一次完整备份的基础上进行
--incremental /root/one 指定增量备份存放的目标目录
--incremental-basedir=/tmp 指定上次完整备份或者上次增量备份文件的位置
innobackupex --defaults-file=/etc/my.cnf --user=root --password=fxiaokemysql --socket=/tmp/mysql.sock --incremental /tmp/bak/one --incremental-basedir=/tmp/bak/ 2016-12-15_19-19-43

进行第二次增量备份,需要指定上一次增量备份的目录
--incremental /root/two 指定这次增量备份目录
--incremental-basedir=/root/one 知道上次增量备份目录
innobackupex --defaults-file=/etc/my.cnf --user=root --password=fxiaokemysql --socket=/tmp/mysql.sock --incremental /tmp/bak/two --incremental-basedir=/tmp/bak/one/ 2016-12-19_16-29-46

全备恢复:
模拟 先将原mysqld暂停,并删除原数据目录上的所有文件
 1、应用备份文件(回滚未提交的事务)
innobackupex --defaults-file=/etc/my.cnf --user=root --password=fxiaokemysql  --use-memory=1G --apply-log   /tmp/bak/2016-12-15_19-19-43
2、恢复备份文件
innobackupex --defaults-file=/etc/my.cnf --user=root --password=fxiaokemysql --copy-back  /tmp/bak/2016-12-15_19-19-43

恢复分为两个步骤:
第1步是apply-log,为了加快速度,一般建议设置--use-memory,这个步骤完成之后,目录/tmp/bak/2016-12-15_19-19-43 下的备份文件已经准备就绪。
第2步是copy-back,即把备份文件拷贝至原数据目录下。恢复完成之后,一定要记得检查数据目录的所有者和权限是否正确。

增量备份恢复:
增量备份恢复的步骤和完整备份恢复的步骤基本一致,只是应用日志的过程稍有不同。增量备份恢复时,是先将所有的增量备份挨个应用到完整备份的数据文件中,然后再将完整备份中的数据恢复到数据库中。

应用第一个增量备份 (回滚未提交的事务)
innobackupex  --defaults-file=/etc/my.cnf --user=root --password=fxiaokemysql  --use-memory=1G --apply-log-only  /tmp/bak/2016-12-15_19-19-43 --incremental-dir=/tmp/bak/one/2016-12-19_16-24-50

应用第二个增量备份 (回滚未提交的事务)
innobackupex  --defaults-file=/etc/my.cnf --user=root --password=fxiaokemysql  --use-memory=1G --apply-log-only  /tmp/bak/2016-12-15_19-19-43  --incremental-dir=/tmp/bak/two/2016-12-19_16-29-46

将完整备份中的数据恢复到数据库中
innobackupex --defaults-file=/etc/my.cnf --user=root --password=fxiaokemysql  --copy-back /tmp/bak/2016-12-15_19-19-43 


##############################
innobackupex slave 相关参数讲解
1.--slave-info
该参数可以在备份 slave server 的时候指定,这样在生成的备份文件中会生成一个 xtrabackup_slave_info 文件,该文件内容包含一条change master 指令,其中包括master server 的二进制文件名和二进制文件位置。这个信息非常有用如果需要将这个数据备份文件作为一个 slave server的初始数据的时候。
innobackupex --user=root -password=root --defaults-file=/home/devops/cnf/mysql3312.cnf --no-timestamp --slave-info /home/devops/backup2014423/fullbackup/slave3312
进入 backupdir(/home/devops/backup2014423/fullbackup/slave3312) 目录:
一定要注意这两个文件的区别,xtrabackup_slave_info 存储的是 master server 的当前日志信息和位置。 xtrabackup_binlog_info 存储的是自己作为 slave server 时自己的当前二进制日志文件和位置。

2.--safe-slave-backup
这个参数会停止 slave SQL 线程,并等到 SHOW STATUS 命令中显示的 Slave_open_temp_tables 变为0的时候才进行备份。 如果等了 --safe-slave-backup-timeout 参数指定的时间(单位:秒)后,仍然无法让 Slave_open_temp_tables 变为0,备份会失败。
目的:为了保证在备份 slave 数据时的数据一致性, 因为在备份 slave 数据的时候如果 SQL 线程不关闭的情况下,可能会备份的时候 SQL 线程写入中继日志的数据到 slave server中, 影响了备份数据的一致性。 在官方手册中,也是建议在备份 slave server 数据的时候使用这个选项。
innobackupex --user=root -password=root --defaults-file=/home/devops/cnf/mysql3312.cnf --no-timestamp --slave-info --safe-slave-backup /home/devops/backup2014423/fullbackup/d6

其他参数理解
1. --parallel –compress-threads 加快备份
$ innobackupex --parallel=4 /path/to/backup

$ innobackupex --stream=xbstream --compress --compress-threads=4 ./ > backup.xbstream
2. --throttle
等同于 mysqlbackup 命令中的 --sleep 选项, 用来控制备份时的IO流量限制。
3.--remote-host
Besides using the --stream for sending the backup to another host via piping (see Streaming and Compressing Backups), innobackupex can do it directly with the --remote-host.(复制过来的)
$ innobackupex --remote-host=REMOTEUSER@REMOTEHOST /path/IN/REMOTE/HOST/to/backup/
还可以通过指定 --sshopt 来指定 ssh 选项, 选项的默认值是 "-Cp -c arcfour"
$ innobackupex --remote-host=REMOTEUSER@REMOTEHOST /path/IN/REMOTE/HOST/to/backup/
--tmpdir=/tmp --scpopt="-Cp -c arcfour"


猜你喜欢

转载自blog.csdn.net/zhaowenzhong/article/details/76021054