Percona Xtrabackup 8.0
0.percona xtrabackup 8.0概述: 0.1 1.移除了innobackupex命令 2.由于新的MySQL重做日志和数据字典格式,8.0版本只支持mysql8.0和percona8.0 3.早于mysql8.0的版本需要使用xtrabackup2.4备份和恢复. 0.2 支持的操作系统: RHEL / Centos 6.x RHEL / Centos 7.x Ubuntu 14.04 Trusty * Ubuntu 16.04 Xenial Ubuntu 18.04 Bionic Debian 8 Jessie * Debian 9 Stretch 1.安装: 由于使用的centos7版本直接使用rpm安装: ## wget http://repo.percona.com/experimental/7/RPMS/x86_64/percona-xtrabackup-80-8.0.1-2.alpha2.el7.x86_64.rpm #yum -y localinstall percona-xtrabackup-80-8.0.1-2.alpha2.el7.x86_64.rpm libenv Dependencies Resolved ===================================================================== Package Arch Version Repository Size ===================================================================== Installing: percona-xtrabackup-80 x86_64 8.0.1-2.alpha2.el7 /percona-xtrabackup- 80-8.0.1-2.alpha2.el7.x86_64 64 M Installing for dependencies: libev x86_64 4.15-7.el7 extras 44 k Transaction Summary ===================================================================== Install 1 Package (+1 Dependent package) 2.相关文件查询: # rpm -qa | grep -i xtrabackup percona-xtrabackup-80-8.0.1-2.alpha2.el7.x86_64 # rpm -ql percona-xtrabackup-80 /usr/bin/xbcloud /usr/bin/xbcloud_osenv /usr/bin/xbcrypt /usr/bin/xbstream /usr/bin/xtrabackup /usr/lib64/xtrabackup/plugin/keyring_file.so /usr/lib64/xtrabackup/plugin/keyring_vault.so /usr/share/doc/percona-xtrabackup-80-8.0.1 /usr/share/doc/percona-xtrabackup-80-8.0.1/LICENSE /usr/share/man/man1/innobackupex.1.gz /usr/share/man/man1/xbcrypt.1.gz /usr/share/man/man1/xbstream.1.gz /usr/share/man/man1/xtrabackup.1.gz --版本查询: # xtrabackup --version xtrabackup version 8.0.1 based on MySQL server 8.0.11 Linux (x86_64) (revision id: ) 这是目前为了兼容备份mysql8.0和percona server for mysql 8.0开发的备份软件。 我们可以看下此前最新的稳定版本: # rpm -qa | grep -i xtrabackup percona-xtrabackup-24-2.4.12-1.el7.x86_64 [root@node4 ~]# rpm -ql percona-xtrabackup-24 /usr/bin/innobackupex /usr/bin/xbcloud /usr/bin/xbcloud_osenv /usr/bin/xbcrypt /usr/bin/xbstream /usr/bin/xtrabackup /usr/lib64/xtrabackup/plugin/keyring_file.so /usr/lib64/xtrabackup/plugin/keyring_vault.so /usr/share/doc/percona-xtrabackup-24-2.4.12 /usr/share/doc/percona-xtrabackup-24-2.4.12/COPYING /usr/share/man/man1/innobackupex.1.gz /usr/share/man/man1/xbcrypt.1.gz /usr/share/man/man1/xbstream.1.gz /usr/share/man/man1/xtrabackup.1.gz [root@node4 ~]# xtrabackup --version xtrabackup: recognized server arguments: --datadir=/var/lib/mysql xtrabackup version 2.4.12 based on MySQL server 5.7.19 Linux (x86_64) (revision id: 170eb8c) [root@node4 ~]# 3.比对结论: 1.在8.0版本中将innobackupex命令剔除,保留了xbcloud、xbcloud_osenv、xbcrypt、xbstream和xtrabackup命令。 2. 编译的mysql版本不一样: 2.4版本是基于mysql5.7.19; 8.0版本是基于mysql8.0.11 由于mysql官方的分支存储引擎主要是innoDB了,innobackupex的意义不大了。 而MariaDB官方基于xtrabackup fork出来的分支支持MariaDB10.2+版本以上的备份,名字命名为mariabackup,使用 percona xtrabackup直接备份则备份和恢复不成功。 可以看到我们使用的备份恢复的命令主要是xtrabackup。 4.备份的命令说明: innobackupex:这个是其实是下面三个工具的一个perl脚本封装,可以备份MyISAM, InnoDB, XtraDB表。但在处理Myisam时需要加一个读锁。在2.4版本标记为deprated。8.0版本直接移除了此命令。 xtrabackup:一个由C编译而来的二进制文件,只能备份InnoDB和XtraDB数据。 xbcrypt:用来加密或解密备份的数据。 xbstream:用来解压或压缩xbstream格式的压缩文件。 5.xtrabackup 参数说明( xtrabackup --help) --print-defaults 输出mysql实例的参数配置信息 --no-defaults 不从任何配置文件中读取参数信息,除了登录文件 --defaults-file=# 仅从指定的配置文件读取参数 --defaults-extra-file=# 读取额外的配置信息文件 --defaults-group-suffix=# Also read groups with concat(group, suffix) --login-path=# 读取登录文件的路径 -v, --version 打印 xtrabackup版本信息 --target-dir=name 备份文件的目录,默认为当前目录xtrabackup_backupfiles/ --backup 备份操作,备份到target-dir指定的目录 --stats 计算datadir的统计信息(推荐mysqld离线)calc statistic of datadir (offline mysqld is recommended) --prepare 指定备份的prepare阶段 prepare a backup for starting mysql server on the backup. --export 当在prepare阶段创建文件到另外的一个数据库 create files to import to another database when prepare. --apply-log-only 一般情况下,在备份完成后,数据尚且不能用于恢复操作,因为备份的数据中可能会包含尚未提交的事务或已经提交但尚未同步至数据文件中的事务。因此,此时数据 文件仍处理不一致状态。--apply-log的作用是通过回滚未提交的事务及同步已经提交的事务至数据文件使数据文件处于一致性状态。 --print-param 输出mysqld copyback必须的参数print parameter of mysqld needed for copyback. --use-memory=# 备份的时候指定的内存,该选项表示和--apply-log选项一起使用,prepare 备份的时候,xtrabackup做crash recovery分配的内存大小,单位字节。也可(1MB,1M,1G,1GB),推荐1G。用于替代buffer_pool_size --throttle=# 和--backup一起使用,指定每秒操作读写对的数量。 --log[=name] 忽略MySQL选项兼容性的选项 --log-copy-interval=# 日志复制线程完成的检查之间的时间间隔(以毫秒为单位,默认为1秒)。 --extra-lsndir=name 和--backup一起使用,在当前目录保存一份额外的xtrabackup_checkpoints文件 --to-archived-lsn=# 指定prepare备份时apply事务日志的LSN,只能和xtarbackup --prepare选项一起用。 --tables=name 通过正则表达式过滤表 --tables-file=name 按文件中的精确的database.table名称列表进行筛选。 --databases=name 按照数据库进行过滤 --databases-file=name 按照文件中的数据进行过滤 --tables-exclude=name 操作方式和--tables一样,但是匹配的表名将不备份,此参数的优先级高于--tables. --databases-exclude=name 操作方式和--databases一样,但是匹配的库名将不被备份,优先级高于--databases. --create-ib-logfile 此参数当前不生效,无效参数 --stream=name 该选项表示流式备份的格式,backup完成之后以指定格式到STDOUT,目前只支持tar(8.0版本仅支持)和xbstream --decompress 该选项表示解压--compress选项压缩的文件,解压.qp扩展文件。 --compress[=name] 压缩所有输出数据,包括事务日志文件和元数据文件,通过指定的压缩算法,目前唯一支持的算法是quicklz.结果文件是qpress归档格式,每个xtrabackup创建的*.qp文件都可以通过qpress程序提取或者解压缩 --compress-threads=# 备份压缩的并行线程,默认为1.并行压缩('compress-threads')可以和并行文件拷贝('parallel')一起使用。例如:'--parallel=4 --compress --compress-threads=2'会创建4个IO线程读取数据并通过管道传送给2个压缩线程。 --compress-chunk-size=# 压缩线程工作buffer的字节大小,默认是64K --encrypt=name 该选项表示通过ENCRYPTION_ALGORITHM的算法加密innodb数据文件的备份,目前支持的算法有ASE128,AES192,AES256。 --encrypt-key=name 该选项使用合适长度加密key,因为会记录到命令行,所以不推荐使用。 --encrypt-key-file=name 该选项表示文件必须是一个简单二进制或者文本文件,加密key可通过以下命令行命令生成:openssl rand -base64 24。 --encrypt-threads=# 该选项表示并行加密的worker线程数量,默认为1. --encrypt-chunk-size=# 该选项表示每个加密线程worker buffer的大小,单位是字节,默认是64K。 --decrypt=name 该选项表示解密通过--encrypt选项加密的.xbcrypt文件。 --remove-original 当删除解密和解压完后删除 .qp and .xbcrypt 文件 --rebuild_indexes: 在apply事务日志之后重建innodb辅助索引,只有和--prepare一起才生效。 --rebuild_threads=#: 在紧凑备份重建辅助索引的线程数,只有和--prepare和rebuild-index一起才生效。 --close-files 该选项表示关闭不再访问的文件句柄,当xtrabackup打开表空间通常并不关闭文件句柄目的是正确的处理DDL操作。如果表空间数量巨大,这是一种可以关闭不再访问的文件句柄的方法。使用该选项有风险,会有产生不一致备份的可能。 --core-file Write core on fatal signals --copy-back 做数据恢复时将备份数据文件拷贝到MySQL服务器的datadir。 --move-back 这个选项与--copy-back相似,唯一的区别是它不拷贝文件,而是移动文件到目的地。这个选项移除backup文件,用时候必须小心。使用场景:没有足够的磁盘空间同事保留数据文件和Backup副本 注意: 1.datadir目录必须为空。除非指定innobackupex --force-non-empty-directorires选项指定,否则--copy-backup选项不会覆盖 2.在restore之前,必须shutdown MySQL实例,你不能将一个运行中的实例restore到datadir目录中 3.由于文件属性会被保留,大部分情况下你需要在启动实例之前将文件的属主改为mysql,这些文件将属于创建备份的用户 --galera-info 该选项表示生成了包含创建备份时候本地节点状态的文件xtrabackup_galera_info文件,该选项只适用于备份PXC。 --slave-info 该选项表示对slave进行备份的时候使用,打印出master的名字和binlog pos,同样将这些信息以change master的命令写入xtrabackup_slave_info文件。可以通过基于这份备份启动一个从库。 --no-lock 该选项表示关闭FTWRL的表锁,只有在所有表都是Innodb表并且不关心backup的binlog pos点,如果有任何DDL语句正在执行或者非InnoDB正在更新时(包括mysql库下的表),都不应该使用这个选项,后果是导致备份数据不一致,如果考虑备份因为获得锁失败,可以考虑--safe-slave-backup立刻停止复制线程。 --lock-ddl 若mysql serve支持在备份支持发出LOCK TABLES FOR BACKUP指令阻止所有的DDL操作。 --lock-ddl-timeout=# 若在指定时间内未返回值则终止备份。 --lock-ddl-per-table 在xtrabackup开始复制之前锁定每个表的DDL直到备份完成 --safe-slave-backup 该选项表示为保证一致性复制状态,这个选项停止SQL线程并且等到show status中的slave_open_temp_tables为0的时候开始备份,如果没有打开临时表,bakcup会立刻开始,否则SQL线程启动或者关闭知道没有打开的临时表。 --safe-slave-backup-timeout=# 如果slave_open_temp_tables在--safe-slave-backup-timeount(默认300秒)秒之后不为0,从库sql线程会在备份完成的时候重启。 --rsync 该选项表示通过rsync工具优化本地传输,当指定这个选项,innobackupex使用rsync拷贝非Innodb文件而替换cp,当有很多DB和表的时候会快很多,不能--stream一起使用。 --force-non-empty-directories 指定该参数时候,使得 --copy-back或--move-back选项转移文件到非空目录,已存在的文件不会被覆盖。如果--copy-back和--move-back文件需要从备份目录拷贝一个在datadir已经存在的文件,会报错失败。 --no-version-check 该选项关闭版本检查,当--version-check选项开启的时候。 --tables-compatibility-check 此选项开启表存储引擎兼容性告警,默认开启。可使用--skip-tables-compatibility-check关闭。 --no-backup-locks 该选项在backup阶段控制锁,替换FLUSH TABLES WITH READ LOCK命令。默认开启,关闭需使用参数--no-backup-locks。当mysql服务器不支持backup locks时候此参数无效。 -u, --user=name 备份的用户名 -H, --host=name 备份的IP地址 -P, --port=# 备份的端口 -p, --password[=name] 备份时用户的密码 -S, --socket=name 备份时连接的unix操作系统的socket文件 -h, --datadir=name 数据恢复时候的数据目录.从my.cnf中读取,或者命令行指定。 -t, --tmpdir=name 当使用--print-param指定的时候打印出正确的tmpdir参数。用于存储临时文件的路径,在轮训模式下可以指定多个路径,使用英文的:分隔 --parallel=# 指定备份时拷贝多个数据文件并发的进程数,默认值为1。 --log-bin[=name] binlog的日志序列 --incremental-lsn=name 和--backup一起使用。 --incremental-basedir=name 和--backup一起使用,仅拷贝.ibd中新增的数据到指定路径,增量备份. --incremental-dir=name 和--prepare一起使用,将.delta文件和logfile保存在指定的路径. --incremental-force-scan 该选项表示创建一份增量备份时,强制扫描所有增量备份中的数据页 --incremental-history-name:该选项表示存储在PERCONA_SCHEMA.xtrabackup_history基于增量备份的历史记录的名字。 Percona Xtrabackup搜索历史表查找最近(innodb_to_lsn)成功备份并且将to_lsn值作为增量备份启动出事lsn.与innobackupex--incremental-history-uuid、--incremental-basedir、--incremental-lsn互斥。 如果没有检测到有效的lsn,xtrabackup会返回error。 和选项--incremental一起使用。 --incremental-history-uuid:该选项表示存储在percona_schema.xtrabackup_history基于增量备份的特定历史记录的UUID。和选项--incremental一起使用。 --innobackupex遗留参数: --ftwrl-wait-query-type:该选项表示获得全局锁之前允许那种查询完成,默认是ALL,可选update。 --ftwrl-wait-threshold:该选项表示检测到长查询,单位是秒,表示长查询的阈值。若--ftwrl-wait-timeout=0此参数无效,默认值为60s。 --ftwrl-wait-timeout=# 此选项指定innobackupex在运行之前应等待阻止FTWRL的查询的时间(以秒为单位)。 如果超时到期时仍有此类查询,则innobackupex将终止并显示错误。 默认值为0,在这种情况下,innobackupex不会等待查询完成并立即启动FTWRL。 --kill-long-queries-timeout:该选项表示从开始执行FLUSH TABLES WITH READ LOCK到kill掉阻塞它的这些查询之间等待的秒数。默认值为0,不会kill任何查询,使用这个选项xtrabackup需要有Process和super权限。 --kill-long-query-type:该选项表示kill的类型,默认是all,可选select。 --history:该选项表示percona server 的备份历史记录在percona_schema.xtrabackup_history表。 --debug-sleep-before-unlock=# 仅用于xtrabackup测试套件的debug信息 --check-privileges 在执行查询之前检查数据库用户的权限。 --- 安全备份的参数: --server-public-key-path=name File path to the server public RSA key in PEM format. --server-public-key-path=name File path to the server public RSA key in PEM format. --get-server-public-key Get server public key --ssl-mode=name SSL connection mode. --ssl-ca=name CA file in PEM format. --ssl-capath=name CA directory. --ssl-cert=name X509 cert in PEM format. --ssl-cipher=name SSL cipher to use. --ssl-key=name X509 key in PEM format. --ssl-crl=name Certificate revocation list. --ssl-crlpath=name Certificate revocation list path. --tls-version=name TLS version to use, permitted values are: TLSv1, TLSv1.1,TLSv1.2 --ssl-fips-mode=name SL FIPS mode to use, permitted values are: OFF, ON,STRICT --innoDB的相关参数: --read-buffer-size[=#] Set datafile read buffer size, given value is scaled up to page size. Default is 10Mb. --innodb[=name] Ignored option for MySQL option compatibility --innodb-adaptive-hash-index Enable InnoDB adaptive hash index (enabled by default). Disable with --skip-innodb-adaptive-hash-index. (Defaults to on; use --skip-innodb-adaptive-hash-index to disable.) --innodb-autoextend-increment=# Data file autoextend increment in megabytes --innodb-buffer-pool-size=# The size of the memory buffer InnoDB uses to cache data and indexes of its tables. --innodb-checksums Enable InnoDB checksums validation (enabled by default). Disable with --skip-innodb-checksums. (Defaults to on; use --skip-innodb-checksums to disable.) --innodb-data-file-path=name Path to individual files and their sizes. --innodb-data-home-dir=name The common part for InnoDB table spaces. --innodb-doublewrite Enable InnoDB doublewrite buffer (enabled by default). Disable with --skip-innodb-doublewrite. (Defaults to on; use --skip-innodb-doublewrite to disable.) --innodb-io-capacity[=#] Number of IOPs the server can do. Tunes the background IO rate --innodb-file-io-threads=# Number of file I/O threads in InnoDB. --innodb-read-io-threads=# Number of background read I/O threads in InnoDB. --innodb-write-io-threads=# Number of background write I/O threads in InnoDB. --innodb-file-per-table Stores each InnoDB table to an .ibd file in the database dir. --innodb-flush-log-at-trx-commit[=#] Set to 0 (write and flush once per second), 1 (write and flush at each commit) or 2 (write at commit, flush once per second). --innodb-flush-method=name With which method to flush data. --innodb-force-recovery=# Helps to save your data in case the disk image of the database becomes corrupt. --innodb-log-buffer-size=# The size of the buffer which InnoDB uses to write log to the log files on disk. --innodb-log-file-size=# Size of each log file in a log group. --innodb-log-files-in-group=# Number of log files in the log group. InnoDB writes to the files in a circular fashion. Value 3 is recommended here. --innodb-log-group-home-dir=name Path to InnoDB log files. --innodb-max-dirty-pages-pct=# Percentage of dirty pages allowed in bufferpool. --innodb-open-files=# How many files at the maximum InnoDB keeps open at the same time. --innodb-use-native-aio Use native AIO if supported on this platform. --innodb-page-size=# The universal page size of the database. --innodb-log-block-size=# The log block size of the transaction log file. Changing for created log file is not supported. Use on your own risk! --innodb-doublewrite-file=name Path to special datafile for doublewrite buffer. (default is : not used) --innodb-buffer-pool-filename=name Filename to/from which to dump/load the InnoDB buffer pool --debug-sync=name Debug sync point. This is only used by the xtrabackup test suite --innodb-checksum-algorithm=name The algorithm InnoDB uses for page checksumming. [CRC32, STRICT_CRC32, INNODB, STRICT_INNODB, NONE, STRICT_NONE] --innodb-log-checksums Whether to compute and require checksums for InnoDB redo log blocks (Defaults to on; use --skip-innodb-log-checksums to disable.) --innodb-undo-directory=name Directory where undo tablespace files live, this path can be absolute. --innodb-undo-tablespaces=# Number of undo tablespaces to use. --innodb-redo-log-encrypt Enable or disable Encryption of REDO tablespace. --innodb-undo-log-encrypt Enable or disable Encrypt of UNDO tablespace. --defaults-group=name 该选项表示从配置文件读取的组默认为mysqld --open-files-limit=# 最大可以打开的文件数 --server-id=# 备份的mysql实例的ID --transition-key[=name] Transition key to encrypt tablespace keys with. --xtrabackup-plugin-dir=name xtrabackup 插件的目录 --generate-new-master-key 当copy-back时候生master key --generate-transition-key 生产transition key并存储到keyring. 6.版本新增和移除的参数: 1.相比于2.4.12版本移除的参数: --compact:该选项表示创建一份没有辅助索引的紧凑的备份 --binlog-info[=name] --reencrypt-for-server-id=# --ssl Deprecated. Use --ssl-mode instead.(Defaults to on; use --skip-ssl to disable.) --ssl-verify-server-cert Deprecated. Use --ssl-mode=VERIFY_IDENTITY instead. --innodb-log-arch-dir=name Where full logs should be archived. --innodb-fast-checksum --redo-log-version=# Redo log version of the backup. For --prepare only. --innodb-log-checksum-algorithm=name The algorithm InnoDB uses for log checksumming. [CRC32,STRICT_CRC32, INNODB, STRICT_INNODB, NONE, STRICT_NONE] 2.新增参数: --innodb-redo-log-encrypt Enable or disable Encryption of REDO tablespace. --innodb-undo-log-encrypt Enable or disable Encrypt of UNDO tablespace. --innodb-log-checksums Whether to compute and require checksums for InnoDB redo log blocks 。Defaults to on; use --skip-innodb-log-checksums to disable. --ssl-fips-mode=name SSL FIPS mode to use, permitted values are: OFF, ON,STRICT --server-public-key-path=name File path to the server public RSA key in PEM format. --get-server-public-key Get server public key 3.结论: xtrabackup命令在使用上和2.4.12版本在使用上变化不大,主要是增强了安全和修改了mysql8.0变更的参数。 7.结论: xtrabackup 8.0的帮助信息还有相当一部分保留了2.4.12版本中的innobackupex命令,8.0版本的备份软件还未正式发布。 静候GA版本发布。 8 参考: https://www.percona.com/blog/2018/10/09/announcement-second-alpha-build-of-percona-xtrabackup-8-0-is-available/ https://www.percona.com/blog/2018/09/12/announcement-experimental-build-of-percona-xtrabackup-8-0/
Percona XtraBackup 8.0 does not support making backups of databases created in versions prior to 8.0 of MySQL , Percona Server or Percona XtraDB Cluster . As the changes that MySQL 8.0 introduced in data dictionaries , redo log and undo log are incompatible with previous versions, it is currently impossible for Percona XtraBackup 8.0 to also support versions prior to 8.0.
Percona Xtrabackup 8.0不支持备份MySQL、Percona Server或Percona Xtradb群集8.0之前版本中创建的数据库。由于MySQL8.0在数据字典、重做日志和撤消日志中引入的更改与以前的版本不兼容,目前Percona Xtrabackup 8.0还不可能支持8.0之前的版本。