zoukankan      html  css  js  c++  java
  • 20190328

    今天遇到了个场景,用户把多张表里数据删除了,要求做恢复。

    首先拿到了个mysqldump的文件,开始新建实例,开始source导入sql文件

    然后就遇到坑了,最开始以为是字符集的问题,检查一遍发现没啥问题,接着看出sql文件

    一堆堆看不懂的,查看表结构发现,表中带longblob字段。原因其实是mysqldump时表中带blob这种要加特定参数--hex-blob,不然就是上图那种,导入不进去。

    带参数的sql文件如下。

    接着上面场景继续,当然这个备份是废了,想办法解析binlog,解析binlog后又来坑了,发现只有主表SQL语句,主表关联的外键操作并没有,而级联表才是需要恢复的。顿时又GG了。当然对于binlog不记录这个操作我也是才知道的,看见外键危害多大,主从复制都没办法做吧(我猜的)。

    接着说生产库上有个冷备份,然后拷贝下来,覆盖测试库上的datadir,报错各种wings,具体忘截图了,和数据字典有关,及时表.frm存在但无法读取。后来慢慢摸索发现,这个备份是通过mysqlbackup备份的,靠,还真有用官方备份的。既然找到了备份方式,那么就好对付了。处理方式和xtrabackup类似。

    全备

    mysqlbackup --user=mysqlbackup --password=123   --backup-dir=/backup  --with-timestamp  --compress-level=9  backup 

    mysqlbackup --backup-dir=/backup/2017-09-18_13-49-11 apply-log

    mysqlbackup --datadir=/data/mysql --backup-dir=/backup/2017-09-18_13-49-11 copy-back

    增量

    mysqlbackup --defaults-file=/etc/my.cnf --user=mysqlbackup --password=123 --with-timestamp --incremental --incremental-backup-dir=/backup/ --incremental-base=dir:/backup/2017-09-18_14-51-25 backup 

    mysqlbackup --backup-dir=/backup/2017-09-18_15-25-59 apply-log #全备的库先apply-log
    mysqlbackup --backup-dir=/backup/2017-09-18_15-25-59 --incremental-backup-dir=/backup/2017-09-18_15-42-56 apply-incremental-backup #在步骤一的基础上继续恢复
    mysqlbackup --defaults-file=/etc/my.cnf --force --backup-dir=/backup/2017-09-18_15-25-59/ --datadir=/data/mysql copy-back-and-apply-log #拷贝然后再恢复增备的log

    官方推荐的

    mysqlbackup --user=mysqlbackup --password=123 --backup-image=backup.mbi --backup-dir=/backup --with-timestamp backup-to-image

    mysqlbackup --defaults-file=/backup/2017-09-15_17-06-07/server-my.cnf --datadir=/data/mysql --backup-dir=/backup/2017-09-15_17-06-07 copy-back

    增量

    mysqlbackup --user=mysqlbackup --password=123 --backup-image=backup.mbi --backup-dir=/backup --with-timestamp backup-to-image #先备份成image
    mysqlbackup --defaults-file=/etc/my.cnf --user=mysqlbackup --password=123 --with-timestamp --incremental --incremental-backup-dir=/backup/ --incremental-base=dir:/backup/2017-09-18_15-53-57 backup #在原来备份的基础上进行增量备份


    mysqlbackup --backup-dir=/backup/full --backup-image=/backup/2017-09-18_15-53-57/backup.mbi image-to-backup-dir 先转换成方法一的备份文件,后续的步骤都跟前面一样
    mysqlbackup --backup-dir=/backup/full apply-log
    mysqlbackup --backup-dir=/backup/full --incremental-backup-dir=/backup/2017-09-18_15-56-13 apply-incremental-backup
    mysqlbackup --defaults-file=/etc/my.cnf --force --backup-dir=/backup/full --datadir=/data/mysql copy-back-and-apply-log

  • 相关阅读:
    使用Boost::ptime构建高精度计时器
    static和extern
    通用js地址选择器
    js模拟抛出球运动
    前端用Webpact打包React后端Node+Express实现简单留言版
    webpack 打包一个简单react组件
    img及父元素(容器)实现类似css3中的background-size:contain / background-size:cover
    通用js函数集锦<来源于网络> 【二】
    通用js函数集锦<来源于网络/自己> 【一】
    向上滚动或者向下滚动分页异步加载数据(Ajax + lazyload)[上拉加载组件]
  • 原文地址:https://www.cnblogs.com/emmm233/p/10616021.html
Copyright © 2011-2022 走看看