xtrabackup 联机备份

本文介绍如何在CentOS环境下安装Percona XtraBackup,并使用xtrabackup与innobackupex命令进行MySQL数据库的全量与增量备份、恢复等操作流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、安装xtrabackup
[root@CentOS tmp]# cd /tmp/
[root@CentOS tmp]# ll percona-xtrabackup-2.3.2-Linux-i686.tar.gz 
-rw-r--r--. 1 root root 26387491 12月 21 22:24 percona-xtrabackup-2.3.2-Linux-i686.tar.gz
[root@CentOS tmp]# tar zxf percona-xtrabackup-2.3.2-Linux-i686.tar.gz -C /usr/local/
[root@CentOS tmp]# cd /usr/local/
[root@CentOS local]# mv percona-xtrabackup-2.3.2-Linux-i686/ xtrabackup
[root@CentOS local]# chown -R mysql:mysql xtrabackup
[root@CentOS local]# cd xtrabackup/bin/
[root@CentOS bin]# ll
总用量 64064
lrwxrwxrwx. 1 mysql mysql       10 12月 21 22:33 innobackupex -> xtrabackup   ##能够备份所有使用MyISAM、InnoDB及XtraDB引擎的表对象。
-rwxr-xr-x. 1 mysql mysql  4144096 10月 17 02:47 xbcloud
-rwxr-xr-x. 1 mysql mysql     3020 10月 17 02:46 xbcloud_osenv
-rwxr-xr-x. 1 mysql mysql  4029390 10月 17 02:47 xbcrypt
-rwxr-xr-x. 1 mysql mysql  4073236 10月 17 02:47 xbstream                     ##可以压缩xtrabackup输出的信息,相当于linux中tar命令的增强版。
-rwxr-xr-x. 1 mysql mysql 53340808 10月 17 02:49 xtrabackup                   ##专用于备份innoDB及XtraDB引擎对象。
[root@CentOS bin]# vi /etc/profile
export PATH=/usr/local/xtrabackup/bin:$PATH
[root@CentOS bin]# source /etc/profile

2、xtrabackup命令全备
##xtrabackup必须在mysql的服务端执行。
xtrabackup命令有两种模式:
--backup  创建备份集。
--prepare 准备备份集。
##这里没有指定数据库,默认就是全备。
# xtrabackup \
--defaults-file=/mydata/data/3306/my.cnf \
--backup \
--target-dir=/mydata/data/3306/xtrabackup/bak_20151221 \
--user=root \
--password=123 \
--socket=/mydata/data/3306/mysql_3306.sock

[root@CentOS xtrabackup]# ll bak_20151221/           ##指定的bak_20151221,最后生成的其实是一个目录。
总用量 77864
-rw-r-----. 1 root root      386 12月 21 23:15 backup-my.cnf
-rw-r-----. 1 root root 79691776 12月 21 23:15 ibdata1
drwx------. 2 root root     4096 12月 21 23:15 mysql
drwx------. 2 root root     4096 12月 21 23:15 performance_schema
drwx------. 2 root root     4096 12月 21 23:15 test
drwx------. 2 root root     4096 12月 21 23:15 xtrabackup
-rw-r-----. 1 root root       21 12月 21 23:15 xtrabackup_binlog_info
-rw-r-----. 1 root root      117 12月 21 23:15 xtrabackup_checkpoints
-rw-r-----. 1 root root      603 12月 21 23:15 xtrabackup_info
-rw-r-----. 1 root root     2560 12月 21 23:15 xtrabackup_logfile
##xtrabackup命令创建的是一个有限的备份集(仅包含于InnoDB引擎相关的内容),而非完成备份集,如果要创建数据库的完整备份集,那就得用innobackupex命令。

3、innobackupex命令全备
##使用innobackupex创建一份完整的全量备份:
##xtrabackup要求用户明确指定目标路径,二对于innobackupex并不需要特别明确,只要指定父目录即可。
# innobackupex --defaults-file=/mydata/data/3306/my.cnf --user=root --password=123 --socket=/mydata/data/3306/mysql_3306.sock /mydata/data/3306/xtrabackup
[root@CentOS xtrabackup]# ll 2015-12-21_23-57-52/         ##innobackupex自动创建了以[日期_时间]组合命名的目录
总用量 77860
-rw-r-----. 1 root root      386 12月 21 23:57 backup-my.cnf
-rw-r-----. 1 root root 79691776 12月 21 23:57 ibdata1
drwx------. 2 root root     4096 12月 21 23:57 mysql
drwx------. 2 root root     4096 12月 21 23:57 performance_schema
drwx------. 2 root root     4096 12月 21 23:57 test
drwx------. 2 root root     4096 12月 21 23:57 xtrabackup
-rw-r-----. 1 root root       21 12月 21 23:57 xtrabackup_binlog_info
-rw-r-----. 1 root root      117 12月 21 23:57 xtrabackup_checkpoints
-rw-r-----. 1 root root      570 12月 21 23:57 xtrabackup_info
-rw-r-----. 1 root root     2560 12月 21 23:57 xtrabackup_logfile

4、innobackupex命令增量备份
##使用innobackupex创建增量备份:
# innobackupex --defaults-file=/mydata/data/3306/my.cnf --user=root --password=123 --socket=/mydata/data/3306/mysql_3306.sock --incremental --incremental-basedir=/mydata/data/3306/xtrabackup/2015-12-21_23-57-52 /mydata/data/3306/xtrabackup
##--incremental 告诉innobackupex这次是增量
##--incremental-basedir 指定一个全量备份的路径,作为增量的基础。
##--incremental-lsn  如果知道了备份开始时的LSN,就不需要全量备份作为基础了,指定参数--incremental-lsn即可。
[root@CentOS xtrabackup]# cd 2015-12-22_00-05-48
[root@CentOS 2015-12-22_00-05-48]# ll
总用量 328
-rw-r-----. 1 root root    386 12月 22 00:05 backup-my.cnf
-rw-r-----. 1 root root 294912 12月 22 00:05 ibdata1.delta
-rw-r-----. 1 root root     44 12月 22 00:05 ibdata1.meta
drwx------. 2 root root   4096 12月 22 00:05 mysql
drwx------. 2 root root   4096 12月 22 00:05 performance_schema
drwx------. 2 root root   4096 12月 22 00:05 test
drwx------. 2 root root   4096 12月 22 00:05 xtrabackup
-rw-r-----. 1 root root     21 12月 22 00:05 xtrabackup_binlog_info
-rw-r-----. 1 root root    123 12月 22 00:05 xtrabackup_checkpoints
-rw-r-----. 1 root root    663 12月 22 00:05 xtrabackup_info
-rw-r-----. 1 root root   2560 12月 22 00:05 xtrabackup_logfile
##对于MyISAM引擎表对象来说,其实也是全量备份,而对于InnoDB引擎的表对象来说,多个两个扩展名为<table_name>.delta和<table_name>.meta的文件。
[root@CentOS 2015-12-22_00-05-48]# cd test/
[root@CentOS test]# ll t3.*
-rw-r-----. 1 root root  8586 12月 22 00:05 t3.frm
-rw-r-----. 1 root root 32768 12月 22 00:05 t3.ibd.delta
-rw-r-----. 1 root root    45 12月 22 00:05 t3.ibd.meta

5、innobackupex命令执行恢复
恢复操作分为两个步骤:
准备恢复(prepare):对于xtrabackup名利就是参数--prepare;对于innobackupex命令来说,对应的参数是--apply-log
执行恢复(copy-back):xtrabackup命令没有执行恢复相关的参数,只能手动恢复。对于innobackupex命令来说,对应的参数就是--copy-back,它的功能就是将指定的备份集,恢复到datadir目录。
##首先对全量备份做恢复的准备工作:
# innobackupex --defaults-file=/mydata/data/3306/my.cnf --apply-log --redo-only /mydata/data/3306/xtrabackup/2015-12-21_23-57-52
##--apply-log  代表对备份集做恢复准备工作
##--redo-only  如果进行准备工作的备份集操作完成后,还有其他增量备份集待准备,那么就必须指定本参数。

##继续应用增量备份集
# innobackupex --defaults-file=/mydata/data/3306/my.cnf --apply-log /mydata/data/3306/xtrabackup/2015-12-21_23-57-52 --incremental-dir=/mydata/data/3306/xtrabackup/2015-12-22_00-05-48
##--incremental-dir  指定要处理的增量备份机路径

##执行copy-back
# innobackupex --defaults-file=/mydata/data/3306/my.cnf --copy-back /mydata/data/3306/xtrabackup/2015-12-21_23-57-52

6、备份恢复的例子:
##首先全备3306数据库:(需要注意,如果准备恢复失败,备份集是不能回退的,所以备份集也是需要备份的。)
# innobackupex --defaults-file=/mydata/data/3306/my.cnf --user=root --password=123 --socket=/mydata/data/3306/mysql_3306.sock /mydata/data/backup
##然后再数据库中做一些变更,再增量备份3306数据库:
# innobackupex --defaults-file=/mydata/data/3306/my.cnf --user=root --password=123 --socket=/mydata/data/3306/mysql_3306.sock --incremental --incremental-basedir=/mydata/data/backup/2015-12-22_19-05-59 /mydata/data/backup
##全备准备恢复:
# innobackupex --defaults-file=/mydata/data/3307.bak/my.cnf --apply-log /mydata/data/backup/2015-12-22_19-05-59
##现假设3307库只剩下my.cnf配置文件,把3306恢复到3307:
# innobackupex --defaults-file=/mydata/data/3307.bak/my.cnf --copy-back /mydata/data/backup/2015-12-22_19-05-59
# cp /mydata/data/3307.bak/* /mydata/data/3307/
# chown -R mysql:mysql *

7、备份恢复的例子:
##首先全备3306数据库:
# innobackupex --defaults-file=/mydata/data/3306/my.cnf --user=root --password=123 --socket=/mydata/data/3306/mysql_3306.sock /mydata/data/backup
##然后再数据库中做一些变更,再增量备份3306数据库:
# innobackupex --defaults-file=/mydata/data/3306/my.cnf --user=root --password=123 --socket=/mydata/data/3306/mysql_3306.sock --incremental --incremental-basedir=/mydata/data/backup/2015-12-22_19-05-59 /mydata/data/backup
##全备准备恢复:
# innobackupex --defaults-file=/mydata/data/3307.bak/my.cnf --apply-log --redo-only /mydata/data/backup/2015-12-22_19-05-59
##增量准备恢复:
# innobackupex --defaults-file=/mydata/data/3307.bak/my.cnf --apply-log /mydata/data/backup/2015-12-22_19-05-59 --incremental-dir=/mydata/data/backup/2015-12-22_19-08-22
##有时候“全备准备恢复”需要重复执行了两遍,因为第一遍没有生成日志文件,第二遍才会生成。注意第二遍执行“全备准备恢复”就不要加参数:--redo-only
##再次全备准备恢复:(其实也可以不用执行第二遍“全备准备恢复”来生成日志文件,在mysql启动的时候会自动生成)
# innobackupex --defaults-file=/mydata/data/3307.bak/my.cnf --apply-log /mydata/data/backup/2015-12-22_19-05-59
##现假设3307库只剩下my.cnf配置文件,把3306恢复到3307:
# innobackupex --defaults-file=/mydata/data/3307.bak/my.cnf --copy-back /mydata/data/backup/2015-12-22_19-05-59
# cp /mydata/data/3307.bak/* /mydata/data/3307/
# chown -R mysql:mysql *

8、打包和压缩备份集
# innobackupex --defaults-file=/mydata/data/3306/my.cnf --user=root --password=123 --socket=/mydata/data/3306/mysql_3306.sock --stream=tar /tmp | gzip -> /mydata/data/backup/xtra_fullbackup.tar.gz

<think>我们正在讨论Percona XtraBackup 8.0的备份命令使用方法。根据提供的引用和用户需求,我们将重点介绍innobackupex命令在Percona XtraBackup 8.0中的使用,并注意版本差异。 注意:Percona XtraBackup 8.0中已经移除了innobackupex,取而代之的是使用xtrabackup命令进行备份和恢复。因此,我们需要使用xtrabackup命令来完成备份。 步骤: 1. 安装Percona XtraBackup 8.0:确保系统已安装正确版本。 2. 基本备份命令:使用xtrabackup命令进行全量备份。 3. 选项说明:解释常用选项。 4. 示例:给出具体备份示例。 详细说明: 1. 安装:请参考Percona官方文档安装Percona XtraBackup 8.0。 2. 基本备份命令: xtrabackup命令的基本语法为: ```bash xtrabackup --backup --target-dir=<备份目录> --user=<用户名> --password=<密码> [其他选项] ``` 3. 常用选项说明: - `--backup`: 执行备份操作。 - `--target-dir`: 指定备份文件存储的目录。 - `--user`: 数据库用户名(需要有备份权限)。 - `--password`: 数据库密码。 - `--host`: 数据库主机地址(默认为localhost)。 - `--port`: 数据库端口(默认为3306)。 - `--defaults-file`: 指定MySQL配置文件路径(如/etc/my.cnf)。 4. 示例: 假设我们有一个MySQL实例运行在本地,端口为9306,配置文件为/etc/my_9306.cnf,用户名为root,密码为'extension@123',我们想要备份到/opt/xtrabackup/目录下。 命令如下: ```bash xtrabackup --defaults-file=/etc/my_9306.cnf --backup --user=root --password='extension@123' --host=127.0.0.1 --port=9306 --target-dir=/opt/xtrabackup/ ``` 注意:在Percona XtraBackup 8.0中,不再支持innobackupex命令,所以如果遇到命令未找到的错误(如引用[2]中所示),请确保使用xtrabackup命令。 另外,引用[1]中使用了innobackupex,这是旧版本(2.4及之前)的用法,在8.0中不可用。 引用[3]中提到了使用mysqldump进行备份,但用户明确要求使用Percona XtraBackup,因此我们提供xtrabackup备份命令。 如果需要进行增量备份,可以使用以下命令: ```bash # 全量备份(基础备份xtrabackup --backup --target-dir=/opt/xtrabackup/base --user=root --password='extension@123' # 增量备份(基于全量备份xtrabackup --backup --target-dir=/opt/xtrabackup/inc1 --incremental-basedir=/opt/xtrabackup/base --user=root --password='extension@123' ``` 其中,`--incremental-basedir`指定了基础备份的目录。 总结:Percona XtraBackup 8.0使用xtrabackup命令进行备份,用户需要根据实际情况调整选项。 相关问题: 1. 如何安装Percona XtraBackup 8.0? 2. Percona XtraBackup 8.0如何进行增量备份? 3. Percona XtraBackup 8.0备份后如何恢复数据? 4. 在备份过程中遇到“command not found”错误怎么办?</think>### Percona XtraBackup 8.0 备份命令使用指南 #### 1. **基本全量备份命令** ```bash xtrabackup --backup \ --user=<用户名> \ --password=<密码> \ --host=<主机IP> \ --port=<端口> \ --target-dir=<备份目录> \ --parallel=<线程数> ``` **参数说明**: - `--backup`:执行备份操作 - `--target-dir`:指定备份存储目录(如 `/data/backups/`) - `--parallel`:并行线程数(建议设置为CPU核心数) - `--user`/`--password`:数据库账号密码(需`RELOAD`, `LOCK TABLES`, `REPLICATION CLIENT`权限) - `--defaults-file`:指定MySQL配置文件路径(如 `/etc/my.cnf`)[^1] **示例**: ```bash xtrabackup --defaults-file=/etc/mysql/my.cnf \ --backup \ --user=backup_user \ --password='secure_pass' \ --host=127.0.0.1 \ --port=3306 \ --target-dir=/backups/full \ --parallel=4 ``` #### 2. **增量备份命令** ```bash xtrabackup --backup \ --target-dir=<增量备份目录> \ --incremental-basedir=<基础备份目录> \ [其他参数同全量备份] ``` **关键参数**: - `--incremental-basedir`:指向完整备份的目录(如 `/backups/full`) **示例**: ```bash xtrabackup --backup \ --target-dir=/backups/inc1 \ --incremental-basedir=/backups/full \ --user=backup_user \ --password='secure_pass' ``` #### 3. **压缩备份(推荐)** ```bash xtrabackup --backup \ --compress \ --compress-threads=4 \ --target-dir=/backups/compressed ``` 使用`--compress`启用Zstandard压缩,显著减少存储空间占用。 #### 4. **流式备份(结合管道)** ```bash xtrabackup --backup \ --stream=xbstream \ --target-dir=/tmp \ | gzip > /backups/backup.xb.gz ``` 适用于直接备份到远程存储或生成压缩包。 #### 5. **备份验证与准备** 备份完成后需执行**准备阶段**: ```bash # 全量备份准备 xtrabackup --prepare --target-dir=/backups/full # 增量备份准备(先合并基础备份xtrabackup --prepare --apply-log-only --target-dir=/backups/full xtrabackup --prepare --target-dir=/backups/full \ --incremental-dir=/backups/inc1 ``` `--prepare`使备份可用于恢复,`--apply-log-only`用于增量合并[^3]。 #### 注意事项: 1. **权限问题**:确保执行用户有读写备份目录的权限 2. **版本兼容**:XtraBackup 8.0仅支持MySQL 8.0+和Percona Server 8.0+ 3. **内存建议**:备份大型数据库时预留额外内存(每线程约256MB) 4. **锁机制**:备份InnoDB表不阻塞写入,但会短暂锁定MyISAM表 > **重要提示**:Percona XtraBackup 8.0已**弃用`innobackupex`**,所有操作需使用`xtrabackup`命令实现[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值