zoukankan      html  css  js  c++  java
  • MySQL8.0备份工具之Xtrabackup

    随着MySQL 8.0的推出,Percona公司也相继推出了percona-xtrabackup-8.0,而原来的2.4版本也将继续支持MySQL和Percona Server 5.6和5.7数据库。

    由于MySQL 8.0在数据字典,重做日志和撤消日志中引入的更改与以前的版本不兼容,因此Percona XtraBackup 8.0 目前不支持8.0之前的版本。

    本文主要记录下xtrabackup8.0与原来旧版本的不同和使用。

    Usage: [xtrabackup [--defaults-file=#] --backup | xtrabackup [--defaults-file=#] --prepare] [OPTIONS]

    --target-dir   destination directory 备份的目标目录。如果目录不存在,xtrabackup将创建它。如果目录确实存在且为空,则xtrabackup将成功;xtrabackup不会覆盖现有的文件;会在操作系统层面报错,文件存在。

    --backup            take backup to target-dir 

    --prepare           prepare a backup for starting mysql server on the backup 为启动备份上的mysql服务器准备一个备份。(类似innobackupex --apply-log)

    --apply-log-only    此项较为重要。主要应用与增备,在常规备份中,执行两种操作以使数据库保持一致:从日志文件对数据文件重播已提交的事务,回滚未提交的事务。在准备备份时,必须跳过未提交事务的回滚,因为在备份时未提交的事务可能正在进行中,它们很可能在下一次增量备份中提交。您应该使用—apply-log-only选项来防止回滚阶段。

    警告:如果您不使用—apply-log-only选项来防止回滚阶段,那么您的增量备份将是无用的。事务回滚后,无法应用进一步的增量备份。

    --compress 该选项告诉xtrabackup使用指定的压缩算法压缩所有输出数据,包括事务日志文件和元数据文件。目前唯一支持的算法是quicklz。与--compress-threads配合使用。

    --compact 通过跳过二级索引页创建一个紧凑的备份。

    --compress-threads  此选项指定xtrabackup用于并行数据压缩的工作线程数量。该选项默认为1。并行压缩(压缩线程)可以与并行文件复制(并行)一起使用。例如,--parallel=4 --compress --compress-threads=2将创建4个I/O线程,读取数据并将其传输到2个压缩线程。

    --copy-back 将先前备份目录中的所有文件复制到其原始位置。除非指定强制非空目录选项,否则此选项不会复制现有文件。与MariaDB的Mariabackup的一项copy-back类似,做的时候确保datadir目录为空,你可以把原目录改个名字,再创建一个新的目录。

    --databases 此选项指定应该备份的数据库和表的列表,它支持database_name.table_name,比如只想备份test库下的su表,--databases=test.su。

    --databases-exclude 排除基于名称的数据库,基本语法与--databases相同,不想备份的数据库或表。注意点!此选项优先级高于--databases。

    --galera-info 该选项创建xtrabackup_galera_info文件,该文件包含备份时的本地节点状态。选项应该在执行Percona XtraDB集群备份时使用。

    --incremental  该选项告诉xtrabackup创建增量备份。它被传递给xtrabackup子进程。指定此选项后,还可以指定--incremental-lsn或--incremental-basedir。如果两个选项都没有提供,则默认情况下将option——incremental-basedir传递给xtrabackup,设置为备份基本目录中的第一个时间戳备份目录。与原来旧版本--incremental类似

    --slave-info 此选项在备份复制从属服务器时非常有用。它打印主服务器的二进制日志位置。它还将此信息作为更改主命令写入xtrabackup_slave_info文件。可以通过在这个备份上启动一个从服务器并发出一个CHANGE master命令来设置这个主服务器的新从服务器,该命令的二进制日志位置保存在xtrabackup_slave_info文件中。

    全量备份:

    xtrabackup --defaults-file=/etc/my.cnf  --user='xx' --password='xx' -S /tmp/mysql.sock --compress --compress-threads=2 --backup --target-dir=/opt/mydump/
    

    压缩模式需要先安装Percona自研的qpress压缩工具。

    yum install  https://repo.percona.com/yum/percona-release-latest.noarch.rpm  
    yum install qpress -y
    

    可以看一下备份出来的内容,如下图:

    都是以.qp为结尾的,不可读,也算是另一种加密了。

    解压

     for bf in `find . -iname "*.qp"`; do qpress -d $bf $(dirname $bf) && rm -f $bf; done
    

    恢复备份期间增量数据(这一步类似innobackupex --apply-log)

    xtrabackup  --prepare --target-dir=/opt/mydump/
    

    恢复

    ① 关闭mysqld进程

    ② 确保datadir目录为空,可以把原来的数据目录mv到其他地方

    ③ 恢复

    # xtrabackup --defaults-file=/etc/my.cnf --copy-back --target-dir=/opt/mydump/
    

    ④ 更改目录属性

    chown mysql:mysql -R /data/mysql
    

    ⑤ 启动mysqld进程

    增备(先建立一个全备):

    xtrabackup --backup --target-dir=/opt/mydump
    

    然后基于这个全备去做增备:

    xtrabackup --backup --target-dir=/opt/incr1 --incremental-basedir=/opt/mydump
    

    第二个增备:

    xtrabackup --backup --target-dir=/opt/incr2  --incremental-basedir=/opt/incr1
    

    应用第一个增备到全备:

    xtrabackup --prepare --apply-log-only --target-dir=/opt/mydump --incremental-dir=/opt/incr1
    

    应用第二个增备到全备(这个时候就不用加--apply-log-only了,至于理由与旧版本的增备相同):

    xtrabackup --prepare --target-dir=/opt/mydump --incremental-dir=/opt/incr2
    

    恢复过程与全备相同。

    https://www.linuxidc.com/Linux/2016-08/134535.htm

    https://www.percona.com/doc/percona-xtrabackup/2.4/howtos/recipes_ibkx_compressed.html

     

  • 相关阅读:
    Spring线程池由浅入深的3个示例
    ThreadPoolExecutor之一:使用基本介绍
    Spring中的线程池ThreadPoolTaskExecutor介绍
    ThreadPoolTaskExecutor异常收集
    SPRING中的线程池ThreadPoolTaskExecutor
    ThreadPoolTaskExecutor的配置解释
    jenkins邮件配置
    使用Jenkins配置自动化构建
    Hudson和Jenkins的关系
    PV 和 UV IP
  • 原文地址:https://www.cnblogs.com/guoweilf/p/12053173.html
Copyright © 2011-2022 走看看