路漫漫其修远兮
吾将上下而求索

mysql学习:不同情形下备份还原

当只有一个mysql数据库在运行

前提:每天晚上数据库正常备份,全量或者增量都可以。脚本开始备份的时候需要知道当前二进制日志文件位置,或者将当前二进制位置记录到本地文件,或者刷新二进制文件为单独的一个文件,二进制日志文件目录位于不同目录(不同分区)

开启二进制日志功能

当开发进行操作,执行删除语句的时候没有添加where条件导致数据丢失,下面是操作步骤

还原方式:昨天晚上的备份+从昨天晚上开始的二进制日志文件进行还原

1、此时数据库文件里的文件已经丢失,可以将其删除

2、还原昨天晚上的备份数据

3、编辑二进制日志文件,找出从昨天晚上到今天执行最后一条语句前的所有语句到新的文件

4、重放sql文件

如库比较大,还原慢。执行删除语句操作的库确认从昨天晚上开始到现在没有更新过。可只从昨天晚上备份中还原此库即可。(mysqldump)找出插入该库的sql重新执行即可。(xtrabackup)将昨天晚上的备份数据库启动,导出该库,还原即可

当在linux命令行执行rm操作误删了mysql数据文件(或磁盘损坏)

还原方式:昨天晚上的备份+从昨天晚上开始的二进制日志文件进行还原

mysql主从,从只读。

主备份,缺点:出现故障停止业务

从备份,缺点:有可能从落后于主。主出故障时无法定位主的二进制日志位置,无法正常还原今天的数据

综上:只能主进行备份,从就没什么用了

出问题,先听主从关系,然后主操作和上面一样

mysql主主,vip漂移

主1和主2都要开启备份,并在备份的时候记录二进制日志文件位置

当开发进行操作,执行删除语句的时候没有添加where条件导致数据丢失,下面是操作步骤

还原方式:昨天晚上的备份+从昨天晚上开始的二进制日志文件进行还原

1、此时两个数据库文件里的文件已经丢失,可以将其删除

2、停服务,解除两个主从关系,下面从主1操作

3、还原昨天晚上的备份数据

4、编辑二进制日志文件,找出从昨天晚上到今天执行最后一条语句前的所有语句到新的文件

5、重放sql文件,此时机器上数据完整

6、物理备份数据库到另一台机器主2,记录主1的二进制文件位置,启动主1服务,开始提供服务

7、配置双主关系

当人为误删主1数据目录

人工漂移vip到主2保证业务正常,保证vip一直在主2上

还原方式:还原的时候要先解除主从关系

等今晚过了,以主2备份和备份时主2的二进制日志位置进行还原主1

如果今天宕机后立即进行还原操作,会有问题,因为要用主1昨晚的备份还原,然后还原主1昨晚到宕机时二进制。此时以主2昨晚的二进制日志作为起点进行同步,直到主1追上主2

以时间线为轴,画出图来好分析

未经允许不得转载:江哥架构师笔记 » mysql学习:不同情形下备份还原

分享到:更多 ()

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址