• mysql增量恢复


    老男孩教育(www.oldboyedu.com) xtrabackup
    中小企业MySQL Xtrabackup物理增量恢复案例实战
    条件:
     1.具备全量备份(xtrabckup备份的全备)。
     2.具备全量之后的所有增量备份(xtrabckup备份的增量)。
     3.具备最后一次增量备份以后的所有MySQL的Binlog增量日志。

    1、模拟数据
    use oldboy
    delete from test;
    insert into test values(1,'full01');
    insert into test values(2,'full02');
    insert into test values(3,'full03');
    insert into test values(4,'full04');
    insert into test values(5,'full05');

    检查:
    select * from test;


    2、2017/06/26(周一) 0点全量备份
    date -s "2017/06/26"
    innobackupex --defaults-file=/etc/my.cnf --user=root --password=oldboy123 --socket=/application/mysql-5.6.34/tmp/mysql.sock --no-timestamp /server/backup/new_base_full

    数据库继续更新:
    mysql -e "use oldboy;insert into test values(6,'new_inc_one_1');"
    mysql -e "use oldboy;insert into test values(7,'new_inc_one_2');"
    mysql -e "select * from oldboy.test;"

    3、2017/06/27(周二) 0点增量备份
    第一次增量备份
    date -s "2017/06/27"
    innobackupex --defaults-file=/etc/my.cnf --user=root --password=oldboy123 --socket=/application/mysql-5.6.34/tmp/mysql.sock --no-timestamp --incremental-basedir=/server/backup/new_base_full --incremental /server/backup/new_one_inc

    数据库继续更新:
    mysql -e "use oldboy;insert into test values(8,'binlog_data_1');"
    mysql -e "use oldboy;insert into test values(9,'binlog_data_2');"
    mysql -e "select * from oldboy.test;"


    4、2018/06/28(周三) 0点增量备份

    第二次增量备份
    date -s "2017/06/28"
    innobackupex --defaults-file=/etc/my.cnf --user=root --password=oldboy123 --socket=/application/mysql-5.6.34/tmp/mysql.sock --no-timestamp --incremental-basedir=/server/backup/new_one_inc --incremental /server/backup/new_two_inc

    数据库继续更新:
    mysql -e "use oldboy;insert into test values(10,'realbinlog_data_3');"
    mysql -e "use oldboy;insert into test values(11,'realbinlog_data_4');"
    mysql -e "select * from oldboy.test;"

    5、2018/06/28(周上)-10点出故障了

    mysql -e "use oldboy;update test set name='oldboy';"
    mysql -e "select * from oldboy.test;"


    6、开始恢复

    a.建议停库:
    最好用iptables
    iptables -I INPUT -p tcp --dport 3306 -j DROP
    /etc/init.d/mysqld stop

    b.恢复数据库:合并数据文件
    innobackupex --apply-log --use-memory=32M --redo-only /server/backup/new_base_full/
    innobackupex --apply-log --use-memory=32M --redo-only --incremental-dir=/server/backup/new_one_inc /server/backup/new_base_full/
    innobackupex --apply-log --use-memory=32M --incremental-dir=/server/backup/new_two_inc /server/backup/new_base_full/

    数据文件准备完毕.

    7、开始正式恢复
    cd /application/mysql
    mv data data.ori
    cp -a /server/backup/new_base_full data
    chown -R mysql.mysql data
    ================偷偷的看一下======================
    [root@db02 mysql]# /etc/init.d/mysqld start
    Starting MySQL.... SUCCESS!
    [root@db02 mysql]# mysql -e "select * from oldboy.test;"
    +----+---------------+
    | id | name |
    +----+---------------+
    | 1 | full01 |
    | 2 | full02 |
    | 3 | full03 |
    | 4 | full04 |
    | 5 | full05 |
    | 6 | new_inc_one_1 |
    | 7 | new_inc_one_2 |
    | 8 | binlog_data_1 |
    | 9 | binlog_data_2 |
    +----+---------------+
    [root@db02 mysql]# /etc/init.d/mysqld stop
    Shutting down MySQL.. SUCCESS!
    ==================================================


    8、处理binlog(00-10点数据)
    a.查看binlog位置点
    [root@db02 mysql]# cat /server/backup/new_two_inc/xtrabackup_binlog_info
    oldboy-bin.000011 2399

    b.解析binlog
    cd /application/mysql/logs/
    mysqlbinlog -d oldboy --start-position=2399 oldboy-bin.000011 -r bin1.sql
    mysqlbinlog -d oldboy oldboy-bin.000006 >>bin1.sql
    (根据你的情况调整)

    本次不用操作,但工作中可能有会有很多个binlog文件.
    #mysqlbinlog -d oldboy oldboy-bin.000012 oldboy-bin.000013 oldboy-bin.000014 >>bin2.sql

    c.删除错误的update一行。update test set name='oldboy'
    grep update bin1.sql
    sed -i "/update test set name='oldboy'/d" bin1.sql
    grep update bin1.sql

    d.开始恢复
    iptables -I INPUT -p tcp --dport 3306 -j DROP
    /etc/init.d/mysqld start


    e.导入binlog
    mysql oldboy <bin1.sql
    检查:
    [root@db02 logs]# mysql -e "select * from oldboy.test;"
    +----+-------------------+
    | id | name |
    +----+-------------------+
    | 1 | full01 |
    | 2 | full02 |
    | 3 | full03 |
    | 4 | full04 |
    | 5 | full05 |
    | 6 | new_inc_one_1 |
    | 7 | new_inc_one_2 |
    | 8 | binlog_data_1 |
    | 9 | binlog_data_2 |
    | 10 | realbinlog_data_3 |
    | 11 | realbinlog_data_4 |
    +----+-------------------+

    9.调整防火墙规则
    iptables -D INPUT -p tcp --dport 3306 -j DROP

    10.和开发/运营交流,检查数据恢复情况.
    专业故障恢复报告发邮件当面分享.
    over.

  • 相关阅读:
    c#2005中的各个控件转换为html代码
    支付宝接口参数详谈
    IE6兼容菜单
    cookie版购物车
    火狐执行子页面方法
    easyui中datebox文本框输入非数字报错的改善
    右侧悬浮菜单
    内边距、边框和外边距
    自我超越
    DateUtils 时间工具类
  • 原文地址:https://www.cnblogs.com/huangxiaohan/p/7809534.html
Copyright © 2020-2023  润新知