• mysql系列~xtrabackup使用


    零 原理
       1 开启两个线程,一个线程拷贝innodb文件,一个线程拷贝redolog日志,redolog从最新的ckpt点开始拷贝日志
       2 拷贝完innodb文件,全局加ftwl锁,开始拷贝非innodb文件
       3 拷贝完非innodb文件,开始获取binlog的位置,并将binlog的点位信息写入文件中
       4 停止拷贝redolog日志的线程,释放全局锁
    一 参数讲解
      --slave-info 获取从库同步信息
      --safe-slave-backup 停止从库复制sql_thread进程,发生在全局FTDWRL锁上,完成后会打开sql_thread,时间过长可能导致日志记录复制异常警告
      --parallel 并行拷贝innodb文件,建议增大
      --compress 针对拷贝的innodb文件采取压缩
      --compress-threads 压缩线程数量
      --ftwrl-wait-timeout=SECONDS 等待ftwl锁,如果异常则推出
    二 备份参数
     1 实时备份
       innobackupex --defaults-file=/tmp/my.cnf --host=localhost --user=root --password=root --slave-info backupdir
     2 每日task
      innobackupex --defaults-file=/tmp/my.cnf --host=localhost --user=root --password=root --slave-info --safe-slave-backup --ftwrl-wait-timeout=120--stream=tar $backup_dir --parallel=6 2>$logfile|gzip > $gzip_file
    三 部分备份恢复
      目的 针对具体库/表实现迁移或者指定库从库 拷贝ibd等文件,然后discard,import 即可,每张表都需要新建,discard再import
      库备份 innobackupex   --defaults-file=/tmp/my.cnf  --databases="db1 db2 db3"--host=localhost --user=root --password=root --slave-info backupdir
      表备份 innobackupex  --defaults-file=/tmp/my.cnf   --include="db.table db.table" --host=localhost --user=root --password=root --slave-info backupdir
      还原 innobackupex --apply-log --export dir
      需要导入活动实例
      1 创建 单表的结构 create table
      2 禁用表空间 ALTER TABLE tablename DISCARD TABLESPACE;
      3 拷贝相关表文件指定库目录.ibd,cfg,frm文件
      4 重新授权chown -R mysql:mysql
      5 启用表空间 ALTER TABLE tablename IMPORT TABLESPACE;
      6 进行表数据查看
    四 检测是否正常
      1 日志过滤'complate ok'
      2 检测 echo $? 是否为0
    五 xtrabackup遇到过的最常见问题还是从因为慢查询导致的无法获取FTWL参数问题

  • 相关阅读:
    [bzoj5278][Usaco2018 Open]Out of Sorts
    CF480Div2掉分记
    [bzoj3759]Hungergame
    [bzoj4184]shallot
    [原]Golang FileServer
    golang thrift 源码分析,服务器和客户端究竟是如何工作的
    golang thrift 总结一下网络上的一些坑
    德州扑克AI WEB版
    德州扑克AI实现 TexasHoldem Poker
    德州扑克游戏
  • 原文地址:https://www.cnblogs.com/danhuangpai/p/16039199.html
Copyright © 2020-2023  润新知