返回
数据
分类

而不能备份myisam引擎的表,mysql xtrabackup增量备份

日期: 2020-01-02 07:51 浏览次数 : 154

mysql xtrabackup增量备份

Msyqldump和Xtrabackup全备与增量备份mysql数据库

1、概述:

数据备份的介绍,类型,及具;

msyqldump备份的实现和数据恢复;(4GB)

Xtrabackup备份的实现和数据恢复;(百G)

备份和恢复(数据):

 2、介绍

★备份:存储的数据副本;

原始数据:持续改变;(考虑问题)

★恢复:把副本应到线上系统;

仅能恢复备份操作时刻的数据状态;

★时间点恢复:

bin-logs;(进制志)

★为什么备份?

灾难恢复:硬件故障(冗余)、软件故障(bug)、然灾害、客攻击、误操作、...

测试;

★备份时应该注意事项:

能容忍最多丢失多少数据;

恢复数据需要在多时间内完成;

需要恢复哪些数据;

☉做恢复演练:

测试备份的可性;

增强恢复操作效率;

3、备份类型

★备份的数据的集范围:

☉完全备份和部分备份

完全备份:整个数据集;

部分备份:数据集的部分,如部分表;

★完全备份、增量备份、差异备份:

完全备份

增量备份:仅备份上次完全备份或增量备份以来变量的那部分数据;

差异备份:仅备份上次完全备份以来变量的那部数据;

★物理备份、逻辑备份:

物理备份:复制数据件进备份;

逻辑备份:从数据库导出数据另存在个或多个件中;

★根据数据服务是否在线:

热备:读写操作均可进的状态下所做的备份;

 

温备:可读但不可写状态下进的备份;

冷备:读写操作均不可进的状态下所做的备份;

锁分为读锁和写锁:

(1)读锁,,不能写,可以重复读

(2)写锁,不能读写。

(3)备份需要考虑的因素、备份策略及备份内容

★备份策略:

完全+差异+时间点还原(进制志binlog)

完全+增量+时间点还原 (进制志binlog)

必赢手机登录网址 ,注意:

事务志和进制志应该放在有冗余能的磁盘上,RAID10最好

备份具:

 

 

4、备份具---mysqldump:

mysql服务带的备份具;逻辑备份具;

完全、部分备份;

InnoDB:热备;

MyISAM:温备;

★mysqldumper:比mysqldump快上好几十倍

★作:

逻辑备份、完全备份、部分备份;

##假如我们的备份策略为完全+增量+binlog备份,要使binlog进制志重读,就要确定从备份那刻开始,binlog的起始件位置,这时就要使--master-data=[#]选

项,(确保进制志是开启的)

(1)开启log-bin日志做备份恢复:

##在mysql配置文件里面加上一下两句开启log-bin日志功能

[root@cml5~]# cat /etc/my.cnf
[mysqld]
log_bin=/usr/local/mysql/mydata/mysql-bin

server-id=1    ##5.7版本之后要加上server-id最好是唯一值

进入数据库查看:

mysql>show variables like 'log_bin%';

必赢手机登录网址 1

查看mydata目录已经有一个mysql-bin.000004二进制日志文件:

[root@cml5mydata]# ls

a.sh      bin_log cml5.err        ibdata1      ibtmp1 mysqlbak.log     performance_schema  sys

auto.cnf  chen    cml5.pid        ib_logfile0  my.cnf mysql-bin.000004  qqq                 yy

backup    cml     ib_buffer_pool  ib_logfile1  mysql  mysql-bin.index   rrr

(2)进入数据库创建一个数据库cml:

必赢手机登录网址 2

模拟删除数据库:

必赢手机登录网址 3

##恢复到创建了cml这个数据库之前的结点:

##查看mysql-bin.000004二进制日志文件:

[root@cml5mydata]# mysqlbinlog mysql-bin.000004
# at154
#17111120:16:01 server id 1  end_log_pos 219CRC32 0xa11ff2b3         Anonymous_GTID      last_committed=0      sequence_number=1        rbr_only=no
SET@@SESSION.GTID_NEXT= 'ANONYMOUS'/*!*/;
# at 219
#17111120:16:01 server id 1  end_log_pos 310CRC32 0x0285112a  Query        thread_id=4      exec_time=0      error_code=0
SET TIMESTAMP=1510402561/*!*/;
SET@@session.pseudo_thread_id=4/*!*/;
SET@@session.foreign_key_checks=1, @@session.sql_auto_is_null=0,@@session.unique_checks=1, @@session.autocommit=1/*!*/;
SET@@session.sql_mode=1436549152/*!*/;
SET@@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!Cutf8 *//*!*/;
SET@@session.character_set_client=33,@@session.collation_connection=33,@@session.collation_server=33/*!*/;
SET@@session.lc_time_names=0/*!*/;
SET@@session.collation_database=DEFAULT/*!*/;
create database cml
/*!*/;
# at 310
#17111120:22:02 server id 1  end_log_pos 375CRC32 0x2ec9b66d         Anonymous_GTID      last_committed=1      sequence_number=2        rbr_only=no
SET@@SESSION.GTID_NEXT= 'ANONYMOUS'/*!*/;
# at 375
#17111120:22:02 server id 1  end_log_pos 458CRC32 0x51fb74e9  Query        thread_id=5      exec_time=0      error_code=0
SETTIMESTAMP=1510402922/*!*/;
drop database cml
/*!*/;
SET@@SESSION.GTID_NEXT= 'AUTOMATIC' /* added by mysqlbinlog */ /*!*/;
DELIMITER;
# Endof log file
/*!50003SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
/*!50530SET @@SESSION.PSEUDO_SLAVE_MODE=0*/;

##恢复到从219到310的节点:

[root@cml5 mydata]# mysqlbinlog --start-position="219"--stop-position="310" mysql-bin.000004 | mysql -uroot -predhat
mysql:[Warning] Using a password on the command line interface can be insecure.

##进入数据库查看cml数据库上是否已经恢复:

必赢手机登录网址 4

##起始点还原:

##删除cml数据库使用起始点还原:

必赢手机登录网址 5

[root@cml5 mydata]# mysqlbinlog --start-datetime="2017-11-11 20:40:37"--stop-datetime="2017-11-11 20:40:55" mysql-bin.000004 | mysql -uroot-predhat
mysql:[Warning] Using a password on the command line interface can be insecure.

##查看数据库是否已经还原数据库cml:

必赢手机登录网址 6

##关闭当前的二进制日志文件并创建一个新文件,新的二进制日志文件的名字在当前的二进制文件的编号上加1。

mysql>flush logs;
QueryOK, 0 rows affected (0.00 sec)

 

5、Mysqldump备份:

(1)备份单个库:

[root@cml5~]#  mysqldump -uroot -predhat --single-transaction -R --triggers -E --master-data--flush-logs --databases data_test >`date +%F"-%H:%M"`.sql

单备份某个库:

[root@cml5~]#  mysqldump -uroot -predhat --single-transaction -R --triggers -E --master-data--flush-logs -databases data_test >`date +%F"-%H:%M"`.sql

 

(2)备份所有的库:

[root@cml5~]#  mysqldump -uroot -predhat --single-transaction-R --triggers -E --masterdata --flush-logs --all-databases >`date+%F"-%H:%M"`.sql

(3)恢复所有的数据:

[[root@cml5~]# mysql -uroot -predhat < 2017-11-07-17:01.sql

 

(4)恢复单个库:

[[root@cml5~]# mysql -uroot -predhat data_test< 2017-11-07-17:01.sql

(5)备份数据做全备份,然后倒入从:

[root@cml5 mydata]# mysqldump -uroot --single-transaction -R --triggers -E --master-data --flush-logs --all-databases > cml.sql

[root@cml5 mydata]# mysql -uroot -predhat < cml.sql 
mysql:[Warning] Using a password on the command line interface can be insecure.

(6)那么基于线上没可能收到备份所以写一个shell脚本来自动备份:

[root@cml5~]# cat mysqlback.sh 
#!/bin/bash
##date=2017-11-7
##name=cml
##email=********@qq.com
##title=mysqldumpbackup
 
EMAIL="*******@qq.com"
mysqlbak_dir=/usr/local/mysql/mydata
mysqlbak_log=/usr/local/mysql/mydata/mysqlbak.log
DATE=`date+%Y%m%d`
TIME=`date+"%y-%m %H:%M:%S"`
DUMPBAK=$DATE.sql
GZDUMPBAK=$DATE.sql.gz
WEEK=`date+%w`
cd$mysqlbak_dir
USER=root
PASSWD=redhat
bin_log=`ls-tr mysql-bin.0*| head -1`
bin_log_dir=/usr/local/mysql/mydata/bin_log
 
if [ !-f $bin_log_dir ];then
        mkdir $bin_log_dir
fi
 
echo"--------------------------$TIME-----------------------------">> $mysqlbak_log
 
 
if [$WEEK == 0 ];then     ##日期是星期天的时候执行
##week=0~6
        cd $mysqlbak_dir
        /usr/local/mysql/bin/mysqldump -u$USER-p$PASSWD --single-transaction -R --triggers -E --master-data --flush-logs--all-databases > $DUMPBAK 2>&1
        echo "mysqldump backupsuccess!!" >> $mysqlbak_log
        tar -czvf $GZDUMPBAK $DUMPBAK >>$mysqlbak_log 2>&1
        echo "$GZDUMPBAK backupsuccess!!" >> $mysqlbak_log
#      if [ -f $GZDUMPBAK ];then
#              echo "$GZDUMPBAK BACKUPSUCCESS!!" |mail -s "mysqldump backup" $EMAIL
#      fi
        rm -rf $DUMPBAK
        rm -rf $bin_log
##上面步骤是全备过程
else
        cd $mysqlbak_dir
        /usr/local/mysql/bin/mysqladmin -u$USER-p$PASSWD flush-logs
        cp -p $bin_log $bin_log_dir
        echo "copy $bin_log to$bin_log_dir" >> $mysqlbak_log
        rm -rf $bin_log
        echo "backup bin_logsuccess!!" >> $mysqlbak_log
#      echo "backup bin_log $bin_logSUCCESS!" | mail -s "backup bin_log" $EMAIL
##下面是增备过程
fi

 

[root@cml5~]# cd /usr/local/src/script/
[root@cml5script]# ls
mysqlback.sh
[root@cml5script]# chmod a+x mysqlback.sh
 
crontab-e
1 0 * ** /usr/local/src/script/mysqlback.sh

 

6、备份具---Xtrabackup:

(1)介绍及安装

★简介:

·Xtrabackup是由percona提供的mysql数据库备份具,据官介

绍,这也是世界上惟款开源的能够对innodb和xtradb数据库进

热备的具。

★特点:

·物理备份,备份过程快速、可靠;

·备份过程不会打断正在执的事务;

·能够基于压缩等功能节约磁盘空间和流量;

·动实现备份检验;

·还原速度快;

★持的存储引擎功能

·MyISAM:温备,不持增量备份;

·InnoDB:热备,增量;

★安装:

·其最新版的软件可从

percona-xtrabackup/获得。

·本基于CentOS 7.2的系统,因此,直接下载相应版本的rpm包安装即可。

(2)在所以数据库主机上安装xtrabackup工具

[root@cml2src]# wget  https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.4.8/binary/redhat/7/x86_64/percona-xtrabackup-24-2.4.8-1.el7.x86_64.rpm
[root@cml2src]# yum localinstall percona-xtrabackup-24-2.4.8-1.el7.x86_64.rpm

(3)使用xtrabackup工具做全备:

##先查看数据库的databases:

必赢手机登录网址 7

 

##创建一个/data备份目录:

[root@cml5 ~]# mkdir /data/

##把数据库全备到/data目录下:

[root@cml5 ~]# innobackupex --defaults-file=/etc/my.cnf -uroot -predhat --host=127.0.0.1 /data/

必赢手机登录网址 8

##看到completed ok表示已经全备完

##查看备份生成的文件:

[root@cml5 2017-11-11_21-42-13]# pwd
/data/2017-11-11_21-42-13
[root@cml5 2017-11-11_21-42-13]# cat xtrabackup_binlog_info 
mysql-bin.000008     524
[root@cml5 2017-11-11_21-42-13]# ls
backup-my.cnf  cml   ibdata1  performance_schema  rrr xtrabackup_binlog_info xtrabackup_info     yy
chen  ib_buffer_pool  mysql  qqq  sys  xtrabackup_checkpoints  xtrabackup_logfile

(4)在另一台主机cml6上做一次全备的还原(模拟数据库的主机down掉加入新一台主机)

##先在cml5主机把主备文件copy到对端目录下:

[root@cml5 2017-11-11_21-42-13]# scp -r * cml6:/data/

##在对端cml6主机上创建data目录给权限:

[root@cml6 ~]# mkdir /data
[root@cml6 ~]# chown -R mysql:mysql /data/

 

##准备一个数据,保证数据没有提交的事务,提交或者回滚:

[root@cml6 data]# innobackupex --defaults-file=/etc/my.cnf -uroot -predhat--host=127.0.0.1 --apply-log /data/

必赢手机登录网址 9

##出现comleted ok表示已经成功

 

##直接恢复,先暂停mysql服务器:

[root@cml6 data]# /etc/init.d/mysqld stop
Shuttingdown MySQL. SUCCESS!
[root@cml6data]# innobackupex --defaults-file=/etc/my.cnf -uroot -predhat--host=127.0.0.1 --copy-back /data/
17111005:39:37 innobackupex: Starting the copy-back operation
 
IMPORTANT:Please check that the copy-back run completes successfully.
           At the end of a successful copy-backrun innobackupex
           prints "completed OK!".
 
innobackupexversion 2.4.8 based on MySQL server 5.7.13 Linux (x86_64) (revision id: 97330f7)
Originaldata directory /usr/local/mysql/mydata is not empty!

 

##修改my.cnf的matadir和给权限:

[root@cml6 data]# cat /etc/my.cnf
[mysqld]
datadir=/data
socket=/usr/local/mysql/mysql.sock
log_bin=/usr/local/mysql/mydata/mysql-bin
server-id=2
#skip-grant-tables
[root@cml6 data]# chown -R mysql:mysql /data/

##直接启动mysql即可:

[root@cml6 data]# /etc/init.d/mysqld start
StartingMySQL.Logging to '/data/cml6.err'.
 SUCCESS!

##查看数据库是否与cml5一致:

必赢手机登录网址 10

 

执行的时候加上压缩参数。

[root@cml5 data]# innobackupex --defaults-file=/etc/my.cnf --user=root --password=redhat --stream=tar /data/backup | gzip > /data/backup1/`date +%F_%H-%M-%S`.tar.gz

 

(5)使用xtrabackup工具做增量备份:

##先在mysql数据库上增加一个数据库cml2:

必赢手机登录网址 11

##然后创建目录备份的件录:

[root@cml5 ~]# mkdir /data/zhengliang1
[root@cml5 ~]# mkdir /data/zhengliang2

 

##使用xtrabackup做增量备份:

[root@cml5 ~]# innobackupex --default-file=/etc/my.cnf -uroot -predhat --host=127.0.0.1--incremental /data/zhengliang1/--incremental-basedir=/data/2017-11-11_21-42-13/

必赢手机登录网址 12

##出现completed ok!表示已经成功:

 

##查看备份的数据:

[root@cml5 ~]# cd /data/zhengliang1/2017-11-12_00-06-04/
[root@cml5 2017-11-12_00-06-04]# ls
backup-my.cnf  cml2            ibdata1.meta        qqq xtrabackup_binlog_info xtrabackup_logfile
chen           ib_buffer_pool  mysql               rrr  xtrabackup_checkpoints  yy
cml            ibdata1.delta   performance_schema  sys xtrabackup_info
[root@cml5 2017-11-12_00-06-04]# cat xtrabackup_binlog_info 
mysql-bin.000008     683

 

##scpzhengliang1的目录到对端cml6的任意一个目录下:

[root@cml5 2017-11-12_00-06-04]# scp -r /data/zhengliang1/ cml6:/usr/local/src/

 

“准备”(prepare)增量备份与整理完全备份有着一些不同,尤其要注意的是:

需要在每个备份(包括完全和各个增量备份)上,将已经提交的事务进行“重放”。“重放”之后,所有的备份数据将合并到完全备份上。(重放这步骤一定不能忘记)

基于所有的备份将未提交的事务进行“回滚”。

 

##这儿步骤意识是把本地的数据库“重放”

[root@cml6 src]# innobackupex --default-file=/etc/my.cnf -uroot -predhat --apply-log --redo-only/data/

 

##这步骤是合并全备和增备的日志:

[root@cml6 src]# innobackupex --default-file=/etc/my.cnf -uroot -predhat --apply-log--redo-only /data/--incremental-dir=/usr/local/src/zhengliang1/2017-11-12_00-06-04/

##然后在全目录下恢复“回滚”:

[root@cml6 src]# innobackupex --default-file=/etc/my.cnf -uroot -predhat --copy-back/data/
17111006:10:44 innobackupex: Starting the copy-back operation
 
IMPORTANT:Please check that the copy-back run completes successfully.
           At the end of a successful copy-backrun innobackupex
           prints "completed OK!".
 
innobackupexversion 2.4.8 based on MySQL server 5.7.13 Linux (x86_64) (revision id:97330f7)
Originaldata directory /data is not empty!

##查看本地数据库是否与cml5的对应:(注意整个备份恢复都不用关闭mysql或重启mysql)

必赢手机登录网址 13

##已经多了cml2的数据库了

 

##在cml5在做一次增量备份的时候,假如加入一台新的主机的话备份就先要做(全备恢复à第一次增量备份恢复à第二次增量备份恢复à……)

##在操作一次以上步骤:

##加入新的数据

必赢手机登录网址 14

##备份到zhengliang2目录:

[root@cml5 data]# innobackupex --default-file=/etc/my.cnf -uroot -predhat --host=127.0.0.1--incremental /data/zhengliang2/--incremental-basedir=/data/zhengliang1/2017-11-12_00-06-04/

 

##查看备份数据:

[root@cml5 data]# cd zhengliang2/2017-11-12_00-28-50/
[root@cml5 2017-11-12_00-28-50]# ls
backup-my.cnf  cml3            mysql               sys                     xtrabackup_logfile
chen           ib_buffer_pool  performance_schema  xtrabackup_binlog_info  yy
cml            ibdata1.delta   qqq                 xtrabackup_checkpoints
cml2           ibdata1.meta    rrr                 xtrabackup_info
[root@cml5 2017-11-12_00-28-50]# cat xtrabackup_binlog_info 
mysql-bin.000008     842

 

##scp到对端主机:

[root@cml5 2017-11-12_00-28-50]# scp -r /data/zhengliang2/ cml6:/usr/local/src/

 

##在对端主机上恢复备份:

##回放

[root@cml6 src]# innobackupex --defaults-file=/etc/my.cnf -uroot -predhat --apply-log--redo-only /data/

##合并日志:

[root@cml6 src]# innobackupex --defaults-file=/etc/my.cnf -uroot -predhat --apply-log--redo-only /data/ --incremental-dir=/usr/local/src/zhengliang2/2017-11-12_00-28-50/

##回滚:

[root@cml6 src]# innobackupex --defaults-file=/etc/my.cnf -uroot -predhat --copy-back/data/
17111006:29:50 innobackupex: Starting the copy-back operation
 
IMPORTANT:Please check that the copy-back run completes successfully.
           At the end of a successful copy-back runinnobackupex
           prints "completed OK!".
 
innobackupexversion 2.4.8 based on MySQL server 5.7.13 Linux (x86_64) (revision id:97330f7)
Originaldata directory /data is not empty!

##查看数据库:

必赢手机登录网址 15

xtrabackup是Percona公司CTO Vadim参与开发的一款基于InnoDB的在线热备工具,具有开源,免费,支持在线热备,备份恢复速度快,占用磁盘空间小等特点,并且支持不同情况下的多种备份形式。xtrabackup的官方下载地址为。

 

xtrabackup包含两个主要的工具,即xtrabackup和innobackupex,二者区别如下:

 mysql 增量备份策略 周一全备,其他增量备份,根据业务需要,设定保留日期,如保留一月。

(1)xtrabackup只能备份innodb和xtradb两种引擎的表,而不能备份myisam引擎的表;

 

(2)innobackupex是一个封装了xtrabackup的Perl脚本,支持同时备份innodb和myisam,但在对myisam备份时需要加一个全局的读锁。还有就是myisam不支持增量备份

增量备份步骤;

1.备份过程

 

innobackupex备份过程如下图:

         1 创建全备 

必赢手机登录网址 16

          2 根据全备目录,创建增量备份

                                                                                (图1 innobackupex备份过程,本文中所有图都是google所得)

 

在图1中,备份开始时首先会开启一个后台检测进程,实时检测mysql redo的变化,一旦发现redo中有新的日志写入,立刻将日志记入后台日志文件xtrabackup_log中。之后复制innodb的数据文件和系统表空间文件ibdata1,待复制结束后,执行flush tables with read lock操作,复制.frm,MYI,MYD,等文件(执行flush tableswith read lock的目的是为了防止数据表发生DDL操作,并且在这一时刻获得binlog的位置)最后会发出unlock tables,把表设置为可读可写状态,最终停止xtrabackup_log。

          3 第二次增量备份根据第一次增量备份目录,依次类推

2.全备恢复

 

这一阶段会启动xtrabackup内嵌的innodb实例,回放xtrabackup日志xtrabackup_log,将提交的事务信息变更应用到innodb数据/表空间,同时回滚未提交的事务(这一过程类似innodb的实例恢复)。恢复过程如下图:

下面是今天写的增量备份脚本,先在自己的测试机上跑几天。

必赢手机登录网址 17

 

                                                       (图2 innobackupex 恢复过程)

#!/bin/sh
begintime=`date +"%Y-%m-%d %H:%M:%S"`
format_time=`date +"%Y-%m-%d_%H:%M:%S"`
week=`date +%w`
port=3306
#ip=
backdir=/backup
file_cnf=/etc/my.cnf
user_name=root
passwd=
out_log=$datadir/xtraback_log_$format_time
time_cost=$backdir/xtraback_time.txt
if [ ! -d "$backdir" ]; then 
     mkdir -p $backdir 
fi 
if [ -d "$backdir/rec5" ];then 
           rm -rf $backdir-bak
           mv $backdir $backdir-bak
           mkdir $backdir 
fi

#full backup 
if [ ! -d "$backdir/full" ];then 
    echo "#####start full backup at $begintime to directory full" >>$time_cost
    innobackupex --defaults-file=$file_cnf --no-lock --no-timestamp --user=$user_name --port=3306 $backdir/full 1>$out_log-full 2>&1
    tar -zcvf $backdir/full.tar.gz $backdir/full
    break;
    elif [ ! -d "$backdir/rec0" ];then 
    echo "######start 0 incremental backup at $begintime to directory rec0" >>$time_cost
    innobackupex --default-file=$file_cnf --no-lock --no-timestamp --user=$user_name --port=$port --incremental --incremental-basedir=$backdir/full $backdir/rec0 1> $out_log-rec0 2>&1
    break;
    elif [ ! -d "$backdir/rec1" ];then 
     echo "#######start 1 incremental backup at $begintime to directory rec1" >>$time_cost
     innobackupex --defaults-file=$file_cnf --no-lock --no-timestamp --user=$user_name --port=port --incremental --incremental-basedir=$backdir/full $backdir/rec1 1>$out_log-rec1 2>&1
     break;
     elif [ ! -d "$backdir/rec2" ]; then 
     echo "######start 2 incremental backup at $begintime to directory rec2" >>$time_cost
     innobackupex --defaults-file=$file_cnf --no-lock --no-timestamp --user=$user_name --port=port --incremental --incremental-basedir=$backdir/rec1 $backdir/rec2 1> $out_log-rec2 2>&1
     break;
     elif [ ! -d "$backdir/rec3" ]; then 
     echo "#######start 3 incremental backup at $begintime to directory rec3" >$time_cost
     innobackupex --defaults-file=$file_cnf --no-lock --no-timestamp --user=root --port=port --incremental --incremental-basedir=$/backdir/rec2 $backdir/rec3 1> $out_log-rec3 2>&1
     break;
     elif [! -d "$backdir/rec4" ];then 
     echo "########start 4 incremental backup at $begintime to directory rec4" >>$time_cost
     innobackupex --defaults-file=$file_cnf --no-lock --no-timestamp --user=root --port=port --incremental --incremental-basedir=$backdir/rec4 1> $out_log-rec4 2>&1
     break;
     elif [ ! -d "$backdir/rec5" ];then 
      echo "#######start 5 incremental backup at $begintime to directory rec5" >>$time_cost 
      innobackupex --defaults-file=$file_cnf --no-lock --no-timestamp --user=$user_name --port=port --incremental --incremental-basedir=$backdir/rec4 $backdir/rec5 1> $out_log-rec5 2>&1
      break;
    fi

3.增量备份

 

innobackupex增量备份过程中的"增量"处理,其实主要是相对innodb而言,对myisam和其他存储引擎而言,它仍然是全拷贝(全备份)

还原步骤 

"增量"备份的过程主要是通过拷贝innodb中有变更的"页"(这些变更的数据页指的是"页"的LSN大于xtrabackup_checkpoints中给定的LSN)。增量备份是基于全备的,第一次增备的数据必须要基于上一次的全备,之后的每次增备都是基于上一次的增备,最终达到一致性的增备。增量备份的过程如下,和全备的过程很类似,区别仅在第2步。

        1 关闭实例

必赢手机登录网址 18

 

                                                                            ( 图 3 innobackupex增量备份过程)

        2 应用日志,如有增量,先恢复全备,然后再逐个恢复增量日志

4.增量备份恢复

 

和全备恢复类似,也需要两步,一是数据文件的恢复,如图4,这里的数据来源由3部分组成:全备份,增量备份和xtrabackup log。二是对未提交事务的回滚,如图5所示:

        3 copy数据到目录 

必赢手机登录网址 19

        4 修改数据文件权限,chown、chmod 

                                                   ( 图4 innobackupex 增量备份恢复过程1)

        5 启动

必赢手机登录网址 20

 

       ( 图5 innobackupex增量备份恢复过程2)

xtrabackup增量备份 mysql 增量备份策略 周一全备,其他增量备份,根据业务需要,设定保留日期,如保留一月。 增量备份步骤; 1 创建全...

 

5.innobackupex使用示例

(1)安装使用xtrabackup,安装比较简单,我们使用二进制编译好的就行了,这种工具无需源码编译,因为没有什么功能需要俺们定制。

yum install 

yum install http://www.percona.com/downloads/percona-release/redhat/0.1-4/percona-release-0.1-4.noarch.rpm

yum install  perl-DBD-MySQL numactl

  wget ftp://rpmfind.net/linux/dag/redhat/el6/en/x86_64/dag/RPMS/libev-4.15-1.el6.rf.x86_64.rpm
   rpm -ivh libev-4.15-1.el6.rf.x86_64.rpm

yum install percona-xtrabackup-24

[root@MySQL-01 ~]# wget http://www.percona.com/redir/downloads/XtraBackup/LATEST/binary/Linux/x86_64/percona-xtrabackup-2.1.8-733-Linux-x86_64.tar.gz 

[root@MySQL-01 ~]# tar xf percona-xtrabackup-2.1.8-733-Linux-x86_64.tar.gz -C /usr/local/
[root@MySQL-01 ~]# mv /usr/local/percona-xtrabackup-2.1.8-Linux-x86_64/ /usr/local/xtrabackup
[root@MySQL-01 ~]# echo "export PATH=$PATH:/usr/local/xtrabackup/bin" >> /etc/profile
[root@MySQL-01 ~]# source /etc/profile
[root@MySQL-01 ~]# 

(2)全量备份

创建备份用户:

必赢手机登录网址 21

mysql> create user 'backup'@'%' identified by 'yayun';
Query OK, 0 rows affected (0.01 sec)

mysql> grant reload,lock tables,replication client,create tablespace,super on *.* to 'backup'@'%';
Query OK, 0 rows affected (0.00 sec)

mysql> 

必赢手机登录网址 22

进行全备份

备份数据存放在/data/backup/下面,innobackupex会自动创建一个文件夹,是当前系统的时间戳

必赢手机登录网址 23

mysql> select * from yayun.t1;
+------+-------+
| id   | name  |
+------+-------+
|    1 | yayun |
|    2 | atlas |
+------+-------+
2 rows in set (0.00 sec)

mysql> 

必赢手机登录网址 24

测试数据就是yayun库中的t1表

必赢手机登录网址 25

[root@MySQL-01 ~]# innobackupex --user=backup --password=yayun --socket=/tmp/mysqld.sock --defaults-file=/etc/my.cnf /data/backup/
xtrabackup: Creating suspend file '/data/backup/2014-04-07_23-05-04/xtrabackup_log_copied' with pid '57608'
xtrabackup: Transaction log of lsn (5324782783) to (5324782783) was copied.
140407 23:06:14  innobackupex: All tables unlocked
innobackupex: Backup created in directory '/data/backup/2014-04-07_23-05-04'
innobackupex: MySQL binlog position: filename 'mysql-bin.000014', position 2983
140407 23:06:14  innobackupex: Connection to database server closed
140407 23:06:14  innobackupex: completed OK!
[root@MySQL-01 ~]# 

必赢手机登录网址 26

上面的过程中处理过,主要看最后是否提示innobackupex completed ok,可以看见备份成功。我们看看/data/backup目录下产生了什么

必赢手机登录网址 27

[root@MySQL-01 backup]# pwd
/data/backup
[root@MySQL-01 backup]# ll
total 4
drwxr-xr-x 12 root root 4096 Apr  7 23:06 2014-04-07_23-05-04
[root@MySQL-01 backup]# cd 2014-04-07_23-05-04/
[root@MySQL-01 2014-04-07_23-05-04]# ll
total 845888
-rw-r--r-- 1 root root       261 Apr  7 23:05 backup-my.cnf
drwx------ 2 root root      4096 Apr  7 23:06 employees
drwx------ 2 root root      4096 Apr  7 23:06 host
-rw-r----- 1 root root 866123776 Apr  7 23:05 ibdata1
drwx------ 2 root root      4096 Apr  7 23:06 menagerie
drwxr-xr-x 2 root root      4096 Apr  7 23:06 mysql
drwxr-xr-x 2 root root      4096 Apr  7 23:06 performance_schema
drwx------ 2 root root      4096 Apr  7 23:06 sakila
drwx------ 2 root root      4096 Apr  7 23:06 test
drwx------ 2 root root      4096 Apr  7 23:06 world_innodb
drwxr-xr-x 2 root root      4096 Apr  7 23:06 world_myisam
-rw-r--r-- 1 root root        13 Apr  7 23:06 xtrabackup_binary
-rw-r--r-- 1 root root        24 Apr  7 23:06 xtrabackup_binlog_info
-rw-r----- 1 root root        95 Apr  7 23:06 xtrabackup_checkpoints
-rw-r----- 1 root root      2560 Apr  7 23:06 xtrabackup_logfile
drwx------ 2 root root      4096 Apr  7 23:06 yayun
[root@MySQL-01 2014-04-07_23-05-04]# 

必赢手机登录网址 28

可以看见有对应数据库的名字,比如yayun,还有一个以时间戳命名的目录。我们看看对应文件里面的内容,这几个比较重要

必赢手机登录网址 29

[root@MySQL-01 2014-04-07_23-05-04]# cat xtrabackup_checkpoints 
backup_type = full-backuped
from_lsn = 0
to_lsn = 5324782783
last_lsn = 5324782783
compact = 0
[root@MySQL-01 2014-04-07_23-05-04]# cat xtrabackup_binlog_info 
mysql-bin.000014        2983
[root@MySQL-01 2014-04-07_23-05-04]# 

必赢手机登录网址 30

可以看见相关文件记录了LSN,日志偏移量,还可以看见这次是全备份,相信聪明的童鞋们一眼就看懂了。^_^

删除数据库,然后恢复全备(线上不要这样搞

mysql> drop database yayun;
Query OK, 1 row affected (0.04 sec)

mysql> 

恢复全备

恢复备份到mysql的数据文件目录,这一过程要先关闭mysql数据库,重命名或者删除原数据文件目录都可以,再创建一个新的数据文件目录,将备份数据复制到新的数据文件目录下,赋权,修改权限,启动数据库

[root@MySQL-01 ~]# /etc/init.d/mysqld stop
Shutting down MySQL.....                                   [  OK  ]
[root@MySQL-01 ~]# mv /data/mysql /data/mysql_bak
[root@MySQL-01 ~]# mkdir /data/mysql
[root@MySQL-01 ~]# 

[root@MySQL-01 ~]# innobackupex --apply-log /data/backup/2014-04-07_23-05-04/ 
xtrabackup: starting shutdown with innodb_fast_shutdown = 1
140407 23:22:36  InnoDB: Starting shutdown...
140407 23:22:40  InnoDB: Shutdown completed; log sequence number 5324784140
140407 23:22:40  innobackupex: completed OK!

以上对应的目录就是innobackupex全备份自己创建的目录。

必赢手机登录网址 31

[root@MySQL-01 ~]# innobackupex --defaults-file=/etc/my.cnf --copy-back --rsync /data/backup/2014-04-07_23-05-04/
innobackupex: Starting to copy InnoDB log files
innobackupex: in '/data/backup/2014-04-07_23-05-04'
innobackupex: back to original InnoDB log directory '/data/mysql'
innobackupex: Copying '/data/backup/2014-04-07_23-05-04/ib_logfile1' to '/data/mysql/ib_logfile1'
innobackupex: Copying '/data/backup/2014-04-07_23-05-04/ib_logfile0' to '/data/mysql/ib_logfile0'
innobackupex: Finished copying back files.
140407 23:27:38  innobackupex: completed OK!
[root@MySQL-01 ~]# 

必赢手机登录网址 32

可以看见已经成功恢复,修改数据目录权限,启动mysql,效验数据是否正常,查看yayun库下面的t1表中的数据。

[root@MySQL-01 ~]# chown -R mysql.mysql /data/mysql
[root@MySQL-01 ~]# /etc/init.d/mysqld start
Starting MySQL.................                            [  OK  ]
[root@MySQL-01 ~]# 

必赢手机登录网址 33

mysql> use yayun
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> select * from t1;
+------+-------+
| id   | name  |
+------+-------+
|    1 | yayun |
|    2 | atlas |
+------+-------+
2 rows in set (0.00 sec)

mysql> 

必赢手机登录网址 34

发现数据已经成功恢复。

(3)增量备份

在进行增量备份时,首先要进行一次全量备份,第一次增量备份是基于全备的,之后的增量备份是基于上一次的增量备份,以此类推。

全备份放在/data/backup/full,增量备份放在/data/backup/incremental

必赢手机登录网址 35

[root@MySQL-01 ~]# tree /data/backup/
/data/backup/
├── full
└── incremental

2 directories, 0 files
[root@MySQL-01 ~]# 

必赢手机登录网址 36

废话少说,咱们先来一次全备份

[root@MySQL-01 ~]# innobackupex --user=backup --password=yayun --socket=/tmp/mysqld.sock --defaults-file=/etc/my.cnf /data/backup/full/
innobackupex: Backup created in directory '/data/backup/full/2014-04-07_23-37-20'
innobackupex: MySQL binlog position: filename 'mysql-bin.000001', position 107
140407 23:38:29  innobackupex: Connection to database server closed
140407 23:38:29  innobackupex: completed OK!
[root@MySQL-01 ~]# 

为了测试效果,我们在t1表中插入数据

必赢手机登录网址 37

mysql> select * from t1;
+------+-------+
| id   | name  |
+------+-------+
|    1 | yayun |
|    2 | atlas |
+------+-------+
2 rows in set (0.00 sec)

mysql> insert into t1 select 1,'love sql';
Query OK, 1 row affected (0.01 sec)
Records: 1  Duplicates: 0  Warnings: 0

mysql> select * from t1;                  
+------+----------+
| id   | name     |
+------+----------+
|    1 | yayun    |
|    2 | atlas    |
|    1 | love sql |
+------+----------+
3 rows in set (0.00 sec)

mysql> 

必赢手机登录网址 38

现在来一次增量备份1

必赢手机登录网址 39

[root@MySQL-01 ~]# innobackupex --user=backup --password=yayun --socket=/tmp/mysqld.sock --defaults-file=/etc/my.cnf --incremental /data/backup/incremental/ --incremental-basedir=/data/backup/full/2014-04-07_23-37-20/ --parallel=2
innobackupex: Backup created in directory '/data/backup/incremental/2014-04-07_23-42-46'
innobackupex: MySQL binlog position: filename 'mysql-bin.000001', position 301
140407 23:43:25  innobackupex: Connection to database server closed
140407 23:43:25  innobackupex: completed OK!
[root@MySQL-01 ~]# 

必赢手机登录网址 40

我们看看增量备份的大小以及文件内容

[root@MySQL-01 ~]# du -sh /data/backup/full/2014-04-07_23-37-20/
1.2G    /data/backup/full/2014-04-07_23-37-20/
[root@MySQL-01 ~]# du -sh /data/backup/incremental/2014-04-07_23-42-46/
3.6M    /data/backup/incremental/2014-04-07_23-42-46/
[root@MySQL-01 ~]# 

看见增量备份的数据很小吧,就是备份改变的数据而已。

必赢手机登录网址 41

[root@MySQL-01 2014-04-07_23-42-46]# pwd
/data/backup/incremental/2014-04-07_23-42-46
[root@MySQL-01 2014-04-07_23-42-46]# cat xtrabackup_checkpoints 
backup_type = incremental
from_lsn = 5324784718
to_lsn = 5324785066
last_lsn = 5324785066
compact = 0
[root@MySQL-01 2014-04-07_23-42-46]# 

必赢手机登录网址 42

上面已经明显说明是增量备份了,该工具很人性化吧,呵呵

我们再次向t1表插入数据,然后创建增量备份2

必赢手机登录网址 43

mysql> select * from t1;
+------+----------+
| id   | name     |
+------+----------+
|    1 | yayun    |
|    2 | atlas    |
|    1 | love sql |
+------+----------+
3 rows in set (0.00 sec)

mysql> insert into t1 select 1,'mysql dba';
Query OK, 1 row affected (0.00 sec)
Records: 1  Duplicates: 0  Warnings: 0

mysql> select * from t1;                   
+------+-----------+
| id   | name      |
+------+-----------+
|    1 | yayun     |
|    2 | atlas     |
|    1 | love sql  |
|    1 | mysql dba |
+------+-----------+
4 rows in set (0.00 sec)

mysql> 

必赢手机登录网址 44

创建增量备份2(这次是基于上次的增量备份哦)

必赢手机登录网址 45

[root@MySQL-01 ~]# innobackupex --user=backup --password=yayun --socket=/tmp/mysqld.sock --defaults-file=/etc/my.cnf --incremental /data/backup/incremental/ --incremental-basedir=/data/backup/incremental/2014-04-07_23-42-46/ --parallel=2
innobackupex: Backup created in directory '/data/backup/incremental/2014-04-07_23-51-15'
innobackupex: MySQL binlog position: filename 'mysql-bin.000001', position 496
140407 23:51:55  innobackupex: Connection to database server closed
140407 23:51:55  innobackupex: completed OK!
[root@MySQL-01 ~]# 

必赢手机登录网址 46

必赢手机登录网址 47

[root@MySQL-01 ~]# ls -ltr /data/backup/full/
total 4
drwxr-xr-x 12 root root 4096 Apr  7 23:38 2014-04-07_23-37-20
[root@MySQL-01 ~]# ls -ltr /data/backup/incremental/
total 8
drwxr-xr-x 12 root root 4096 Apr  7 23:43 2014-04-07_23-42-46
drwxr-xr-x 12 root root 4096 Apr  7 23:51 2014-04-07_23-51-15
[root@MySQL-01 ~]# 

必赢手机登录网址 48

(4)增量备份恢复

增量备份的恢复大体为3个步骤

*恢复完全备份

*恢复增量备份到完全备份(开始恢复的增量备份要添加--redo-only参数,到最后一次增量备份去掉--redo-only参数)

*对整体的完全备份进行恢复,回滚那些未提交的数据

恢复完全备份(注意这里一定要加--redo-only参数,该参数的意思是只应用xtrabackup日志中已提交的事务数据,不回滚还未提交的数据)

[root@MySQL-01 ~]# innobackupex --apply-log --redo-only /data/backup/full/2014-04-07_23-37-20/
xtrabackup: starting shutdown with innodb_fast_shutdown = 1
140407 23:59:43  InnoDB: Starting shutdown...
140407 23:59:43  InnoDB: Shutdown completed; log sequence number 5324784718
140407 23:59:43  innobackupex: completed OK!

将增量备份1应用到完全备份

必赢手机登录网址 49

[root@MySQL-01 ~]# innobackupex --apply-log --redo-only /data/backup/full/2014-04-07_23-37-20/ --incremental-dir=/data/backup/incremental/2014-04-07_23-42-46/
innobackupex: Copying '/data/backup/incremental/2014-04-07_23-42-46/mysql/func.frm' to '/data/backup/full/2014-04-07_23-37-20/mysql/func.frm'
innobackupex: Copying '/data/backup/incremental/2014-04-07_23-42-46/mysql/help_relation.frm' to '/data/backup/full/2014-04-07_23-37-20/mysql/help_relation.frm'
innobackupex: Copying '/data/backup/incremental/2014-04-07_23-42-46/mysql/help_category.MYD' to '/data/backup/full/2014-04-07_23-37-20/mysql/help_category.MYD'
innobackupex: Copying '/data/backup/incremental/2014-04-07_23-42-46/mysql/ndb_binlog_index.frm' to '/data/backup/full/2014-04-07_23-37-20/mysql/ndb_binlog_index.frm'
140408 00:02:07  innobackupex: completed OK!
[root@MySQL-01 ~]# 

必赢手机登录网址 50

将增量备份2应用到完全备份(注意恢复最后一个增量备份时需要去掉--redo-only参数,回滚xtrabackup日志中那些还未提交的数据)

[root@MySQL-01 ~]# innobackupex --apply-log /data/backup/full/2014-04-07_23-37-20/ --incremental-dir=/data/backup/incremental/2014-04-07_23-51-15/
innobackupex: Copying '/data/backup/incremental/2014-04-07_23-51-15/mysql/help_relation.frm' to '/data/backup/full/2014-04-07_23-37-20/mysql/help_relation.frm'
innobackupex: Copying '/data/backup/incremental/2014-04-07_23-51-15/mysql/help_category.MYD' to '/data/backup/full/2014-04-07_23-37-20/mysql/help_category.MYD'
innobackupex: Copying '/data/backup/incremental/2014-04-07_23-51-15/mysql/ndb_binlog_index.frm' to '/data/backup/full/2014-04-07_23-37-20/mysql/ndb_binlog_index.frm'
140408 00:04:33  innobackupex: completed OK!
[root@MySQL-01 ~]# 

把所有合在一起的完全备份整体进行一次apply操作,回滚未提交的数据:

[root@MySQL-01 ~]# innobackupex --apply-log /data/backup/full/2014-04-07_23-37-20/
xtrabackup: starting shutdown with innodb_fast_shutdown = 1
140408  0:06:32  InnoDB: Starting shutdown...
140408  0:06:36  InnoDB: Shutdown completed; log sequence number 5324785676
140408 00:06:36  innobackupex: completed OK!

把恢复完的备份复制到数据库目录文件中,赋权,然后启动mysql数据库,检测数据正确性

必赢手机登录网址 51

[root@MySQL-01 ~]# /etc/init.d/mysqld stop
Shutting down MySQL.                                       [  OK  ]
[root@MySQL-01 ~]# mv /data/mysql /data/mysql_bak
[root@MySQL-01 ~]# mkdir /data/mysql
[root@MySQL-01 ~]# innobackupex --defaults-file=/etc/my.cnf --copy-back --rsync /data/backup/full/2014-04-07_23-37-20/
innobackupex: Starting to copy InnoDB log files
innobackupex: in '/data/backup/full/2014-04-07_23-37-20'
innobackupex: back to original InnoDB log directory '/data/mysql'
innobackupex: Copying '/data/backup/full/2014-04-07_23-37-20/ib_logfile1' to '/data/mysql/ib_logfile1'
innobackupex: Copying '/data/backup/full/2014-04-07_23-37-20/ib_logfile0' to '/data/mysql/ib_logfile0'
innobackupex: Finished copying back files.
140408 00:12:42  innobackupex: completed OK!
[root@MySQL-01 ~]# chown -R mysql.mysql /data/mysql
[root@MySQL-01 ~]# /etc/init.d/mysqld start
Starting MySQL....                                         [  OK  ]
[root@MySQL-01 ~]# 

必赢手机登录网址 52

查看数据是否正确

必赢手机登录网址 53

mysql> select * from t1;
+------+-----------+
| id   | name      |
+------+-----------+
|    1 | yayun     |
|    2 | atlas     |
|    1 | love sql  |
|    1 | mysql dba |
+------+-----------+
4 rows in set (0.00 sec)

mysql> 

必赢手机登录网址 54

(5)克隆slave

在日常工作中,我们有时候需要在线添加从库,比如线上有一主一从两个数据库,但是由于业务的需要,一台从库的读取无法满足现在的需求,这样就需要我们在线添加从库,由于出于安全考虑,我们通常需要在从库上进行在线克隆slave。

克隆slave时,常用参数--slave-info和--safe-slave-backup。

--slave-info会将master的binlog文件名和偏移量位置保存到xtrabackup_slave_info文件中

--safe-slave-backup会暂停slave的SQL线程直到没有打开的临时表的时候开始备份。备份结束后SQL线程会自动启动,这样操作的目的主要是确保一致性的复制状态。

下面的例子,将介绍一主一从情况下在线搭建新的从库,环境如下:

master 192.168.0.10    #主库

slave    192.168.0.20    #从库

newslave 192.168.0.100 # 新的从库

在上述示例中,newslave即为要新搭建的从库。在老的从库上面进行备份:

[root@MySQL-02 ~]# innobackupex --user=root --password=12345 --socket=/tmp/mysqld.sock --defaults-file=/etc/my.cnf --slave-info --safe-slave-backup --no-timestamp /data/cloneslave
innobackupex: Backup created in directory '/data/cloneslave'
innobackupex: MySQL binlog position: filename 'mysql-bin.000022', position 107
innobackupex: MySQL slave binlog position: master host '192.168.0.10', filename 'mysql-bin.000006', position 732
140413 23:25:13  innobackupex: completed OK!

这里的/data/cloneslave 目录要不存在,如果存在是会报错的。

查看目录下生成的文件:

必赢手机登录网址 55

[root@MySQL-02 ~]# ll /data/cloneslave/
total 26668
-rw-r--r-- 1 root root      261 Apr 13 23:24 backup-my.cnf
-rw-r--r-- 1 root root 27262976 Apr 13 23:24 ibdata1
drwxr-xr-x 2 root root     4096 Apr 13 23:25 mysql
drwxr-xr-x 2 root root     4096 Apr 13 23:25 performance_schema
drwxr-xr-x 2 root root     4096 Apr 13 23:25 sakila
drwxr-xr-x 2 root root     4096 Apr 13 23:25 world_innodb
-rw-r--r-- 1 root root       13 Apr 13 23:25 xtrabackup_binary
-rw-r--r-- 1 root root       23 Apr 13 23:25 xtrabackup_binlog_info
-rw-r--r-- 1 root root       79 Apr 13 23:25 xtrabackup_checkpoints
-rw-r--r-- 1 root root     2560 Apr 13 23:25 xtrabackup_logfile
-rw-r--r-- 1 root root       72 Apr 13 23:25 xtrabackup_slave_info
drwxr-xr-x 2 root root     4096 Apr 13 23:25 yayun
[root@MySQL-02 ~]# 

必赢手机登录网址 56

查看xtrabackup_slave_info文件内容,这个内容就是为搭建从库时需要change master to的参数:

[root@MySQL-02 ~]# cat /data/cloneslave/xtrabackup_slave_info 
CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000006', MASTER_LOG_POS=732
[root@MySQL-02 ~]# 

在老的slave服务器上进行还原,即192.168.0.20

[root@MySQL-02 ~]# innobackupex --apply-log --redo-only /data/cloneslave/
xtrabackup: starting shutdown with innodb_fast_shutdown = 1
140413 23:30:37  InnoDB: Starting shutdown...
140413 23:30:37  InnoDB: Shutdown completed; log sequence number 12981048
140413 23:30:37  innobackupex: completed OK!
[root@MySQL-02 ~]# 

将还原的文件复制到新的从库newslave,即192.168.0.100

[root@MySQL-02 data]# rsync -avprP -e ssh /data/cloneslave/ 192.168.0.100:/data/mysql/

在主库master上添加对新从库newslave的授权:

必赢手机登录网址 57

mysql> grant replication slave on *.* to 'repl'@'192.168.0.100' identified by '123456';
Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.02 sec)

mysql> 

必赢手机登录网址 58

拷贝老的从库的配置文件到新的从库newslave,并且修改server-id参数,修改完毕后,启动新的从库;

[root@MySQL-02 data]# scp /etc/my.cnf 192.168.0.100:/etc/
 root@192.168.0.100's password: 
 my.cnf                                                                                                             100% 4881     4.8KB/s   00:00 
[root@MySQL-02 data]# 

[root@newslave mysql]# egrep 'log-slave|^server-id|skip_slave' /etc/my.cnf 
server-id       = 3
skip_slave_start
log-slave-updates=1
[root@newslave mysql]# 

[root@newslave mysql]# chown -R mysql.mysql .
[root@newslave mysql]# /etc/init.d/mysqld restart
Shutting down MySQL.                                       [  OK  ]
Starting MySQL..                                           [  OK  ]
[root@newslave mysql]# 

查找老的从库备份后生成的xtrabackup_slave_info文件,提取其中的master_log_file和master_log_pos信息,然后在新的从库上进行change master to操作:

在新的从库上进行同步:

mysql> CHANGE MASTER TO MASTER_HOST='192.168.0.10',MASTER_USER='repl', MASTER_PASSWORD='123456',MASTER_LOG_FILE='mysql-bin.000006', MASTER_LOG_POS=732;
Query OK, 0 rows affected (0.09 sec)

mysql> 

启动io线程和sql线程,并观察复制是否正常:

mysql> start slave;
Query OK, 0 rows affected (0.00 sec)

mysql> 

必赢手机登录网址 59

mysql> show slave  statusG
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 192.168.0.10
                  Master_User: repl
                  Master_Port: 3306
                Connect_Retry: 2
              Master_Log_File: mysql-bin.000006
          Read_Master_Log_Pos: 1309
               Relay_Log_File: MySQL-02-relay-bin.000002
                Relay_Log_Pos: 830
        Relay_Master_Log_File: mysql-bin.000006
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
              Replicate_Do_DB: 
          Replicate_Ignore_DB: 
           Replicate_Do_Table: 
       Replicate_Ignore_Table: 
      Replicate_Wild_Do_Table: yayun.%
  Replicate_Wild_Ignore_Table: 
                   Last_Errno: 0
                   Last_Error: 
                 Skip_Counter: 0
          Exec_Master_Log_Pos: 1309
              Relay_Log_Space: 989
              Until_Condition: None
               Until_Log_File: 
                Until_Log_Pos: 0
           Master_SSL_Allowed: No
           Master_SSL_CA_File: 
           Master_SSL_CA_Path: 
              Master_SSL_Cert: 
            Master_SSL_Cipher: 
               Master_SSL_Key: 
        Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
                Last_IO_Errno: 0
                Last_IO_Error: 
               Last_SQL_Errno: 0
               Last_SQL_Error: 
  Replicate_Ignore_Server_Ids: 
             Master_Server_Id: 1
1 row in set (0.00 sec)

mysql> 

必赢手机登录网址 60

查看主库,发现已经有两个线程(Binlog Dump)

必赢手机登录网址 61

mysql> show processlistG
*************************** 1. row ***************************
     Id: 8
   User: slave
   Host: 192.168.0.20:44251
     db: NULL
Command: Binlog Dump
   Time: 1088
  State: Master has sent all binlog to slave; waiting for binlog to be updated
   Info: NULL
*************************** 2. row ***************************
     Id: 9
   User: root
   Host: localhost
     db: yayun
Command: Query
   Time: 0
  State: NULL
   Info: show processlist
*************************** 3. row ***************************
     Id: 10
   User: repl
   Host: 192.168.0.100:45844
     db: NULL
Command: Binlog Dump
   Time: 124
  State: Master has sent all binlog to slave; waiting for binlog to be updated
   Info: NULL
3 rows in set (0.00 sec)

mysql>