zoukankan      html  css  js  c++  java
  • xtrabackup备份恢复

    xtrabackup全备恢复

    xtrabackup全备

    innobackupex --user=root --password=123456 --no-timestamp /data/full/      #备份
    

    xtrabackup全备恢复

    1.执行 --apply-log
    2.清空损坏目录,cp复制回去。或者指向datadir备份目录。(或者使用innobackupex --copy-back)
    3.datadir授权mysql用户

    innobackupex --apply-log /data/full/ #模拟了CSR的全过程,在恢复之前,将数据的LSN号和redo LSN号追平
    innobackupex --copy-back /data/full/ 
    chown mysql.mysql -R /data/3306/
    systemctl start mysqld
    

    xtrabackup增量备份恢复

    模拟数据:

    create database full charset utf8mb4;
    use full;
    create table t1 (id int);
    insert into t1 values(1),(2),(3);
    commit;
    

    全备:

    innobackupex --user=root --password=123456 --no-timestamp /data/full
    

    模拟周一的数据变化:

    create database inc1 charset utf8mb4;
    use inc1;
    create table t1 (id int);
    insert into t1 values(1),(2),(3);
    commit;
    

    进行周一的增量备份:

    innobackupex --user=root --password=123456 --no-timestamp --incremental --incremental-basedir=/data/full /data/inc1
    

    模拟周二数据变化

    create database inc2 charset utf8mb4;
    use inc2;
    create table t1 (id int);
    insert into t1 values(1),(2),(3);
    commit;
    

    进行周二的增量备份:

    innobackupex --user=root --password=123456 --no-timestamp --incremental --incremental-basedir=/data/inc1 /data/inc2
    

    周三的数据变化

    create database inc3 charset utf8mb4;
    use inc3;
    create table t1 (id int);
    insert into t1 values(1),(2),(3);
    commit;
    

    模拟上午10点数据库崩溃
    rm -rf /data/3306/
    恢复思路

    1. 停业务,挂维护页
    2. 查找可用备份并处理备份:full+inc1+inc2
    3. binlog: inc2 到 故障时间点的binlog
    4. 恢复全备+增量+binlog
    5. 验证数据
    6. 起业务,撤维护页

    恢复前的准备
    (1) 整理full
    innobackupex --user=root --password=123456 --apply-log --redo-only /data/full/

    (2) 合并inc1到full,并整理备份
    innobackupex --user=root --password=123456 --apply-log --redo-only --incremental-dir=/data/inc1/ /data/full/

    (3) 合并inc2到full,并整理备份
    innobackupex --user=root --password=123456 --apply-log --incremental-dir=/data/inc2/ /data/full/

    (4) 最后一次整理full

    innobackupex --user=root --password=123456 --apply-log  /data/full
    mv /data/full/ /data/3306
    chown -R mysql.mysql 3306/
    

    截取二进制日志

    #起点:
    [root@WANGXIANG data]# cat /data/inc2/xtrabackup_binlog_info 
    mysql-bin.000009	1779	275d1a27-cfe9-11ea-9c4f-000c294f7b08:1-4,
    5f40d9c9-d184-11ea-becd-000c294f7b08:1-9,
    bb6b0c36-d16c-11ea-a900-000c294f7b08:1-9,
    cb151102-cfe7-11ea-b567-000c294f7b08:1  #这里有很多行说明记录的是binlog没有记录数据的起始点,不是备份起始点
    
    #起点:
    [root@WANGXIANG ~]# mysqlbinlog /binlog/3306/mysql-bin.000009|grep 'SET @@'
    /*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=1*/;
    SET @@SESSION.GTID_NEXT= '5f40d9c9-d184-11ea-becd-000c294f7b08:3'/*!*/; #起始点
    ......
    SET @@SESSION.GTID_NEXT= '5f40d9c9-d184-11ea-becd-000c294f7b08:13'/*!*/; #终点
    SET @@SESSION.GTID_NEXT= 'AUTOMATIC' /* added by mysqlbinlog */ /*!*/;
    /*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=0*/;
    
    mysqlbinlog --skip-gtids --include-gtids='5f40d9c9-d184-11ea-becd-000c294f7b08:3-13' /binlog/3306/mysql-bin.000009 > /data/bin.sql
    
    mysql> set sql_log_bin=0;
    mysql> source /data/bin.sql;
    
    
    #验证数据
    mysql> select * from full.t1;
    mysql> select * from inc1.t1;
    mysql> select * from inc2.t1;
    mysql> select * from inc3.t1;
    
  • 相关阅读:
    pstree
    gvisor vfs2
    gvisor entersyscall exitsyscall
    gvisor在arm64下syscall.SIGILL信号处理
    SpringBlade 为id添加自增长属性
    SQL Server Update 一个列的数据为随机数
    SpringBlade Saber 关闭验证码
    SpringBlade Saber 用户列表的新增按钮 是怎么个显示原理
    SpringBlade Saber 切换标签页 不刷新
    SpringBlade 00 常见问题汇总
  • 原文地址:https://www.cnblogs.com/wangxiang135/p/13398922.html
Copyright © 2011-2022 走看看