• innoback 参数及使用说明


    --defaults-file 
    同xtrabackup的--defaults-file参数,指定mysql配置文件; 
     
    --apply-log 
    对xtrabackup的--prepare参数的封装;
      
    --copy-back 
    做数据恢复时将备份数据文件拷贝到MySQL服务器的datadir,需先清空原有mysql的数据目录; 
      
    --remote-host=HOSTNAME 
    通过ssh将备份数据存储到进程服务器上; 
      
    --stream=[tar] 
      
    备份文件输出格式, tar时使用tar4ibd , 该文件可在XtarBackup binary文件中获得.如果备份时有指定--stream=tar, 则tar4ibd文件所处目录一定要在$PATH中(因为使用的是tar4ibd去压缩, 在XtraBackup的binary包中可获得该文件)。 
      
    在使用参数stream=tar备份的时候,你的xtrabackup_logfile可能会临时放在/tmp目录下,如果你备份的时候并发写入较大的话xtrabackup_logfile可能会很大(5G+),很可能会撑满你的/tmp目录,可以通过参数--tmpdir指定目录来解决这个问题。 
      
    --tmpdir=DIRECTORY 
      
    当有指定--remote-host or --stream时, 事务日志临时存储的目录, 默认采用MySQL配置文件中所指定的临时目录tmpdir 
      
    --redo-only --apply-log组, 
      
    强制备份日志时只redo ,跳过rollback。这在做增量备份时非常必要,增量备份需要使用该命令。 
      
    --use-memory=# 
    该参数在prepare的时候使用,控制prepare时innodb实例使用的内存量 
      
    --throttle=IOS 
    同xtrabackup的--throttle参数 
      
    --sleep=是给ibbackup使用的,指定每备份1M数据,过程停止拷贝多少毫秒,也是为了在备份时尽量减小对正常业务的影响,具体可以查看ibbackup的手册 ; 
      
    --compress[=LEVEL] 
    对备份数据迚行压缩,仅支持ibbackup,xtrabackup还没有实现; 
      
    --include=REGEXP 
    对xtrabackup参数--tables的封装,也支持ibbackup。备份包含的库表,例如:--include="test.*",意思是要备份test库中所有的表。如果需要全备份,则省略这个参数;如果需要备份test库下的2个表:test1和test2,则写成:--include="test.test1|test.test2"。也可以使用通配符,如:--include="test.test*"。 
      
    --databases=LIST 
    列出需要备份的databases,如果没有指定该参数,所有包含MyISAM和InnoDB表的database都会被备份; 
      
    --uncompress 
    解压备份的数据文件,支持ibbackup,xtrabackup还没有实现该功能; 
      
    --slave-info, 
    备份从库, 加上--slave-info备份目录下会多生成一个xtrabackup_slave_info 文件, 这里会保存主日志文件以及偏移, 文件内容类似于:CHANGE MASTER TO MASTER_LOG_FILE='', MASTER_LOG_POS=0
      
    --socket=SOCKET 
    指定mysql.sock所在位置,以便备份进程登录mysql.


    mysqldump实战:
      
    背景环境:

    正在运行的网站系统,mysql数据库,数据量25G,日业务增量10-15M。
    备份方式:
    每天23:00点,计划任务调用mysqldump执行全备脚本
    故障时间点:
    上午10点,误删除了一个表 
    



    恢复思路:
    0. 挂出维护页面
    1. 找测试库
    2. 恢复全备到测试库
    3. 截取二进制日志到误删除时间点,恢复到测试库
    起点:master-data=2,找备份文件,获取到日志名字和位置号
    终点:分析最后一个binlog,找到误删除事件的位置点
    4. 验证数据,将故障表导出,导入会生产库
    5. 开启业务
    
    
    
    


    模拟故障
    1. 模拟昨天的全备
    mysqldump -uroot -p -A -R --triggers --master-data=2 --single-transaction>all.sql 
    

    2.

    2. 模拟白天的业务
    create database baidu charset utf8;
    use baidu;
    create table t1 (id int);
    insert into t1 values(1),(2),(3);
    commit;
    insert into t1 values(11),(12),(13);
    commit;
    update t1 set id=10 where id=1;
    commit;
    

     3,删除一些数据

    4, 查看 备份文件第22行:

    -- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000016', MASTER_LOG_POS=425;
    


    截取二进制日志:

    mysql -uroot -p
    show binlog events in 'mysql-bin.000016'; >>>>>>>>1231
    


    5, 截取binlog

    mysqlbinlog --start-position=425 --stop-position=1231 /data/mysql/mysql-bin.000016 >/backup/binlog.sql 
    

    6.开始恢复

    set sql_log_bin=0;
    source /backup/all.sql
    source /backup/binlog.sql
    

      

    innobackupex实战
     
    innobackupex --user=root --password=123 --no-timestamp /backup/full   开始备份
    
     
    模拟备份:   
    kingle [(none)]>create database full charset utf8;
    kingle [(none)]>use full
    kingle[full]>create table t1(id int);
    kingle[full]>insert into t1 values(1),(2),(3);
    kingle[full]>commit;
    

    备份提交:
    innobackupex --user=root --password=123 --no-timestamp --incremental-basedir=/backup/full --incremental /backup/inc1
    
    --incremental-basedir=   : 上次备份的路径. 
    --incremental            :打开增量备份的功能 
    

     
    第二次数据模拟:
    create database inc1 charset utf8;
    use inc1
    create table t2(id int);
    insert into t2 values(1),(2),(3);
    commit;
    
     
    数据递交
    innobackupex --user=root --password=123 --no-timestamp --incremental-basedir=/backup/inc1 --incremental /backup/inc2
    
     
     
    数据故障启动!
     
    恢复开始:
    准备恢复
    innobackupex --apply-log --redo-only /backup/full/
    
    第一次增量合并并准备:
    innobackupex  --apply-log --redo-only  --incremental-dir=/backup/inc1  /backup/full
    
    第二次增量合并并准备:
    innobackupex  --apply-log  --incremental-dir=/backup/inc2 /backup/full   
    
    全备再次准备:
    innobackupex --apply-log /backup/full/
    
     
     
    数据传入数据库
    1. 停数据库
    pkill mysqld
    
    2. 删数据
    rm -rf /application/mysql/data/* 
    
    3.准备备份(使用redo前滚,使用undo回滚,保证数据一致性)
    innobackupex --apply-log /backup/full/
    
    4.恢复数据:
    cd /backup/full
    cp -a * /application/mysql/data/
    或者:
    innobackupex --copy-back /backup/full/
    
    
    5.改权限,起数据库
    
    chown -R mysql. /application/mysql/data/*
    /etc/init.d/mysqld start
    
     




  • 相关阅读:
    c#中使用SESSION需要注意的几个问题
    C#常见算法题目(面试准备)
    C# WinForm捕获未处理的异常
    c#生成注册码的两种方法(mac地址与IP地址)
    MVC3 IIS7部署记录
    c#4.0新特性之协变与逆变
    C#语言的几个层次
    C#的装箱和拆箱
    Windows下的Memcache安装
    在C#中读取枚举值的描述属性
  • 原文地址:https://www.cnblogs.com/kingle-study/p/10005527.html
Copyright © 2020-2023  润新知