利用Xtrabackup在不停机的情况下备用数据库迁移

什么是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';

原文地址:https://www.cnblogs.com/love19791125/p/7461950.html