命令参数
--user=USER 指定备份用户,不指定的话为当前系统用户
--password=PASSWD 指定备份用户密码
--port=PORT 指定数据库端口
--defaults-group=GROUP-NAME 在多实例的时候使用
--host=HOST 指定备份的主机,可以为远程数据库服务器
--apply-log 回滚日志
--database 指定需要备份的数据库,多个数据库之间以空格分开
--defaults-file 指定MySQL的配置文件
--copy-back 将备份数据复制回原始位置
--incremental 增量备份,后面跟要增量备份的路径
--incremental-basedir=DIRECTORY 增量备份时使用指向上一次的增量备份所在的目录
--incremental-dir=DIRECTORY 增量备份还原的时候用来合并增量备份到全量,用来指定全备路径
--redo-only 对增量备份进行合并
--rsync 加快本地文件传输,适用于non-InnoDB数据库引擎。不与--stream共用
--no-timestamp 生成的备份文件不以时间戳为目录.
--socket 指定连接时要使用的套接字使用UNIX域套接字连接到本地数据库服务器。该选项接受字符串参数。
--Prepare 需要对数据进行“预备”(Prepare)操作,使数据文件完全一致,然后才能用于数据恢复及在 InnoDB 中运行(prepare增量备份恢复时与全量备份不同,在全量备份时执行--prepare为了保证数据库一致,针对数据文件从日志文件重放已提交的事务,以及回滚未提交的事务。在增量时,必须跳过未提交事务的回滚,因为备份时未提交的事务可能正在进行中,很可能在下一次增量备份中提交,所以需要使用--apply-log-only选项来防止回滚阶段。)
--compress-threads 设置压缩线程数
--parallel 此选项指定在创建备份时用于同时复制多个数据文件的线程数。默认值为1(即没有并发传输)。在Percona XtraBackup 2.3.10及更高版本中,此选项可与选项一起使用以并行复制用户数据文件(重做日志和系统表空间在主线程中复制
--stream=name 将所有备份文件以指定格式流式传输到标准输出。目前支持的格式是xbstream和tar
--compress 此选项告诉xtrabackup使用指定的压缩算法压缩所有输出数据,包括事务日志文件和元数据文件。目前唯一支持的算法是quicklz。生成的文件具有qpress存档格式,即*.qpxtrabackup生成的每个文件本质上都是一个文件的qpress存档,可以通过qpress 文件存档提取和解压缩。
--compress-chunk-size 压缩线程的工作缓冲区大小(以字节为单位)。默认值为64K。
--decompress 使用.qp以前使用该选项进行的备份中的扩展名解压缩所有文件。该 选项将允许同时解密多个文件。为了解压缩,必须在路径中安装和访问qpress实用程序。Percona XtraBackup不会自动删除压缩文件。为了清理备份目录,用户应该使用选项。xtrabackup --compressxtrabackup --parallelxtrabackup --remove-original
--slave-info 该选项表示对slave进行备份的时候使用,打印出master的名字和binlog pos,同样将这些信息以change master的命令写入xtrabackup_slave_info文件。可以通过基于这份备份启动一个从库。
--safe-slave-backup 该选项表示为保证一致性复制状态,这个选项停止SQL线程并且等到show status中的slave_open_temp_tables为0的时候开始备份,如果没有打开临时表,bakcup会立刻开始,否则SQL线程启动或者关闭知道没有打开的临时表。如果slave_open_temp_tables在--safe-slave-backup-timeount(默认300秒)秒之后不为0,从库sql线程会在备份完成的时候重启。
--no-timestamp 该选项可以表示不要创建一个时间戳目录来存储备份,指定到自己想要的备份文件夹
--rsync 该选项表示通过rsync工具优化本地传输,当指定这个选项,innobackupex使用rsync拷贝非Innodb文件而替换cp,当有很多DB和表的时候会快很多,不能--stream一起使用。
--no-lock 该选项表示关闭FTWRL的表锁,只有在所有表都是Innodb表并且不关心backup的binlog pos点,如果有任何DDL语句正在执行或者非InnoDB正在更新时(包括mysql库下的表),都不应该使用这个选项,后果是导致备份数据不一致,如果考虑备份因为获得锁失败,可以考虑--safe-slave-backup立刻停止复制线程。
--tmpdir 该选项表示指定--stream的时候,指定临时文件存在哪里,在streaming和拷贝到远程server之前,事务日志首先存在临时文件里。在 使用参数stream=tar备份的时候,你的xtrabackup_logfile可能会临时放在/tmp目录下,如果你备份的时候并发写入较大的话 xtrabackup_logfile可能会很大(5G+),很可能会撑满你的/tmp目录,可以通过参数--tmpdir指定目录来解决这个问题。
--history 该选项表示percona server 的备份历史记录在percona_schema.xtrabackup_history表。
--incremental 该选项表示创建一个增量备份,需要指定--incremental-basedir。
--incremental-basedir 该选项表示接受了一个字符串参数指定含有full backup的目录为增量备份的base目录,与--incremental同时使用。
--incremental-dir 该选项表示增量备份的目录。
--incremental-force-scan 该选项表示创建一份增量备份时,强制扫描所有增量备份中的数据页。
--incremental-lsn 该选项表示指定增量备份的LSN,与--incremental选项一起使用。
--incremental-history-name 该选项表示存储在PERCONA_SCHEMA.xtrabackup_history基于增量备份的历史记录的名字。Percona Xtrabackup搜索历史表查找最近(innodb_to_lsn)成功备份并且将to_lsn值作为增量备份启动出事lsn.与innobackupex--incremental-history-uuid互斥。如果没有检测到有效的lsn,xtrabackup会返回error。
--incremental-history-uuid 该选项表示存储在percona_schema.xtrabackup_history基于增量备份的特定历史记录的UUID。
--close-files 该选项表示关闭不再访问的文件句柄,当xtrabackup打开表空间通常并不关闭文件句柄目的是正确的处理DDL操作。如果表空间数量巨大,这是一种可以关闭不再访问的文件句柄的方法。使用该选项有风险,会有产生不一致备份的可能。
--compact 该选项表示创建一份没有辅助索引的紧凑的备份。
--throttle 该选项表示每秒IO操作的次数,只作用于bakcup阶段有效。apply-log和--copy-back不生效不要一起用。
xtrabackup 和 innobackupex 命令区别?
xtrabackup可以在不加锁的情况下备份innodb数据表,不过此工具不能操作myisam。
innobackupex是一个封装了xtrabackup的脚本,能同时处理innodb和myisam,但在处理myisam时需要加一个读锁。
全备份
innobackupex --backup --user=root --password=123456 --socket=/tmp/mysql.sock --parallel=4 /data0/backup
全备还原
准备命令
innobackupex --apply-log 备份路径
保证mysql data 目录是空的再执行还原命令 需要将还原数据库关闭
innobackupex --copy-back 备份路径
*这一步很重要没有这步数据库是启动不起来的
chown -R mysql:mysql 数据库data目录
在启动数据库
service mysql start
增量备份
innobackupex --user=数据库名 --password=密码 --socket=/tmp/mysql.sock --incremental 增量备份路径 --incremental-basedir=全量备份路径
增量还原
#预备全量备份
xtrabackup --prepare --apply-log-only --target-dir=/data0/backup/2022-03-10_16-57-27/
#预备全量和增量合并
xtrabackup --prepare --apply-log-only --target-dir=/data0/backup/2022-03-10_16-57-27/ --incremental-dir=/data0/backup/inc/2022-03-10_17-17-35/
#再预备合并后的全备数据
xtrabackup --prepare --target-dir=/data0/backup/2022-03-10_16-57-27/
#开始还原 最后启动数据库之前一定要授权mysql data文件
innobackupex --copy-back /data0/backup/2022-03-10_16-57-27/
压缩备份全量 进行二进制打包
#二进制
innobackupex --user=root --password=123456 --socket=/tmp/mysql.sock --backup --compress-threads=4 --stream=xbstream --compress \ >/data0/backup/`date +%Y-%m-%d-%H-%M`.xbstream
#tar 2.4版本不支持
innobackupex --user=root --password=123456 --socket=/tmp/mysql.sock --backup --compress --compress-threads=4 --stream=tar /backup/full/|gzip>/data0/backup/`date +%Y-%m-%d-%H-%M`.tar
解压
xbstream -x < /data0/backup/2022-03-10-19-39.xbstream -C /data/backup/
#每个qp文件解压
xtrabackup --decompress --target-dir=备份路径
压缩增量备份
innobackupex --user=root --password=123456 --socket=/tmp/mysql.sock --incremental-basedir=/data0/backup/2022-03-10_21-24-45/ --incremental --stream=xbstream --compress \ > /data0/backup/inc/test.xbstream
问题:
error: This incremental backup seems not to be proper for the target. xtrabackup: Check 'to_lsn' of the target and 'from_lsn' of the incremental.
全量备份中的to_LSN号和增量备份中的checkpoints的to_lsn号相同 如果做多次增量备份时,需要在每次做完增量备份后使用--prepare --apply-log-only将增量部分合并到全量备份中,否则会报lsn冲突
sh: qpress: 未找到命令 cat: 写入错误: 断开的管道?
原因是没有qpress 工具需要下载安装
step 1
Step 2 解压下载
因为是tar文件,如果目标服务器没有相应的解压软件,可以上传前,本地解压。
Step 3 上传至指定 服务器
Step 4 将上传文件中的 qpress 复制到 /usr/bin 下
cp qpress /usr/bin
chmod 755 qpress