前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MySQL数据恢复的一些补充

MySQL数据恢复的一些补充

作者头像
jeanron100
发布2019-08-02 10:23:07
4450
发布2019-08-02 10:23:07
举报

这是学习笔记的第 2056 篇文章

如果一个线上数据库发生了问题,需要做数据恢复,作为DBA应该给自己留一些改进的余地,否则陷入两难的境地,只会让自己更加被动。

我可以随便举出一些异常的场景。

一个预置账户

比如我们的数据文件在/data下面,这个目录下有多个实例的相关数据文件,如果把这个目录误删除了,那么我们还是存在一些恢复的可能性的,这个时候我们是无法通过句柄恢复,但是可以通过mysqldump的方式转储数据文件,在数据量不大的情况下算是一个救命的方法了,当然这里我们必然要做好准备,那就是推荐配置一个管理员账号,基于本机即可,需要注意的是MySQL里面主机localhost默认是基于socket方式,而主机为127.0.0.1则默认是基于TCP/IP的连接方式,这种异常情况下,只有TCP/IP的方式依旧可靠,希望这个账户平时不需要用到,但是在一些关键时刻能够充分的使用到。

线上环境应该杜绝drop操作

在我的理解中,DBA是否有drop权限是一件值得讨论的事情。我们不能想当然的认为因为是DBA所有应该有drop权限。

在MySQL里面,基于它的设计方式(8.0之后有了默认的共享表空间,情况发生了变化),在5.7及以下版本中,完全可以通过rename操作完成,比如我们设置一个数据库test,它的归档数据库为test_arch,那我们的用户对有test_arch才有drop权限,而其他线上用户都应该杜绝,同类低于truncate操作也需要格外谨慎。

可用的备份

关键时候恢复的时候,如果发现备份存在问题不够完整,那么就失去了整个备份恢复的最后一根稻草。至于备份的方式,可以综合根据数据量使用情况来进行选型,比如阿里云的默认是物理备份的方式,可以根据实际的业务特点进行方案的对齐。

必要的表结构备份

通常在物理/逻辑的全库备份中,可以把表结构的备份也融入进去,一般来说备份表结构,这个操作基本是秒级完成,从时间成本上来说不存在问题,而有时候我们需要的仅仅是一些结构的信息,如果表数量比较大,那么使用表结构的逻辑备份就派上用场了。

异常恢复的一些技巧

上面的是一些常规的操作场景,至少有了备份恢复是可行的,但是我们不能指望一定是最完美的方案,我们需要在技能上占领高地,提前储备一些技能,以防数据恢复时的被动。

  • 解析.frm文件得到DDL
  • 基于ibd文件的数据恢复
  • 基于句柄的数据恢复方法
  • 基于DML闪回方案的补充测试

这些方法,除了常规的备份之外,我们需要储备这些硬技能,让那些艰难的数据恢复场景有了一些可行性,而这个是作为后备方案,来对已有的恢复异常提供补充。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-07-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 杨建荣的学习笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档