zoukankan      html  css  js  c++  java
  • 全备+binlog方式将数据库恢复至指定位置

    生产环境中会出现误删数据,使用增备又无法恢复到指定位置。可以通过全备+binlog server方式将数据库恢复至指定位置。

    环境描述:

    1.将3316实例全备,apply好的数据拷贝到数据库:

    [root@bogon backup]# ll
    总用量 2586672
    -rw-r-----. 1 root root        387 7月  26 17:27 backup-my.cnf
    drwx------. 2 root root       4096 7月  26 17:27 employees
    -rw-r-----. 1 root root 1073741824 7月  26 17:30 ibdata1
    -rw-r--r--. 1 root root  524288000 7月  26 17:30 ib_logfile0
    -rw-r--r--. 1 root root  524288000 7月  26 17:29 ib_logfile1
    -rw-r--r--. 1 root root  524288000 7月  26 17:30 ib_logfile2
    drwx------. 2 root root       4096 7月  26 17:27 mysql
    drwx------. 2 root root       4096 7月  26 17:27 performance_schema
    -rw-r-----. 1 root root         21 7月  26 17:27 xtrabackup_binlog_info
    -rw-r--r--. 1 root root         26 7月  26 17:29 xtrabackup_binlog_pos_innodb
    -rw-r-----. 1 root root        117 7月  26 17:29 xtrabackup_checkpoints
    -rw-r-----. 1 root root        502 7月  26 17:27 xtrabackup_info
    -rw-r-----. 1 root root    2097152 7月  26 17:29 xtrabackup_logfile
    drwx------. 2 root root       4096 7月  26 17:27 zhangshuo
    [root@bogon backup]# mv * /data/mysql/mysql3318/data/

    2.启动3318实例并查看zhangshuo库:

    [root@bogon backup]# /usr/local/mysql/bin/mysqld --defaults-file=/usr/local/mysql/my3318.cnf &
    root@localhost:mysql3318.sock  17:55:40 [(none)]>use zhangshuo;
    Database changed
    root@localhost:mysql3318.sock  17:55:44 [zhangshuo]>select * from zs;
    Empty set (0.03 sec)

    3.将3316实例binlog文件拷贝到新实例3318并查找到误删数据的起始位置:

    [root@bogon backup]# cp -p /data/mysql/mysql3316/logs/mysql-bin.* /binlog/
    
    [root@bogon data]# /usr/local/mysql/bin/mysqlbinlog -v --base64-output=decode-rows /binlog/mysql-bin.000014 
    
    BEGIN
    /*!*/;
    # at 197
    #160726 17:54:45 server id 1283316  end_log_pos 250 CRC32 0xc6b65dcb    Table_map: `zhangshuo`.`zs` mapped to number 70
    # at 250
    #160726 17:54:45 server id 1283316  end_log_pos 301 CRC32 0xf809a3da    Write_rows: table id 70 flags: STMT_END_F
    ### INSERT INTO `zhangshuo`.`zs`
    ### SET
    ###   @1=1
    ###   @2='zhangshuo'
    # at 301
    #160726 17:54:45 server id 1283316  end_log_pos 332 CRC32 0x7f925ebd    Xid = 54
    COMMIT/*!*/;

    可以看到误删数据begin位置197和commit位置301.

    4.在新实例3318 zhangshuo库中将数据恢复:

    [root@bogon data]# /usr/local/mysql/bin/mysqlbinlog --start-position=197 --stop-position=301 /binlog/mysql-bin.000014 |/usr/local/mysql/bin/mysql -S /tmp/mysql3318.sock zhangshuo
    root@localhost:mysql3318.sock  18:12:39 [zhangshuo]>select * from zs;
    +------+-----------+
    | id   | name      |
    +------+-----------+
    |    1 | zhangshuo |
    +------+-----------+
    1 row in set (0.00 sec)

    至此,数据恢复成功。

    远程备份binlog文件:

    /usr/local/mysql/bin/mysqlbinlog  --read-from-remote-server --host=192.168.1.113 --user=repl --password=repl --port=3316 --raw  --stop-never  mysql-bin.000001 --result-file=/binlog/master3316/ 

     --read-from-remote-server    #远程备份mysql binlog的核心选项

    --raw    #使用该选项,mysqlbinlog将获取的二进制日志原原本本的记录到磁盘,若不是用会生成变换为文本形式的二进制文件

    --stop-never    #只要远程服务器未关闭,或连接未断开,将会持续不断的复制远程服务器的二进制日志

    --result-file    #指定备份目录,也可以将选项设置为/backup/master-xxxx 

  • 相关阅读:
    第07组 Beta冲刺(2/5)
    第07组 Beta冲刺(1/5)
    第07组 Alpha事后诸葛亮
    第07组 Alpha冲刺(6/6)
    【Beta】软件使用说明——致社长
    【Beta】“北航社团帮”发布声明——小程序v2.0与网页端v1.0
    【Beta】“北航社团帮”测试报告——小程序v2.0与网页端v1.0
    [技术博客] 小程序扫码登录网页端原理
    [技术博客] 用户验证码验证机制---redis缓存数据库的使用
    [技术博客] 如何避免在代码中多重render
  • 原文地址:https://www.cnblogs.com/xxmysql/p/5708534.html
Copyright © 2011-2022 走看看