MySQL(InnoDB剖析):49---备份与恢复之(二进制日志备份(mysqlbinlog)、冷备份)

一、二进制日志文件备份与恢复

  •  二进制日志非常关键,用户可以通过它完成point-in-time的恢复工作。MySQL数据库的replication同样需要二进制日志

开启二进制日志

  • 默认情况下并不启用二进制日志
  • 要使用二进制日志必须首先启用它,在配置文件中进行如下的配置:

  • 在前面介绍过,对于InnoDB只简单启用二进制日志是不够的,还需要启用一些其他参数来保证最为安全和正确地记录二进制日志,因此对于InnoDB存储引擎,推荐的二进制日志的服务器配置应该如下:

备份与还原

  • 在备份二进制文件之前,可以通过FLUSH LOGS命令来生成一个新的二进制日志文件,然后备份之前的二进制日志
  • 恢复二进制日志可以通过下面的命令:

演示案例

  • 例如还原binlog.0000001,可以使用下面的命令:

  • 如果需要恢复多个二进制日志文件,最正确的做法应该是同时恢复多个二进制日志文件,而不是一个一个地恢复,例如:

  • 也可以通过mysqlbinlog命令导出到一个文件,然后再通过SOURCE命令来导入。这种做法是可以对导出的文件进行修改后再导入,例如:

  • --start-position和--stop-position选项:可以指定从二进制日志的某个偏移量来进行恢复,这样可以跳过某些不正确的语句,例如:

  • --start-datetime和--stop-datetime选项可以用来指定从二进制日志的某个时间点来进行恢复,用法和上面的两个参数一样一样

二、冷备份

  • 对于InnoDB来说冷备非常简单,只需要备份MySQL数据库的frm文件、共享表空间文件、独立表空间文件(*.ibd)、重做日志文件
  • 另外建议定期备份MySQL数据库的配置文件my.cnf,这样有利于恢复的操作
  • 通常DBA会写一个脚本来进行冷备的操作,DBA可能还会对备份完的数据库进行打包和压缩,这并不是难事。关键在于:
    • 不要遗漏原本需要备份的物理文件,如共享表空间和重做日志文件,少了这些文件可能数据库都无法启动
    • 另外一种经常发生的情况是由于磁盘空间已满而导致的备份失败DBA可能习惯地认为运行脚本的备份时没有问题的,少了校验的机制
  • 冷备份的优点:
    • 备份简单,只要复制相关文件即可
    • 备份文件易于在不同操作系统,不同MySQL版本上进行恢复
    • 恢复相当简单,只需要把文件恢复到指定位置即可
    • 恢复速度快,不需要执行任何SQL语句,也不需要重建索引
  • 冷备份的缺点:
    • InnoDB存储引擎冷备的文件通常比逻辑文件大很多,因为表空间中存放着很多其他的数据,如undo段、插入缓冲等信息
    • 冷备也不总是可以轻易地跨平台。操作系统、MySQL的版本、文件大小写敏感和浮点数格式都成为问题
发布了1481 篇原创文章 · 获赞 1026 · 访问量 38万+

猜你喜欢

转载自blog.csdn.net/qq_41453285/article/details/104378668