mysql xtrabackup mysqlbinlog Point-In-Time recovery

本文涉及的产品
RDS AI 助手,专业版
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
简介: 恢复到特定的时间点,可以使用innobackupex 和数据库binlog日志首先,我们需要一个数据库快照,使用innobackupex 生成一个全库备份# innobackupex --defaults-file=/etc/my.

恢复到特定的时间点,可以使用innobackupex 和数据库binlog日志

首先,我们需要一个数据库快照,使用innobackupex 生成一个全库备份

# innobackupex --defaults-file=/etc/my.cnf --user root --password XXXX --no-timestamp /home/ssd/ali_backup/full_xtra_3306_20160825/

模拟测试数据

mysql> create database miles;
Query OK, 1 row affected (0.00 sec)

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

mysql> insert into t values (1,'m1'),(2,'m2'),(3,'m3');
Query OK, 3 rows affected (0.00 sec)
Records: 3  Duplicates: 0  Warnings: 0

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

mysql> update t set name='c2' where id=2;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

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

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

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

#误操作删除数据库
mysql> drop database miles;
Query OK, 1 row affected (0.01 sec)

查看当前binlog文件

mysql> show binary logs;
+-----------------------+-----------+
| Log_name              | File_size |
+-----------------------+-----------+
| 3306-mysql-bin.000001 |      6622 |
| 3306-mysql-bin.000002 |      4533 |
+-----------------------+-----------+
2 rows in set (0.00 sec)

查看当前的binlog,及日志的Position

mysql> show master status\G;
*************************** 1. row ***************************
             File: 3306-mysql-bin.000002
         Position: 4533
     Binlog_Do_DB: 
 Binlog_Ignore_DB: 
Executed_Gtid_Set: 87fd24be-683d-11e6-ba97-1418774c98d8:1-54
1 row in set (0.00 sec)

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

关库

# mysqladmin --defaults-file=/home/ssd/ali_data/my.cnf  shutdown -uroot -p --socket=/home/ssd/ali_data/my3306.sock

保护误删除数据库目录结构

# mv ali_data ali_data_bak

应用日志到快照

# innobackupex --defaults-file=/etc/my.cnf --apply-log /home/ssd/ali_backup/full_xtra_3306_20160825/

在备份路径下,通过xtrabackup_binlog_info文件查看快照的Position

# more xtrabackup_binlog_info
3306-mysql-bin.000002   3325    87fd24be-683d-11e6-ba97-1418774c98d8:1-48

将快照拷贝回datadir路径,并更改目录属性

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

# chown -R mysql:mysql ali_data

查看binlog日志,确定开始的Position和drop操作的Position

# mysqlbinlog -vv --base64-output=decode-rows 3306-mysql-bin.000002
...
# at 3325
#160825 10:59:10 server id 201983306  end_log_pos 3373 CRC32 0xf555e0a5         GTID [commit=yes]
SET @@SESSION.GTID_NEXT= '87fd24be-683d-11e6-ba97-1418774c98d8:49'/*!*/;
# at 3373
#160825 10:59:10 server id 201983306  end_log_pos 3470 CRC32 0x594a3bbd         Query   thread_id=51    exec_time=0     error_code=0
SET TIMESTAMP=1472093950/*!*/;
create database miles
/*!*/;
...
# at 4147
#160825 11:02:10 server id 201983306  end_log_pos 4195 CRC32 0x453242f4         GTID [commit=yes]
SET @@SESSION.GTID_NEXT= '87fd24be-683d-11e6-ba97-1418774c98d8:53'/*!*/;
# at 4195
#160825 11:02:10 server id 201983306  end_log_pos 4268 CRC32 0xca99e1e1         Query   thread_id=51    exec_time=0     error_code=0
SET TIMESTAMP=1472094130/*!*/;
BEGIN
/*!*/;
# at 4268
#160825 11:02:10 server id 201983306  end_log_pos 4316 CRC32 0x3ea968f2         Table_map: `miles`.`t` mapped to number 284
# at 4316
#160825 11:02:10 server id 201983306  end_log_pos 4359 CRC32 0x6e6e79a5         Delete_rows: table id 284 flags: STMT_END_F
### DELETE FROM `miles`.`t`
### WHERE
###   @1=1 /* INT meta=0 nullable=1 is_null=0 */
###   @2='m1' /* VARSTRING(90) meta=90 nullable=1 is_null=0 */
# at 4359
#160825 11:02:10 server id 201983306  end_log_pos 4390 CRC32 0x8a88bf8a         Xid = 1371
COMMIT/*!*/;
# at 4390
#160825 11:02:42 server id 201983306  end_log_pos 4438 CRC32 0xe4a75c72         GTID [commit=yes]
SET @@SESSION.GTID_NEXT= '87fd24be-683d-11e6-ba97-1418774c98d8:54'/*!*/;
# at 4438
#160825 11:02:42 server id 201983306  end_log_pos 4533 CRC32 0x5f2c1fe0         Query   thread_id=51    exec_time=0     error_code=0
SET TIMESTAMP=1472094162/*!*/;
drop database miles

应用日志

# mysqlbinlog --start-position=3325 --stop-position=4390 3306-mysql-bin.000002 | mysql -uroot --socket=/home/ssd/ali_data/my3306.sock -p

登录数据库,确认数据恢复情况

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| miles              |
| mysql              |
| performance_schema |
| tmp                |
| ywcf               |
+--------------------+
6 rows in set (0.00 sec)

mysql> use miles;
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 t;
+------+------+
| id   | name |
+------+------+
|    2 | c2   |
|    3 | m3   |
+------+------+
2 rows in set (0.00 sec)

确定数据无误后,重新做一份快照

# innobackupex --defaults-file=/etc/my.cnf --user root --password beijing --no-timestamp /home/ssd/ali_backup/full_xtra_3306_20160825_1
相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
目录
相关文章
|
存储 关系型数据库 MySQL
利用Xtrabackup进行mysql增量备份和全量备份
利用Xtrabackup进行mysql增量备份和全量备份
286 0
|
5月前
|
存储 关系型数据库 MySQL
在CentOS 8.x上安装Percona Xtrabackup工具备份MySQL数据步骤。
以上就是在CentOS8.x上通过Perconaxtabbackup工具对Mysql进行高效率、高可靠性、无锁定影响地实现在线快速全量及增加式数据库资料保存与恢复流程。通过以上流程可以有效地将Mysql相关资料按需求完成定期或不定期地保存与灾难恢复需求。
489 10
|
关系型数据库 MySQL 数据库
HBR混合云备份的MySQL云备份底层使用的是xtrabackup吗?
HBR混合云备份的MySQL云备份底层使用的是xtrabackup吗?
156 1
|
存储 关系型数据库 MySQL
利用Xtrabackup进行mysql增量备份和全量备份
利用Xtrabackup进行mysql增量备份和全量备份
1429 0
|
存储 关系型数据库 MySQL
|
关系型数据库 MySQL 机器人
【MySQL】两个脚本自动化搞定 MySQL 备份恢复--XtraBackup
【MySQL】两个脚本自动化搞定 MySQL 备份恢复--XtraBackup
|
SQL 监控 关系型数据库
解密MySQL二进制日志:深度探究mysqlbinlog工具
解密MySQL二进制日志:深度探究mysqlbinlog工具
2160 3
|
存储 关系型数据库 MySQL
XtraBackup 的版本大揭秘:突破迷雾,揭开其支持 MySQL 版本的震撼真相,捍卫数据安全!
【8月更文挑战第7天】XtraBackup 是 MySQL 备份领域的热门工具,适用于多个版本。它为 MySQL 8.0 提供高效备份,确保数据安全。同样支持 MySQL 5.7 和其他稳定版如 5.6,精确备份各类数据结构。
339 0
|
存储 关系型数据库 MySQL
XtraBackup支持哪些MySQL数据库版本?
【5月更文挑战第13天】XtraBackup支持哪些MySQL数据库版本?
1652 0
|
关系型数据库 MySQL 数据库
【MySQL】Xtrabackup备份工具使用
Xtrabackup是由percona提供的mysql数据库备份工具,支持在线热备份(备份时不影响数据读写). Xtrabackup有两个主要的工具:xtrabackup、innobackupex 1、xtrabackup只能备份InnoDB和XtraDB两种数据表,而不能备份MyISAM数据表 2、innobackupex是参考了InnoDB Hotbackup的innoback脚本修改而来的.innobackupex是一个perl脚本封装,封装了xtrabackup。主要是为了方便的 同时备份InnoDB和MyISAM引擎的表,但在处理myisam时需要加一个读锁。并且加入了一些使用的选项
553 0

推荐镜像

更多