xtrabackup 增量备份 恢复

step 1: 全备

# innobackupex --defaults-file=/etc/my.cnf --no-timestamp /home/ssd/ali_backup/full_xtra_3306_20160826 --user root --password beijing --socket=/home/ssd/ali_data/my3306.sock

查看xtrabackup_checkpoints 文件

# more full_xtra_3306_20160826/xtrabackup_checkpoints
backup_type = full-backuped
from_lsn = 0
to_lsn = 12222652952
last_lsn = 12222652952
compact = 0
recover_binlog_info = 0

测试数据

mysql> create database miles;
Query OK, 1 row affected (0.01 sec)
mysql> use miles;
Database changed
mysql> create table t( id int, name varchar(30));
Query OK, 0 rows affected (0.05 sec)

step 2:1级备份

# innobackupex --defaults-file=/etc/my.cnf --no-timestamp --incremental /home/ssd/ali_backup/full_xtra_3306_20160826_i_01 --incremental-basedir=/home/ssd/ali_backup/full_xtra_3306_20160826/  --user root --password beijing --socket=/home/ssd/ali_data/my3306.sock

查看xtrabackup_checkpoints 文件

# more full_xtra_3306_20160826_i_01/xtrabackup_checkpoints
backup_type = incremental
from_lsn = 12222652952
to_lsn = 12222657366
last_lsn = 12222657366
compact = 0
recover_binlog_info = 0

测试数据

mysql> insert into t values (1, 'i1'),(2,'i2'),(3,'i3');
mysql> select * from t;
+------+------+
| id   | name |
+------+------+
|    1 | i1   |
|    2 | i2   |
|    3 | i3   |
+------+------+
3 rows in set (0.01 sec)

step 3:2级备份

# innobackupex --defaults-file=/etc/my.cnf --no-timestamp --incremental /home/ssd/ali_backup/full_xtra_3306_20160826_i_02 --incremental-basedir=/home/ssd/ali_backup/full_xtra_3306_20160826_i_01/  --user root --password beijing --socket=/home/ssd/ali_data/my3306.sock

查看xtrabackup_checkpoints 文件

# more full_xtra_3306_20160826_i_02/xtrabackup_checkpoints
backup_type = incremental
from_lsn = 12222657366
to_lsn = 12222659058
last_lsn = 12222659058
compact = 0
recover_binlog_info = 0

测试数据

mysql> delete from t where id=2;
Query OK, 1 row affected (0.02 sec)

mysql> select * from t;
+------+------+
| id   | name |
+------+------+
|    1 | i1   |
|    3 | i3   |
+------+------+
2 rows in set (0.00 sec)

mysql> drop database miles;
Query OK, 1 row affected (0.02 sec)

step 4:查看当前日志


mysql> show master status\G;
*************************** 1. row ***************************
             File: 3306-mysql-bin.000003
         Position: 1319
     Binlog_Do_DB:
 Binlog_Ignore_DB:
Executed_Gtid_Set: 87fd24be-683d-11e6-ba97-1418774c98d8:49-53,
cdf80832-6a74-11e6-890b-1418774c98d8:1-13
1 row in set (0.00 sec)

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

step 5:关库

# mysqladmin -uroot shutdown --socket=/data/mysql.sock -p

step 6:保留旧数据目录

# mv ali_data ali_data_bak

step 7:准备全备

# innobackupex --apply-log --redo-only /home/ssd/ali_backup/full_xtra_3306_20160826/

step 8:准备1级备份

# innobackupex --apply-log --redo-only /home/ssd/ali_backup/full_xtra_3306_20160826/ --incremental-dir=/home/ssd/ali_backup/full_xtra_3306_20160826_i_01/

step 9:准备2级备份

# innobackupex --apply-log --redo-only /home/ssd/ali_backup/full_xtra_3306_20160826/ --incremental-dir=/home/ssd/ali_backup/full_xtra_3306_20160826_i_02/

step 10:再次准备全备

# innobackupex --apply-log  /home/ssd/ali_backup/full_xtra_3306_20160826/

step 11:恢复数据库

# innobackupex --defaults-file=/etc/my.cnf --copy-back /home/ssd/ali_backup/full_xtra_3306_20160826

# chown -R mysql:mysql ali_data

step 12:启动实例

# mysqld_safe --defaults-file=/etc/my.cnf --user=mysql --datadir=/home/ssd/ali_data/  &
mysql> select * from t;
+------+------+
| id   | name |
+------+------+
|    1 | i1   |
|    2 | i2   |
|    3 | i3   |
+------+------+
3 rows in set (0.00 sec)

step 13:查看备份Position

# more full_xtra_3306_20160826/xtrabackup_binlog_info
3306-mysql-bin.000003   933     87fd24be-683d-11e6-ba97-1418774c98d8:49-53,
cdf80832-6a74-11e6-890b-1418774c98d8:1-11

step 14:查看binlog日志,确定start-position和stop-position

# mysqlbinlog -vv --base64-output=decode-rows 3306-mysql-bin.000003
...
SET @@SESSION.GTID_NEXT= 'cdf80832-6a74-11e6-890b-1418774c98d8:11'/*!*/;
# at 722
#160826 14:00:28 server id 201983306  end_log_pos 795 CRC32 0x98f6ac81  Query   thread_id=27    exec_time=0     error_code=0
SET TIMESTAMP=1472191228/*!*/;
BEGIN
/*!*/;
# at 795
#160826 14:00:28 server id 201983306  end_log_pos 843 CRC32 0x98615829  Table_map: `miles`.`t` mapped to number 77
# at 843
#160826 14:00:28 server id 201983306  end_log_pos 902 CRC32 0x44246525  Write_rows: table id 77 flags: STMT_END_F
### INSERT INTO `miles`.`t`
### SET
###   @1=1 /* INT meta=0 nullable=1 is_null=0 */
###   @2='i1' /* VARSTRING(90) meta=90 nullable=1 is_null=0 */
### INSERT INTO `miles`.`t`
### SET
###   @1=2 /* INT meta=0 nullable=1 is_null=0 */
###   @2='i2' /* VARSTRING(90) meta=90 nullable=1 is_null=0 */
### INSERT INTO `miles`.`t`
### SET
###   @1=3 /* INT meta=0 nullable=1 is_null=0 */
###   @2='i3' /* VARSTRING(90) meta=90 nullable=1 is_null=0 */
# at 902
#160826 14:00:28 server id 201983306  end_log_pos 933 CRC32 0x47fad9c0  Xid = 239
COMMIT/*!*/;
# at 933
#160826 14:08:31 server id 201983306  end_log_pos 981 CRC32 0xd5f3269b  GTID [commit=yes]
SET @@SESSION.GTID_NEXT= 'cdf80832-6a74-11e6-890b-1418774c98d8:12'/*!*/;
# at 981
#160826 14:08:31 server id 201983306  end_log_pos 1054 CRC32 0x993def1d         Query   thread_id=32    exec_time=0     error_code=0
SET TIMESTAMP=1472191711/*!*/;
BEGIN
/*!*/;
# at 1054
#160826 14:08:31 server id 201983306  end_log_pos 1102 CRC32 0x5fe76bad         Table_map: `miles`.`t` mapped to number 78
# at 1102
#160826 14:08:31 server id 201983306  end_log_pos 1145 CRC32 0x98128279         Delete_rows: table id 78 flags: STMT_END_F
### DELETE FROM `miles`.`t`
### WHERE
###   @1=2 /* INT meta=0 nullable=1 is_null=0 */
###   @2='i2' /* VARSTRING(90) meta=90 nullable=1 is_null=0 */
# at 1145
#160826 14:08:31 server id 201983306  end_log_pos 1176 CRC32 0xa2617fb2         Xid = 261
COMMIT/*!*/;
# at 1176
#160826 14:08:40 server id 201983306  end_log_pos 1224 CRC32 0x5cda357a         GTID [commit=yes]
SET @@SESSION.GTID_NEXT= 'cdf80832-6a74-11e6-890b-1418774c98d8:13'/*!*/;
# at 1224
#160826 14:08:40 server id 201983306  end_log_pos 1319 CRC32 0x5de28a5d         Query   thread_id=32    exec_time=0     error_code=0
SET TIMESTAMP=1472191720/*!*/;
drop database miles
/*!*/;
SET @@SESSION.GTID_NEXT= 'AUTOMATIC' /* added by mysqlbinlog */ /*!*/;
# at 1319
#160826 14:09:05 server id 201983306  end_log_pos 1371 CRC32 0xee498579         Rotate to 3306-mysql-bin.000004  pos: 4
DELIMITER ;
# End of log file
ROLLBACK /* added by mysqlbinlog */;
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=0*/;

step 15:基于binlog日志恢复

# mysqlbinlog --start-position=933 --stop-position=1176 3306-mysql-bin.000003 | mysql -uroot -p --socket=/home/ssd/ali_data/my3306.sock

查看恢复情况

mysql> select * from t;
+------+------+
| id   | name |
+------+------+
|    1 | i1   |
|    3 | i3   |
+------+------+
2 rows in set (0.00 sec)

step 16:确定数据无误后,重新做一份全备

# innobackupex --defaults-file=/etc/my.cnf --user root --password beijing --no-timestamp /home/ssd/ali_backup/full_xtra_3306_20160826_1
时间: 2024-09-15 01:16:47

xtrabackup 增量备份 恢复的相关文章

MongoDB迁移的那些事:冷备份+增量备份恢复

作者介绍 胡国青,DBAplus社群群副,Oracle OCM10G.曾任职惠普.快乐购-芒果TV等公司服务,主要负责DBA和技术架构工作.热衷于Oracle.MySQL.MongoDB.Redis. Linux.Java.Python.shell等技术.目前服务于初创公司和没有DBA的部分公司,负责SQL优化.DB培训.DB架构设计等相关工作.   本文分享某客户实施方案,在今年9月中旬已经实施完毕.   一.环境构建步骤   1线上环境  都是副本集模式看,3个业务访问节点+1个隐藏节点+1

安装使用Percona XtraBackup来备份恢复MySQL的教程_Mysql

1.安装XtraBackup yum的安装方法: 自动 $ rpm -Uhv http://www.percona.com/downloads/percona-release/percona-release-0.0-1.x86_64.rpm 然后会看到: Retrieving http://www.percona.com/downloads/percona-release/percona-release-0.0-1.x86_64.rpm Preparing... ################

MongoDB迁移方案-冷备份+增量备份恢复--跨机房迁移

QQ群:465614686  1.  环境构建步骤 (1)线上环境 都是副本集模式 3个业务访问节点+1个隐藏节点 (隐藏节点做hadoop.spark数据同步使用以及数据报表查询等) (2)主机以及配置说明 10.21.18.21  primary节点    优先级为100 10.21.18.22  secondary节点  优先级为90 10.21.18.23  secondary节点  优先级为80 10.21.18.24  隐藏节点       优先级为0 系统配置:128G内存,64C

使用xtrabackup对Mysql备份恢复

备份原理:XtraBackup基于InnoDB的crash-recovery功能.它会复制innodb的data file,由于不锁表,复制出来的数据是不一致的,在恢复的时候使用crash-recovery,使得数据恢复一致.InnoDB维护了一个redo log,又称为transaction log,事务日志,它包含了innodb数据的所有改动情况.XtraBackup在备份的时候, 一页一页地复制innodb的数据,而且不锁定表,与此同时,XtraBackup还有另外一个线程监视着trans

MySQL利用xtrabackup进行增量备份详细过程汇总

1,创建mysql备份用户 mysql -uroot --password="" -e"CREATE USER 'backup'@'192.168.%' IDENTIFIED BY '123456'"; mysql -uroot --password="" -e"GRANT RELOAD, LOCK TABLES, REPLICATION CLIENT, CREATE TABLESPACE, SUPERON *.* TO 'backup

利用Xtrabackup工具备份及恢复(MySQL DBA的必备工具)_Mysql

Xtrabackup------MySQL DBA的必备工具 注意: 1)文档参照http://www.percona.com/docs/wiki/percona-xtrabackup:start 2)mysql要使用5.1.50版本或以上. 一.Xtrabackup简介及安装 1.Xtrabackup  是percona的一个开源项目,可以热备份innodb ,XtraDB,和MyISAM(会锁表),可以看做是InnoDB Hotbackup的免费替代品.                   

MySQL 利用xtrabackup进行增量备份详细过程汇总

    Xtrabackup下载.安装以及全量备份请参考:http://blog.itpub.net/26230597/viewspace-1465772/ 1,创建mysql备份用户 mysql -uroot --password="" -e"CREATE USER 'backup'@'192.168.%' IDENTIFIED BY '123456'"; mysql -uroot --password="" -e"GRANT REL

MySQL中xtrabackup备份恢复全攻略

   XtraBackup是Percona推出的一款备份工具,算是对于mysqldump的一个补充.对于大批量数据的导入使用mysqldump会出现一定的瓶颈,这一点做过一些数据迁移项目的同学可能感同身受.   数据迁移中的数据量,小有小的好,大有大的招,见招拆招,找到适合的场景是最佳的.     如果现在去Percona官网下载,就会发现最新的版本已经是2.4.6了.下载可以选择一个完整的打包,或者逐个的rpm根据需求来安装也可以.完整的工具大概在60M左右.     而目前的MySQL版本大

mysldump数据的完全备份+增量备份+故障后的恢复

学习了几天mysql的知识.刚接触单单以为是语法之类的命令记住就行了.但是遇到问题的时候缺不知道从何下手.网上找了相关的资料感觉还是不太实用.于是笔者就着手总结了备份与还原的例子.这篇是mysqldump的使用.进行了2个事例的操作.当然两个事例大同小异.第二个为第一个的拓展.如果将这2个例子原理搞清楚了.接下来进行LVM备份还原以及Xtrabackup这个备份工具都会轻松很多. MySQL的备份方式 前提:事先保证对备份类型,备份策略等mysql常用知识已经清楚. mysqldump: 逻辑备