惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Attack and Defense Labs
Attack and Defense Labs
The GitHub Blog
The GitHub Blog
C
Check Point Blog
博客园_首页
MongoDB | Blog
MongoDB | Blog
N
Netflix TechBlog - Medium
F
Full Disclosure
Microsoft Security Blog
Microsoft Security Blog
爱范儿
爱范儿
Recent Announcements
Recent Announcements
阮一峰的网络日志
阮一峰的网络日志
G
GRAHAM CLULEY
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
T
Threat Research - Cisco Blogs
C
Cybersecurity and Infrastructure Security Agency CISA
V
Vulnerabilities – Threatpost
K
Kaspersky official blog
博客园 - 司徒正美
S
Schneier on Security
T
The Exploit Database - CXSecurity.com
Project Zero
Project Zero
云风的 BLOG
云风的 BLOG
Cisco Talos Blog
Cisco Talos Blog
Know Your Adversary
Know Your Adversary
雷峰网
雷峰网
V
V2EX - 技术
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Spread Privacy
Spread Privacy
罗磊的独立博客
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
S
Security Affairs
SecWiki News
SecWiki News
Schneier on Security
Schneier on Security
O
OpenAI News
Jina AI
Jina AI
PCI Perspectives
PCI Perspectives
Cyberwarzone
Cyberwarzone
Y
Y Combinator Blog
Apple Machine Learning Research
Apple Machine Learning Research
B
Blog RSS Feed
I
InfoQ
D
Docker
P
Palo Alto Networks Blog
Recorded Future
Recorded Future
M
MIT News - Artificial intelligence
博客园 - Franky
B
Blog
Scott Helme
Scott Helme
博客园 - 叶小钗
D
DataBreaches.Net

博客园 - Mr.Myth

percona server 二进制安装下编译tpcc-mysql的坑 Problems with MMM for mysql(译文) MySQL MMM 双主在Failover时挂起 Steve Loughran:Why not raid 0,its about time and snowflakes!!! How to Clean Up After a Failed 10g or 11.1 Oracle Clusterware Installation [ID 239998.1] MySQL 5.5 外键不能引用分区表主键 MYSQL 登录漏洞,Percona Server说明 使用折半查找法删除 五月第二周 合肥之行 ORACLE 10G & patch下载地址大全 RED HAT ES 5.4 X64安装ORACLE 10G R2 64bit - Mr.Myth vmware server 安装oracle 10G RAC 实践(三) vmware server 安装oracle 10G RAC 实践(二) vmware server 安装oracle 10G RAC 实践(一) 内存数据库 Timesten - Mr.Myth IBM 中国研究院 Offer 之感言——能力是一种态度(转) XX项目----记录(一) 10G 更改IP地址或机器名后EM配置
基于xtrabackup的Point-In-Time Recovery备份恢复
Mr.Myth · 2012-05-31 · via 博客园 - Mr.Myth

摘要:本文的目的是利用Xtrabackup工具,通过解析Binary log来实现Full-Backup,Incremental-Backup以及Point-In-Time Recovery.

一、Xtrabackup

Xtrabackup是一个对InnoDB做数据备份的工具,支持在线热备份(备份时不影响数据读写),是商业备份工具Innodb Hotbakcup的一个很好的替代品。考虑到以前1.6版本增量备份的BUG(不能备份在增量期间的表结构,经测试这个BUG2.0已经解决),以及游戏服务器的MYQL版本为Percona Server 5.5.15, 本文测试使用的是2.0版本. Xtrabackup有两个主要的工具:xtrabackupinnobackupex,其中xtrabackup只能备份InnoDBXtraDB 两种数据表,innobackupex则封装了xtrabackup,同时可以备份MyISAM数据表。本文测试使用了innobackupex的完全备份、增量备份和 恢复。

Innobackupex完整备份后生成了几个重要的文件:

xtrabackup_binlog_info:记录当前最新的LOG Position

xtrabackup_binlog_pos_innodb:innodb log postion

xtrabackup_checkpoints: 存放备份的起始位置beginlsn和结束位置endlsn,增量备份需要这个lsn

二、测试环境

OS: Red Hat 4.1.2-52

Mysql: Server ver: 5.1.63

INNODB: innodb_data_file_pat | ibdata1:10M:autoextend

BINLOG:开启binlog日志,设置expire_logs_days=3,保留三天的Binlog,让mysql server自动维护Binlog日志文件。

考虑到公司172.16.10.24测试服务器硬盘只有10G,测试环境移到本机VM server


三、备份

1)完整备份(Full Backup

当前测试的服务器为三国游戏服,binlog在在测试服上原先没有开启,日志的大小暂时忽略,全库的大小约为3G

创建完整备份集

/home/backup_data/full 目录中找到bakup.log文件可以看到整个执行过程约为6分钟


2)增量备份(Incremental Backup)

先在TEST库中创建一张USER_BAK

再到tab表中插入几条数据

通过show binlog events 可以看到当前的END_LOG_POS1285

执行增量备份

可以看到增量备份数很快,差不多1分半钟就完成了。

四、恢复数据库

重要 :拷贝DATADIR下的Binlog文件

[root@nod1 mysqldata]# cp mysql-bin* /home/backup_data/

1)恢复到在增量备份的时间点

按照以下步骤恢复数据库

1)service mysql stop #停止MYSQL服务

2) mv mysqldata /home/mysqldata_bak01   #移动原MYSQL目录

3) mkdir mysqldata #创建新DATADIR目录

4)innobackupex --defaults-file=/etc/my.cnf --apply-log --redo-only /home/backup_data/full/2012-05-30_17-55-39 --user=root --password=aaaa1111   #Prepare完整备份集合

4)innobackupex --defaults-file=/etc/my.cnf --apply-log --redo-only /home/backup_data/full/2012-05-30_17-55-39 --incremental-dir=/home/backup_data/incre/2012-05-30_18-17-07 --user=root --password=aaaa1111    #Prepare 增量备份集

5)innobackupex --defaults-file=/etc/my.cnf --copy-back /home/backup_data/full/2012-05-30_17-55-39    #执行恢复操作

6)chown -R mysql:mysql mysqldata #更改DATADIR目录属主

7)service mysql start #重启MYSQL服务

注意:xtrabackup全备不会备份Binlig文件集

登录MYSQL数据库

可以看到之前做的插入和创建表都恢复过来了

2)恢复到最新时间

利用完整备份和Innodbbinlog文件把数据库恢复到最新时间,可以保证因宕机引起的数据丢失最小化,下面是具体的操作步骤

由于之前的完整备份已经被增量备份日志做了应用,所以要重新做一个完整备份

执行上面步骤,备份完整数据库

Binlog position567

这个pos也可以在FULL目录下的xtrabackup_binlog_info看到

更改数据库,分别执行,DELETE,UPDATE,INSERT,CREATE,DROP操作

备份binlog日志文件

停止Mysql数据库

删除原Datadir目录

创建Datadir目录

Prepare完整备份集

执行恢复操作

执行完成,完整备份恢复时间在4分钟左右

更改Datadir目录属主,启动数据库

登录数据库

解析BINLOG文件,从记录的position开始,对以后的数据库改动生成sql文本

执行文本

登入数据库检查

可以看到做的改动都更改过来了