什么是Xtrabackup?
答:Xtrabackup是一个对InnoDB做数据备份的工具,支持在线热备份(备份时不影响数据读写),是商业备份工具InnoDB Hotbackup的一个很好的替代品。
下载Percona XtraBackup
https://www.percona.com/downloads/XtraBackup/LATEST/
wget ftp://rpmfind.net/linux/dag/redhat/el6/en/x86_64/dag/RPMS/libev-4.15-1.el6.rf.x86_64.rpm
wget https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.4.8/binary/redhat/6/x86_64/percona-xtrabackup-24-2.4.8-1.el6.x86_64.rpm yum install libev-4.15-1.el6.rf.x86_64.rpm
yum install percona-xtrabackup-24-2.4.8-1.el6.x86_64.rpm
一、备份过程
参数
--databases=name :指定将要备份的数据库列表(不指定为全备)
--incremental :建立一个增量备份
--incremental-lsn=LSN : 指定增量备份将要开始的LSN,它替代选项--incremental-basedir
--slave-info 备份复制从服务端,主从信息记录在ibbackup_slave_info文件中
1:全量备份
命令 读取指定的my.cnf文件 用户 密码 IP 全备地址
innobackupex --defaults-file=/etc/my.cnf --user=root --password=123456 --host=10.4.90.90 /root/111/full/
2:第一次增量备份
create database test2;
命令 读取指定的my.cnf文件 用户 密码 IP 创建测试库test1,在全量备份的基础上再进行增量备份 增量命令 第一次增量地址
innobackupex --defaults-file=/etc/my.cnf --user=root --password=123456 --host=10.4.90.90 --incremental-basedir=/root/111/full/2017-08-31_10-28-43/ --incremental /root/111/1/incremental
3:第二次增量备份
create database test3;
命令 读取指定的my.cnf文件 用户 密码 IP 创建测试库test2,在全量备份的基础上再进行增量备份 增量命令 第二次增量地址
innobackupex --defaults-file=/etc/my.cnf --user=root --password=123456 --host=10.4.90.90 --incremental-basedir=/root/111/1/incremental/2017-08-31_10-29-24 --incremental /root/111/2/incremental
4:第三次增量备份
create database test3;
命令 读取指定的my.cnf文件 用户 密码 IP 创建测试库test3,在全量备份的基础上再进行增量备份 增量命令 第三次增量地址
innobackupex --defaults-file=/etc/my.cnf --user=root --password=123456 --host=10.4.90.90 --incremental-basedir=/root/111/2/incremental/2017-08-31_10-32-02/ --incremental /root/111/3/incremental
二、恢复过程
进行增量还原数据库,先停止数据库,在删除删除数据库的data
1:第一次还原全量恢复
命令 读取指定的my.cnf文件 用户 密码 从备份恢复 选项用于准备全库备份和合并处最有一个备份外的所有增量备份 全备地址
innobackupex --defaults-file=/etc/my.cnf --user=root --password=123456 --apply-log --redo-only /root/111/full/2017-08-31_10-28-43
--apply-log :准备(prepare)一个完全备份(一般情况下,在备份完成后,数据尚且不能用于恢复操作,因为备份的数据中可能会包含尚未提交的事务或已经提交但尚未同步至数据文件中的事务。因此,此时数据文件仍处理不一致状态。“准备”的主要作用正是通过回滚未提交的事务及同步已经提交的事务至数据文件也使得数据文件处于一致性状态)
--redo-only :该选项强制跳过rollback阶段,只进行redo。这是有必要使用的,如果备份后,要使用增量改变的。
从一个完全备份中恢复数据.恢复的时候记得删除data目录,程序会自己建立data目录的,如果有的话程序会忽略恢复过程。导致恢复失败。
2:第一次还原增量恢复
命令 读取指定的my.cnf文件 用户 从备份恢复 全备地址 增量地址
innobackupex --defaults-file=/etc/my.cnf --user=root --apply-log --redo-only /root/111/full/2017-08-31_10-28-43 --incremental-dir=/root/111/1/incremental/2017-08-31_10-29-24/
3:第二次还原增量恢复
命令 读取指定的my.cnf文件 用户 从备份恢复 全备地址 增量地址
innobackupex --defaults-file=/etc/my.cnf --user=root --apply-log --redo-only /root/111/full/2017-08-31_10-28-43 --incremental-dir=/root/111/2/incremental/2017-08-31_10-32-02/
4:第三次还原增量恢复
命令 读取指定的my.cnf文件 用户 从备份恢复 全备地址 增量地址
innobackupex --defaults-file=/etc/my.cnf --user=root --apply-log --redo-only /root/111/full/2017-08-31_10-28-43 --incremental-dir=/root/111/2/incremental/2017-08-31_10-32-02/
三、复制所有的备份到他们原来的位置
命令 读取指定的my.cnf文件 用户 全备地址
innobackupex --defaults-file=/etc/my.cnf --user=root --copy-back /root/111/full/2017-08-31_10-28-43/
--copy-back :从一个完全备份中恢复数据(innobackupex命令的--copy-back选项用于执行恢复操作,其通过复制所有数据相关的文件至mysql服务器DATADIR目录中来执行恢复过程。innobackupex通过backup-my.cnf来获取DATADIR目录的相关信息)
授权新data目录的权限
chown -R mysql.mysql data
全量备份某个数据库,需要先备份下面2个,要不启动不了。
innobackupex --defaults-file=/etc/my.cnf --user=root --password=123456 --host=10.4.90.90 --databases=mysql /root/111/full/
innobackupex --defaults-file=/etc/my.cnf --user=root --password=123456 --host=10.4.90.90 --databases=performance_schema /root/111/full/
然后在备份你想要的数据库
innobackupex --defaults-file=/etc/my.cnf --user=root --password=123456 --host=10.4.90.90 --databases=test1 /root/111/full/
mysql5.5 建立同步用户
grant replication slave on *.* to 'backup'@'%' identified by '123456';