标签:/usr 读取 注意 mysq 问题 rac ack 手动 性能
简介:数据恢复乃是DBA做的次数不多,但是极为重要的工作,谈谈我得理解
背景:数据误操作大体上可以分为两类
1 DML操作(比如不加条件的更新删除)
2 DDL操作(比如增加减少字段甚至truncate甚至drop表)
一 针对方法:
1 针对操作:
1 设置延时库,延时设置时间看线上要求,数据变更频率,推荐不超过5小时.
延时库:1实际上不论 mysql还是mongo,oracle,都有办法设置延时库,用于对于误操作的恢复。此操作极为快捷,省去了对于binlog解析恢复数据的问题
2设置方法: 1 stop slave
2 CHANGE MASTER TO MASTER_DELAY = N(秒数);
3 start slave
4 show slave status sql_delay即是你设置的值
3 恢复方法:1确定误操作的postion,将延时库取消延迟,应用数据
2 注意关注读取的position,直到误操作position之前,停止复制进程
3 进行表的导出和导入
4 研发确定数据的有效性
4 缺点: 1 依赖于延时机器物理机器应用日志的速度(机器性能差的时候恢复慢),建议将延时库设置在机器性能非常好,减少恢复时间
2 采用 binlog2sql解析
实际上开源众多的软件早已实现解析binlog提取指定表语句的工具,在此我强烈推荐这款
1 如何安装
1 yum -y install git python-pip MySQLdb
2 git clone https://github.com/danfengcao/binlog2sql.git && cd binlog2sql
3 pip install -r requirements.txt
2 创建相应用户和权限:
GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 三种权限即可
3 恢复方法
0 准备工作:
1 最好准备一台性能好的机器专门做数据恢复
2 此台机器对于线上所有主库都拥有上面三个权限的用户
3 当发生误操作时候,主库手动flush logs,并将误操作binlog拷贝到这台机器上(不建议直接在主库上做)
1 解析binlog
python binlog2sql.py -h127.0.0.1 -P3306 -utest_all -p123456 -d库 -t表 --start-file=误操作binlog文件 --stop-file
2 生成回滚语句
python binlog2sql.py --flashback -h127.0.0.1 -P3306 -utest_all -p123456 -d库 -t表 --start-file=误操作binlog文件 --stop-file
注意点:1 start-file和stop-file此处千万不要加路径 ,否则会提示file is not in mysql server,因为是通过show命令获得的
3 将生成的sql回滚语句应用库上
4 研发确认数据的有效性
4 优势与不足
优势:1 可以解读代码进行拍错和解读,甚至重写(毕竟是py,好理解)
2 使用简单,常用命令能很快熟悉
3 此工具已被众多业界DBA使用,我也在使用
不足: 1 binlog2sql.py对比mysqlbinlog分析效率逊色不少,所以分析速度不是很快
2 参数 binlog_row_image 必须为FULL,暂不支持MINIMAL
3 此项其实不算缺点,对于此类恢复工具,对于DDL操作是都不支持的(DDL是在binlog中不会记录影响的数据)。实际上 DDL的有些操作通过工具确实没办法实现恢复(比如drop table,如果想恢复就得找这张表所有的binlog扫描恢复,显然这是不可能的,有很多线上binlog会定期清理)
3 普通恢复方法:
核心思想:昨日备份+今日binlog(误操作前)
方法:1 xtarbackup备份进行恢复建立恢复实例(恢复方法不再阐述),并查看当时备份点的filename+position
j 2 确定2个position 1:恢复实例所需要的positon 2 误操作之前的positon
2 误操作后进行flush logs,将(备份需要的+误操作的)两者binlog进行拷贝到恢复机器上,
3 mysqlbinlog --start-position=368315 /usr/local/mysql/data/binlog.123456 | mysql -u root -p password
先应用恢复实例的binlog,再应用误操作之前的binlog
4 进行 表的查看 导出与导入
5 研发确认数据是否正常
缺点: 1 备份文件恢复的速度所耗费时间 恢复实例所应用binlog所耗费时间,想想看如果一个超级大的备份,线上切换了很多次binlog,这恢复速度恐怕任何人都不能接受 吧
4 一款强大的审核和回滚语句工具:inception
关于这款工具我在此处就不细说了,等以后有机会,我会出一个系列的文章进行介绍,这里先简单说下它的三个核心功能
1 强大的审核机制,丰富的规则组合
2 对于每一个sql执行都会生成相应的回滚语句(对于恢复很容易吧)
3 可以调用第三方工具pt-osc
二 总结:核心问题
恢复数据 1 要快 2 要准,估算你的恢复时间,然后给研发一个准确的答复,这才是一个专业DBA所要具备的,如何估算你的恢复时间呢,如果有朋友有这方面的想法,可以在博客下方留言或者加我的QQ 390148350,可以详谈,我会进行补充
\
标签:/usr 读取 注意 mysq 问题 rac ack 手动 性能
原文地址:http://www.cnblogs.com/danhuangpai/p/7620279.html