zoukankan      html  css  js  c++  java
  • xtrabakcup基本用法 安装、全量备份恢复、增量备份恢复

    xtrabackup备份原理以及工作流程

    备份流程日志分析:
    1.##读取mysql配置文件
    2.## 扫描innodb日志lsn并复制inndodb系统表空间
    3.## 缓冲写出到数据文件并锁表
    4.## 开始复制非innodb表及相关文件
    5.## 结束复制非innodb表及相关文件
    6.## 强制将commit log刷新到redo,保证事务是完整的
    7.## 获取最新的lsn
    8.## 释放锁
    9.## 列出备份位置
    10.## 列出binlog的位置
    11.##备份mysql配置文件
    11.##备份结束

    备份原理

    InnoDB引擎很大程度上与Oracle类似,使用redo,undo机制,XtraBackup在备份的时候,以read-write模式打开innodb的数据文件,然后对其进行复制。与此同时,XtraBackup还有另外一个线程监视着transactions log,一旦log发生变化,就把变化过的log pages复制走,直到全部innoDB数据文件复制完成之后,停止监控log buffer及日志复制。如果log buffer没有及时写出将被日志的循环写特性覆盖。xtrabackup在启动时会记住log sequence number(LSN),然后一页一页地复制InnoDB的数据。

    xtrabackup在恢复期间对提交的事务前滚,未提交或失败的事务进行回滚,从而保证数据的一致性。因此对于InnoDB表在备份期间不会锁表。由于XtraBackup其内置的InnoDB库打开文件的时候是rw的,所以运行XtraBackup的用户,必须对InnoDB的数据文件具有读写权限。

    补充:
    在备份innodb page的过程中,XtraBackup每次读写1MB的数据,1MB/16KB=64个page。这个不可配置。读1MB数据之 后,XtraBackup一页一页地遍历这1MB数据,使用innodb的buf_page_is_corrupted()函数检查此页的数据是否正常, 如果数据不正常,就重新读取这一页,最多重新读取10次,如果还是失败,备份就失败了,退出。在复制transactions log的时候,每次读写512KB的数据。同样不可以配置。

    安装和使用

    一:安装依赖关系
    1.rpm -qa |grep xtrabackup
    2.wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo
    下载软件包并安装
    3.wget https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.4.4/binary/redhat/6/x86_64/percona-xtrabackup-24-2.4.4-1.el6.x86_64.rpm
    4.yum -y install percona-xtrabackup-24-2.4.4-1.el6.x86_64.rpm
    二:全量备份、恢复

    创建备份目录 backup
    全量备份:
    xtrabackup --backup --target-dir=/dbdata/backup/ --user=root --password='!QAZ1qaz123' --host=127.0.0.1
    全量恢复:
    xtrabackup --prepare --target-dir=/dbdata/backup/      --数据保持一致性
    mv data data_bak
    xtrabackup --copy-back --target-dir=/dbdata/backup/ --配置文件定义data目录可以这样执行,会自动生成一个data目录,修改属主,属组后可启动数据库
    三:增量备份、恢复
    先做一个全量备份
    xtrabackup --backup --target-dir=/dbdata/backup/base --user=root --password='!QAZ1qaz123' --host=127.0.0.1
    第一次增量
    xtrabackup --backup --target-dir=/dbdata/backup/inc1 --incremental-basedir=/dbdata/backup/base --user=root --password='!QAZ1qaz123' --host=127.0.0.1
    第二次增量
    xtrabackup --backup --target-dir=/dbdata/backup/inc2 --incremental-basedir=/dbdata/backup/inc1 --user=root --password='!QAZ1qaz123' --host=127.0.0.1

    增量恢复
    先执行数据一致性 prepare 注释:--apply-log-only 只恢复已提交的数据
    prepare全量备份
    xtrabackup --prepare --apply-log-only --target-dir=/dbdata/backup/base
    prepare第一次增量
    xtrabackup --prepare --apply-log-only --target-dir=/dbdata/backup/base --incremental-dir=/dbdata/backup/inc1
    prepare第二次增量
    xtrabackup --prepare --target-dir=/dbdata/backup/base --incremental-dir=/dbdata/backup/inc2
    prepare完成后,进行恢复
    xtrabackup --copy-back --target-dir=/dbdata/backup/base

    注:执行这步时会根据配置文件自动创建一个数据目录,需修改属主属组方可启动数据库,至此增量恢复完成

  • 相关阅读:
    Mysql的join语句
    Excel的VLOOKUP函数
    python求极值点(波峰波谷)
    python多项式拟合:np.polyfit 和 np.polyld
    hdfs显示、查看、下载、上传、删除文件操作
    pip备份、安装requirements.txt中的包和anaconda的安装(linux)
    spark-submit提交任务到集群,分发虚拟环境和第三方包
    VLAN实验3:理解Hybrid接口的应用
    VLAN实验2:配置Trunk接口
    WLAN实验1:划分不同VLAN及Acess配置
  • 原文地址:https://www.cnblogs.com/zhs0/p/10518431.html
Copyright © 2011-2022 走看看