xtrabackup 详解
xtrabackup是Percona公司CTO Vadim参与开发的一款基于InnoDB的在线热备工具,具有开源,免费,支持在线热备,备份恢复速度快,占用磁盘空间小等特点,并且支持不同情况下的多种备份形式。xtrabackup的官方下载地址为http://www.percona.com/software/percona-xtrabackup。
xtrabackup包含两个主要的工具,即xtrabackup和innobackupex,二者区别如下:
(1)xtrabackup只能备份innodb和xtradb两种引擎的表,而不能备份myisam引擎的表;
(2)innobackupex是一个封装了xtrabackup的Perl脚本,支持同时备份innodb和myisam,但在对myisam备份时需要加一个全局的读锁。还有就是myisam不支持增量备份。
1.备份过程
innobackupex备份过程如下图:
(图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。
2.全备恢复
这一阶段会启动xtrabackup内嵌的innodb实例,回放xtrabackup日志xtrabackup_log,将提交的事务信息变更应用到innodb数据/表空间,同时回滚未提交的事务(这一过程类似innodb的实例恢复)。恢复过程如下图:
(图2 innobackupex 恢复过程)
3.增量备份
innobackupex增量备份过程中的"增量"处理,其实主要是相对innodb而言,对myisam和其他存储引擎而言,它仍然是全拷贝(全备份)
"增量"备份的过程主要是通过拷贝innodb中有变更的"页"(这些变更的数据页指的是"页"的LSN大于xtrabackup_checkpoints中给定的LSN)。增量备份是基于全备的,第一次增备的数据必须要基于上一次的全备,之后的每次增备都是基于上一次的增备,最终达到一致性的增备。增量备份的过程如下,和全备的过程很类似,区别仅在第2步。
( 图 3 innobackupex增量备份过程)
4.增量备份恢复
和全备恢复类似,也需要两步,一是数据文件的恢复,如图4,这里的数据来源由3部分组成:全备份,增量备份和xtrabackup log。二是对未提交事务的回滚,如图5所示:
( 图4 innobackupex 增量备份恢复过程1)
( 图5 innobackupex增量备份恢复过程2)
5.innobackupex使用示例
(1)安装使用xtrabackup,安装比较简单,我们使用二进制编译好的就行了,这种工具无需源码编译,因为没有什么功能需要俺们定制。
[root@MySQL- ~]# 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- ~]# tar xf percona-xtrabackup-2.1.--Linux-x86_64.tar.gz -C /usr/local/
[root@MySQL- ~]# mv /usr/local/percona-xtrabackup-2.1.-Linux-x86_64/ /usr/local/xtrabackup
[root@MySQL- ~]# echo "export PATH=\$PATH:/usr/local/xtrabackup/bin" >> /etc/profile
[root@MySQL- ~]# source /etc/profile
[root@MySQL- ~]#
(2)全量备份
创建备份用户:
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>
进行全备份
备份数据存放在/data/backup/下面,innobackupex会自动创建一个文件夹,是当前系统的时间戳
mysql> select * from yayun.t1;
+------+-------+
| id | name |
+------+-------+
| 1 | yayun |
| 2 | atlas |
+------+-------+
2 rows in set (0.00 sec) mysql>
测试数据就是yayun库中的t1表
[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 ''
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 ~]#
上面的过程中处理过,主要看最后是否提示innobackupex completed ok,可以看见备份成功。我们看看/data/backup目录下产生了什么
[root@MySQL- backup]# pwd
/data/backup
[root@MySQL- backup]# ll
total
drwxr-xr-x root root Apr : --07_23--
[root@MySQL- backup]# cd --07_23--/
[root@MySQL- --07_23--]# ll
total
-rw-r--r-- root root Apr : backup-my.cnf
drwx------ root root Apr : employees
drwx------ root root Apr : host
-rw-r----- root root Apr : ibdata1
drwx------ root root Apr : menagerie
drwxr-xr-x root root Apr : mysql
drwxr-xr-x root root Apr : performance_schema
drwx------ root root Apr : sakila
drwx------ root root Apr : test
drwx------ root root Apr : world_innodb
drwxr-xr-x root root Apr : world_myisam
-rw-r--r-- root root Apr : xtrabackup_binary
-rw-r--r-- root root Apr : xtrabackup_binlog_info
-rw-r----- root root Apr : xtrabackup_checkpoints
-rw-r----- root root Apr : xtrabackup_logfile
drwx------ root root Apr : yayun
[root@MySQL- --07_23--]#
可以看见有对应数据库的名字,比如yayun,还有一个以时间戳命名的目录。我们看看对应文件里面的内容,这几个比较重要
[root@MySQL- --07_23--]# cat xtrabackup_checkpoints
backup_type = full-backuped
from_lsn =
to_lsn =
last_lsn =
compact =
[root@MySQL- --07_23--]# cat xtrabackup_binlog_info
mysql-bin.
[root@MySQL- --07_23--]#
可以看见相关文件记录了LSN,日志偏移量,还可以看见这次是全备份,相信聪明的童鞋们一眼就看懂了。^_^
删除数据库,然后恢复全备(线上不要这样搞)
mysql> drop database yayun;
Query OK, 1 row affected (0.04 sec) mysql>
恢复全备
恢复备份到mysql的数据文件目录,这一过程要先关闭mysql数据库,重命名或者删除原数据文件目录都可以,再创建一个新的数据文件目录,将备份数据复制到新的数据文件目录下,赋权,修改权限,启动数据库
[root@MySQL- ~]# /etc/init.d/mysqld stop
Shutting down MySQL..... [ OK ]
[root@MySQL- ~]# mv /data/mysql /data/mysql_bak
[root@MySQL- ~]# mkdir /data/mysql
[root@MySQL- ~]#
[root@MySQL- ~]# innobackupex --apply-log /data/backup/--07_23--/
xtrabackup: starting shutdown with innodb_fast_shutdown =
:: InnoDB: Starting shutdown...
:: InnoDB: Shutdown completed; log sequence number
:: innobackupex: completed OK!
以上对应的目录就是innobackupex全备份自己创建的目录。
[root@MySQL- ~]# innobackupex --defaults-file=/etc/my.cnf --copy-back --rsync /data/backup/--07_23--/
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.
:: innobackupex: completed OK!
[root@MySQL- ~]#
可以看见已经成功恢复,修改数据目录权限,启动mysql,效验数据是否正常,查看yayun库下面的t1表中的数据。
[root@MySQL- ~]# chown -R mysql.mysql /data/mysql
[root@MySQL- ~]# /etc/init.d/mysqld start
Starting MySQL................. [ OK ]
[root@MySQL- ~]#
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>
发现数据已经成功恢复。
(3)增量备份
在进行增量备份时,首先要进行一次全量备份,第一次增量备份是基于全备的,之后的增量备份是基于上一次的增量备份,以此类推。
全备份放在/data/backup/full,增量备份放在/data/backup/incremental
[root@MySQL- ~]# tree /data/backup/
/data/backup/
├── full
└── incremental directories, files
[root@MySQL- ~]#
废话少说,咱们先来一次全备份
[root@MySQL- ~]# 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
:: innobackupex: Connection to database server closed
:: innobackupex: completed OK!
[root@MySQL- ~]#
为了测试效果,我们在t1表中插入数据
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>
现在来一次增量备份1
[root@MySQL- ~]# innobackupex --user=backup --password=yayun --socket=/tmp/mysqld.sock --defaults-file=/etc/my.cnf --incremental /data/backup/incremental/ --incremental-basedir=/data/backup/full/--07_23--/ --parallel=
innobackupex: Backup created in directory '/data/backup/incremental/2014-04-07_23-42-46'
innobackupex: MySQL binlog position: filename 'mysql-bin.000001', position
:: innobackupex: Connection to database server closed
:: innobackupex: completed OK!
[root@MySQL- ~]#
我们看看增量备份的大小以及文件内容
[root@MySQL- ~]# du -sh /data/backup/full/--07_23--/
.2G /data/backup/full/--07_23--/
[root@MySQL- ~]# du -sh /data/backup/incremental/--07_23--/
3.6M /data/backup/incremental/--07_23--/
[root@MySQL- ~]#
看见增量备份的数据很小吧,就是备份改变的数据而已。
[root@MySQL- --07_23--]# pwd
/data/backup/incremental/--07_23--
[root@MySQL- --07_23--]# cat xtrabackup_checkpoints
backup_type = incremental
from_lsn =
to_lsn =
last_lsn =
compact =
[root@MySQL- --07_23--]#
上面已经明显说明是增量备份了,该工具很人性化吧,呵呵
我们再次向t1表插入数据,然后创建增量备份2
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>
创建增量备份2(这次是基于上次的增量备份哦)
[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 ~]#
[root@MySQL- ~]# ls -ltr /data/backup/full/
total
drwxr-xr-x root root Apr : --07_23--
[root@MySQL- ~]# ls -ltr /data/backup/incremental/
total
drwxr-xr-x root root Apr : --07_23--
drwxr-xr-x root root Apr : --07_23--
[root@MySQL- ~]#
(4)增量备份恢复
增量备份的恢复大体为3个步骤
*恢复完全备份
*恢复增量备份到完全备份(开始恢复的增量备份要添加--redo-only参数,到最后一次增量备份去掉--redo-only参数)
*对整体的完全备份进行恢复,回滚那些未提交的数据
恢复完全备份(注意这里一定要加--redo-only参数,该参数的意思是只应用xtrabackup日志中已提交的事务数据,不回滚还未提交的数据)
[root@MySQL- ~]# innobackupex --apply-log --redo-only /data/backup/full/--07_23--/
xtrabackup: starting shutdown with innodb_fast_shutdown =
:: InnoDB: Starting shutdown...
:: InnoDB: Shutdown completed; log sequence number
:: innobackupex: completed OK!
将增量备份1应用到完全备份
[root@MySQL- ~]# innobackupex --apply-log --redo-only /data/backup/full/--07_23--/ --incremental-dir=/data/backup/incremental/--07_23--/
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'
:: innobackupex: completed OK!
[root@MySQL- ~]#
将增量备份2应用到完全备份(注意恢复最后一个增量备份时需要去掉--redo-only参数,回滚xtrabackup日志中那些还未提交的数据)
[root@MySQL- ~]# innobackupex --apply-log /data/backup/full/--07_23--/ --incremental-dir=/data/backup/incremental/--07_23--/
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'
:: innobackupex: completed OK!
[root@MySQL- ~]#
把所有合在一起的完全备份整体进行一次apply操作,回滚未提交的数据:
[root@MySQL- ~]# innobackupex --apply-log /data/backup/full/--07_23--/
xtrabackup: starting shutdown with innodb_fast_shutdown =
:: InnoDB: Starting shutdown...
:: InnoDB: Shutdown completed; log sequence number
:: innobackupex: completed OK!
把恢复完的备份复制到数据库目录文件中,赋权,然后启动mysql数据库,检测数据正确性
[root@MySQL- ~]# /etc/init.d/mysqld stop
Shutting down MySQL. [ OK ]
[root@MySQL- ~]# mv /data/mysql /data/mysql_bak
[root@MySQL- ~]# mkdir /data/mysql
[root@MySQL- ~]# innobackupex --defaults-file=/etc/my.cnf --copy-back --rsync /data/backup/full/--07_23--/
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.
:: innobackupex: completed OK!
[root@MySQL- ~]# chown -R mysql.mysql /data/mysql
[root@MySQL- ~]# /etc/init.d/mysqld start
Starting MySQL.... [ OK ]
[root@MySQL- ~]#
查看数据是否正确
mysql> select * from t1;
+------+-----------+
| id | name |
+------+-----------+
| 1 | yayun |
| 2 | atlas |
| 1 | love sql |
| 1 | mysql dba |
+------+-----------+
4 rows in set (0.00 sec) mysql>
(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- ~]# innobackupex --user=root --password= --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
innobackupex: MySQL slave binlog position: master host '192.168.0.10', filename 'mysql-bin.000006', position
:: innobackupex: completed OK!
这里的/data/cloneslave 目录要不存在,如果存在是会报错的。
查看目录下生成的文件:
[root@MySQL- ~]# ll /data/cloneslave/
total
-rw-r--r-- root root Apr : backup-my.cnf
-rw-r--r-- root root Apr : ibdata1
drwxr-xr-x root root Apr : mysql
drwxr-xr-x root root Apr : performance_schema
drwxr-xr-x root root Apr : sakila
drwxr-xr-x root root Apr : world_innodb
-rw-r--r-- root root Apr : xtrabackup_binary
-rw-r--r-- root root Apr : xtrabackup_binlog_info
-rw-r--r-- root root Apr : xtrabackup_checkpoints
-rw-r--r-- root root Apr : xtrabackup_logfile
-rw-r--r-- root root Apr : xtrabackup_slave_info
drwxr-xr-x root root Apr : yayun
[root@MySQL- ~]#
查看xtrabackup_slave_info文件内容,这个内容就是为搭建从库时需要change master to的参数:
[root@MySQL- ~]# cat /data/cloneslave/xtrabackup_slave_info
CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000006', MASTER_LOG_POS=
[root@MySQL- ~]#
在老的slave服务器上进行还原,即192.168.0.20
[root@MySQL- ~]# innobackupex --apply-log --redo-only /data/cloneslave/
xtrabackup: starting shutdown with innodb_fast_shutdown =
:: InnoDB: Starting shutdown...
:: InnoDB: Shutdown completed; log sequence number
:: innobackupex: completed OK!
[root@MySQL- ~]#
将还原的文件复制到新的从库newslave,即192.168.0.100
[root@MySQL- data]# rsync -avprP -e ssh /data/cloneslave/ 192.168.0.100:/data/mysql/
在主库master上添加对新从库newslave的授权:
mysql> grant replication slave on *.* to 'repl'@'192.168.0.100' identified by '';
Query OK, 0 rows affected (0.00 sec) mysql> flush privileges;
Query OK, 0 rows affected (0.02 sec) mysql>
拷贝老的从库的配置文件到新的从库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 =
skip_slave_start
log-slave-updates=
[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='',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>
mysql> show slave status\G
*************************** 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>
查看主库,发现已经有两个线程(Binlog Dump)
mysql> show processlist\G
*************************** 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>
正常工作,到此在线克隆slave就结束啦。
参考资料:
http://www.percona.com/doc/percona-xtrabackup/2.1/
http://realtimedba.blogspot.com/2013/06/my-sqlxtra-backup.html
xtrabackup 详解的更多相关文章
- xtrabackup详解
xtrabackup是Percona公司CTO Vadim参与开发的一款基于InnoDB的在线热备工具,具有开源,免费,支持在线热备,备份恢复速度快,占用磁盘空间小等特点,并且支持不同情况下的多种备份 ...
- Xtrabackup 安装 参数详解
目录 安装 常用参数详解 innobackupex 相关参数 xtrabackup相关参数 安装 继Xtrabackup 介绍,本次来讲解安装和使用. Xtrabackup的RPM包下载地址: 系统版 ...
- xtrabackup(innobackupex)使用详解
innobackupex实际上是percona-xtrabackup的perl整合脚本,功能当然更强大一些. xtrabackup备份实际上是在线的物理热备,为什么和么说呢,因为实际上他是以拷贝mys ...
- MySQL 备份与还原详解
相关阅读: MySQL备份和恢复具体实施 http://www.linuxidc.com/Linux/2012-12/76257.htm MySQL备份与恢复的三种方法总结 http://www.li ...
- MySQL高可用方案-PXC(Percona XtraDB Cluster)环境部署详解
MySQL高可用方案-PXC(Percona XtraDB Cluster)环境部署详解 Percona XtraDB Cluster简称PXC.Percona Xtradb Cluster的实现是在 ...
- (转)MySQL备份原理详解
MySQL备份原理详解 原文:http://www.cnblogs.com/cchust/p/5452557.html 备份是数据安全的最后一道防线,对于任何数据丢失的场景,备份虽然不一定能恢复百分之 ...
- MySQL数据库备份详解
原文:MySQL数据库备份详解 对于任何数据库来说,备份都是非常重要的 数据库复制不能取代备份的作用 比如我们由于误操作,在主数据库上删除了一些数据,由于主从复制的时间很短,在发现时,从数据库上的数据 ...
- OpenStack的Trove组件详解
一:简介 一.背景 1. 对于公有云计算平台来说,只有计算.网络与存储这三大服务往往是不太够的,在目前互联网应用百花齐放的背景下,几乎所有应用都使用到数据库,而数据库承载的往往是应用最核心的数 ...
- Linq之旅:Linq入门详解(Linq to Objects)
示例代码下载:Linq之旅:Linq入门详解(Linq to Objects) 本博文详细介绍 .NET 3.5 中引入的重要功能:Language Integrated Query(LINQ,语言集 ...
随机推荐
- Servlet组件之 jsp 技术
JSP 简称java服务器页面(java server page),jsp和servlet实现了我们的开发需求.对于jsp技术我们首先需要知道他的组成 HTML+java+jsp内置对象=jsp ...
- 对工程测量大师App的评价
我是测绘工程专业的学生,去年由于同学的推荐我开始使用工程测量大师这款App. 工程测量大师是一款非常方便的测量计算软件,用户将测量的数据输入后,软件就可以帮助你得到精确的计算结果.操作非常简单,使用起 ...
- Javaweb异常提示信息统一处理
Java异常封装(自己定义错误码和描述,附源码) 2016年01月29日 22:30:54 小宝鸽 阅读数:23262 标签: java异常 更多 个人分类: Java基础 所属专栏: Java工作实 ...
- 类变量的初始化时机(摘录自java突破程序员基本功德16课)
先看书本的一个例子,代码如下: public class Price { final static Price INSTANCE=new Price(2.8); static double initP ...
- 初次见识结构体与map的区别
题目 http://vjudge.net/contest/view.action?cid=51142#problem/G 自己做的结构体 #include <iostream>#incl ...
- Azure DevOps Server: 使用Rest Api获取拉取请求Pull Request中的变更文件清单
需求: Azure DevOps Server 的拉取请求模块,为开发团队提供了强大而且灵活的代码评审功能.拉取请求中变更文件清单,对质量管理人员,是一个宝贵的材料.质量保障人员可以从代码清单中分析不 ...
- html5 Ajax 访问.net WebApi获取视频流
http://localhost//api/Test/GetVideo?filename=/GoodVideo/e36a144b-52cd-4174-93d2-cfc41aea6c1d.mp4 是AP ...
- netcore 发布 到 windows server IIS
net core 和普通net 发布没有什么不同,只需要在个别地方注意下: 1. 在visual Studio 2017 发布 2. 把发布好的文件copy到服务器上,并新建一个网站,同时要注意选择无 ...
- 【react】关于react框架使用的一些细节要点的思考
( _(:3 」∠)_给园友们提个建议,无论是API文档还是书籍,一定要多看几遍!特别是隔一段时间后,会有意想不到的收获的) 这篇文章主要是写关于学习react中的一些自己的思考: 1.set ...
- Linux的基本操作
1.linux系统的基本命令 ls 查看当前所在文夹下的内容pwd 查看当前所在的位置cd 打开文件目录touch 创建文件, 如果文件不存在, 就创建新的文件mkdir 创建文件夹rm 删 ...