暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

xtrabackup

原创 回首看不尽年华 2022-08-23
287

MySQL备份还原之xtrabackup

使用工具:xtrabackup (非mysql自带工具,需额外下载安装)

下载地址:https://www.percona.com/downloads/Percona-XtraBackup-LATEST/

Percona-xtrabackup是 Percona公司开发的一个用于MySQL数据库物理热备的备份工具,开源免费,是目前较为受欢迎的主流备份工具。

 

测试环境:

OS:CentOS7.8

DB:MySQL8.0.20 (二进制安装,部分目录已调整)

rpm:percona-xtrabackup-80-8.0.14-1.el7.x86_64.rpm

(安装后有xtrabackup、xbcloud、xbstream、xbcrypt、xbcloud_osenv、xbrlapi)

 

一、备份数据库

1、全备

xtrabackup --backup --target-dir=/mysql/backup/full --user=root --password=123456 --socket=/mysql/data/mysqld.sock

 

--backup:表示该操作为备份操作

--target-dir:指定备份文件的存放路径

--user:备份使用的数据库用户

--password:该用户的密码

--socket:指定socket启动文件路径

 

2、基于全备的增量备份

xtrabackup --backup --target-dir=/mysql/backup/increment01 --incremental-basedir=/mysql/backup/full --user=root --password=123456 --socket=/mysql/data/mysqld.sock

 

--incremental-basedir:表示在某个备份的基础上进行增量备份

 

 

3、在第一次增量备份的基础上进行增量备份

xtrabackup --backup --target-dir=/mysql/backup/increment02 --incremental-basedir=/mysql/backup/increment01  --user=root --password=123456 --socket=/mysql/data/mysqld.sock

 

 

二、恢复数据库

方式一:(恢复到全库,即只恢复到全备,不恢复增量备份)

1、关闭mysql

2、清空mysql的数据目录(清空前,请备份)

3、恢复数据库(将全备复制到数据目录下)

xtrabackup --copy-back --target-dir=/mysql/backup/full

--copy-back:将备份的数据copy至数据目录下(数据目录请查看参数文件my.cnf)

4、恢复后,需要将数据目录下恢复的文件重新赋予权限

chown -R mysql.mysql  /mysql/data

5、启动mysql

 

方式二:(恢复到增量备份,即在全备的基础上也恢复增量备份)

1、预恢复全量备份

xtrabackup --prepare --apply-log-only --target-dir=/mysql/backup/full

--prepare:表示还原,即恢复

--apply-log-only:表示不回滚事务,因为后面有基于全备的增量备份,所以不需要回滚,如果没有增量备份则去掉该参数

 

2、将第一次增备加载至全备中

xtrabackup --prepare --apply-log-only --target-dir=/mysql/backup/full --incremental-dir=/mysql/backup/increment01

 

3、将第二次增备份同样加载至全备中

xtrabackup --prepare  --target-dir=/mysql/backup/full --incremental-dir=/mysql/backup/increment02

因为这是最后一次恢复,所以需要回滚,即将未结束的事务回滚,去掉--apply-log-only参数

恢复阶段:可以将全备理解成一个集合,所有的增备都需要汇总到这个集合(全备)里,才能进行完整的恢复操作

4、关闭mysql服务

5、清空mysql的数据目录(清空前,请备份)

6、恢复数据库

xtrabackup --copy-back --target-dir=/mysql/backup/full

--copy-back:将备份的数据copy至数据目录下(数据目录请查看my.cnf)

7、恢复后,需要将数据目录下恢复的文件重新赋予权限

chown -R mysql.mysql  /mysql/data

8、启动mysql

注:在执行1、2、3步前,最好将备份都保留一份到其他目录(这样如果恢复不成功,还可以再重新操作)。因为还原过程中用到的备份文件在下次还原使用时会报错,报错如下:

xtrabackup: error: xtrabackup_logfile was already used to '--prepare'.

 

 

 

三、用法及相关参数介绍

用法:

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文件中。

 

--parallel=#,指定备份时拷贝多个数据文件并发的进程数,默认值为1。

 

--defaults-file=[MY.CNF],唯一从给定文件读取默认选项,必须是个真实文件,必须在命令行第一个选项位置指定。

 

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论