GreatSQL社区

搜索

reddey

关于xtrabackup备份恢复数据的一些注意事项

reddey 已有 73 次阅读2025-3-6 13:58 |系统分类:运维实战

昨天在群里看到一则招聘初级DBA公告,里面要求DBA要会使用物理备份xtrabackup工具,这个工具之前也使用过,但好久没用过了,今天特意再热身一下。

首先介绍一下这个xtrabackup工具,这个工具是percona公司(mysql数据库的分支)的产品。本次我使用yum安装,这个是安装文档(https://docs.percona.com/percona-xtrabackup/8.0/yum-repo.html#prerequisites),里面有很详细安装步骤。

Install from Percona YUM repository

The following procedure installs Percona XtraBackup 8.0.

Install the Percona yum repository by running the following command as the root user or with sudo:

$ sudo yum install \

https://repo.percona.com/yum/percona-release-latest.\

noarch.rpm

Example output

Enable the repository:

$ sudo percona-release enable pxb-80

Example output

Install Percona XtraBackup by running:



$ sudo yum install percona-xtrabackup-80

Example output

To decompress backups made using LZ4 or ZSTD compression algorithm, install the corresponding package:

Install the lz4 package

Install the zstd package

$ sudo yum install lz4

Verify the installation¶

Run Percona XtraBackup:

$ xtrabackup --version

If this command fails, the installation is incomplete or incorrect.

以下是我安装后版本提示

[root@localhost ~]# xtrabackup --version

2025-03-06T09:58:43.372969+08:00 0 [Note] [MY-011825] [Xtrabackup] recognized server arguments: --datadir=/var/lib/mysql

xtrabackup version 8.0.35-32 based on MySQL server 8.0.35 Linux (x86_64) (revision id: c339924a)

介绍一下我的操作环境,操作系统为OEL8,数据库安装是

Server version: 8.0.32-26 GreatSQL (GPL), Release 26, Revision a68b3034c3d。

现在开始做数据备份,备份的命令如下所示

xtrabackup  -uroot -pGood@2019 --defaults-file=/etc/my.cnf --target-dir=/data/backup/xtrabackup

(defaults-file为数据库配置文件地址,target-dir为数据库备份目录),命令执行成功后,备份目录文件如下所示:

[root@localhost ~]# ll /data/backup/xtrabackup

total 70716

-rw-r-----. 1 root root      447 Mar  6 10:05  backup-my.cnf

-rw-r-----. 1 root root      157 Mar  6 10:05  binlog.000004

-rw-r-----. 1 root root       16 Mar  6 10:05  binlog.index

drwxr-x---. 2 root root       20 Mar  6 10:05 '#file_purge'

-rw-r-----. 1 root root     5760 Mar  6 10:05  ib_buffer_pool

-rw-r-----. 1 root root 12582912 Mar  6 10:05  ibdata1

drwxr-x---. 2 root root       38 Mar  6 10:05  menagerie

drwxr-x---. 2 root root     4096 Mar  6 10:05  mysql

-rw-r-----. 1 root root 26214400 Mar  6 10:05  mysql.ibd

drwxr-x---. 2 root root     8192 Mar  6 10:05  performance_schema

drwxr-x---. 2 root root     4096 Mar  6 10:05  sakila

drwxr-x---. 2 root root       28 Mar  6 10:05  sys

drwxr-x---. 2 root root       41 Mar  6 10:05  test

-rw-r-----. 1 root root 16777216 Mar  6 10:05  undo_001

-rw-r-----. 1 root root 16777216 Mar  6 10:05  undo_002

drwxr-x---. 2 root root       68 Mar  6 10:05  world

-rw-r-----. 1 root root       18 Mar  6 10:05  xtrabackup_binlog_info

-rw-r-----. 1 root root      134 Mar  6 10:05  xtrabackup_checkpoints

-rw-r-----. 1 root root      507 Mar  6 10:05  xtrabackup_info

-rw-r-----. 1 root root     2560 Mar  6 10:05  xtrabackup_logfile

-rw-r-----. 1 root root       39 Mar  6 10:05  xtrabackup_tablespaces

在进行数据库恢复时,有几个注意事项要特别强调一下:

   1、数据库服务要关闭,不能在数据库运行时进行xtrabackup恢复操作。否则恢复后会导致数据库服务无法启动,在数据目录下找不到mysql.sock。笔者当时就盲目地踩过这个坑。

   2、在恢复之前,要保证目标数据库数据目录是空的。

   3、上面的数据库备份不能直接用于恢复,需要做prepare保证数据一致性。

   4、同时要注意目标数据库数据目录的属主,属主要为mysql。命令如下所示chown mysql:mysql /var/lib/mysql,各位网友在进行数据恢复后,要注意数据目录的属主。否则可能导致数据恢复后,数据库服务不能启动起来。笔者在这里也踩过坑,当时不得不把错误信息发百度查询,最后把数据库数据目录的属主修改了才解决了数据库启动问题,各位网友要引起注意。

   由于我是用RPM方式安装的MYSQL数据库,用systemctl stop  mysqld停止数据库服务就可以了。同时要用删除目标数据库数据目录中的数据。

进行数据恢复准备,命令如下所示:

xtrabackup --prepare --target-dir=/data/backup/xtrabackup

最后进行正式的数据恢复:

xtrabackup --defaults-file=/etc/my.cnf --copy-back --target-dir=/data/backup/xtrabackup

以上命令会将备份的数据文件复制到目标数据库数据目录下面。

数据库还原后,注意要启动数据库服务。

xtrabackup工具是一个强大的数据库备份恢复软件,不仅能备份所有库,也可以备份单表、单库,大家可以探索使用一下。


评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 立即注册

合作电话:010-64087828

社区邮箱:greatsql@greatdb.com

社区公众号
社区小助手
QQ群
GMT+8, 2025-3-12 19:11 , Processed in 0.015729 second(s), 9 queries , Redis On.
返回顶部