zoukankan      html  css  js  c++  java
  • xtrabackup全库还原+binlog日志还原

    1、场景

    mysql数据库误删某个库、误删表或者误删除数据

    如下模拟图:备份策略定为每天凌晨进行全库备份,在B时间点进行了误操作以后,有两种恢复场景,一种是恢复到B时间点误操作前,一种是恢复到C时间点

    以下为恢复到B时间点误操作前

    需要说明的是,使用xtrabackup进行还原需要关闭数据库,为了避免关闭数据库造成的业务影响,在运维工作中可以提前搭建一个用于还原的备用数据库,在备用数据库中还原到误操作前一个时间点后,再使用mysqldump导出库或者某个表,再导入生产库,这样就避免了数据库关闭造成的全局影响。

    2、还原步骤

    2.1、查询A时间点这个全备份的位点

    可以从xtrabackup的备份文件里面的xtrabackup_binlog_info日志查看

    位点为:1931

    2.2、模拟删除数据

    delete from go_supplier where id=25

    2.3、找出删除数据的时候前一个位点

    可以在CRT里面使用如下命令,同时打开日志记录功能,使用文本编辑器根据关键字搜索,找出执行误操作的命令前一个位点

     show binlog events in 'mysql-bin.000003'

    如下图,找出了误操作之前的位点为3701

    2.4、全备份还原

    • 关闭mysql
    • 再删掉mysql数据目录下的数据文件,避免出现如下错误提示,然后在my.cnf配置文件加入"datadir =/data/mysql"参数

    • 先对备份做一个prepare,再使用命令进行还原
    1 innobackupex --apply-log /data/backup/2018-11-08_09-41-06
    2 innobackupex --defaults-file=/usr/local/mysql/my.cnf --copy-back /data/backup/2018-11-08_09-41-06/
    • 还原成功后还要对mysql数据文件进行权限的修改,切换到mysql数据目录下
    1 chown -R mysql:mysql /data/mysql/*

    2.5、启动mysql并使用binlog进行还原

    1 mysqlbinlog --start-position="1931" --stop-position="3701" /var/log/mysql/mysql-bin.000003 | mysql -uroot -p

    检查数据是否恢复,搞定后使用mysqldump导出,再导入生产库即可。

    注:如果还原到C时间点,可以跳过误操作的位点,继续恢复B时间点后的数据

    1 mysqlbinlog --start-position="3851" /var/log/mysql/mysql-bin.000003 | mysql -uroot -p

     

     

     

     


     

  • 相关阅读:
    AutoFac中常用方法说明
    DI之循环依赖
    NB/T 10215-2019 风力发电机组 测风传感器等最新能源行业标准
    DL/T 691-2019等最新电力行业标准
    TSG D7006-2020 压力管道监督检验规则
    YY/T 0595-2020 医疗器械 质量管理体系YY/T 0287-2017 应用指南
    GB/T 38775-2020系列电动汽车无线充电系统标准
    最新电动汽车安全标准
    GB 38032-2020 电动客车安全要求
    GB 38031-2020 电动汽车用动力蓄电池安全要求
  • 原文地址:https://www.cnblogs.com/fuqu/p/9965823.html
Copyright © 2011-2022 走看看