开源PolarDB-X备份恢复操作实操

简介: 作者介绍:付文革,航天壹进制(江苏)信息科技有限公司产品研发,专注于数据库备份,主攻MySQL相关数据库以及各种国产分布式数据库的备份恢复,主要使用Java 、Python、Shell等编程语言航天壹进制(江苏)信息科技有限公司(简称航天壹进制)作为中国航天科工集团有限公司旗下上市公司航天工业发展股份有限公司的全资下属企业,专注于数据安全领域,自主研发并提供数据保护与业务连续性管理产品、解决方案及服务。

环境准备

开源PolarDB-X支持全量备份、增量备份、日志备份。本文基于已有的备份能力进行备份/恢复能力进行验证与操作实现,给大家提供操作参考。

本操作基于的基本环境:

  • 操作工具:开源MySQL备份工具:xtrabackup
  • 数据库版本:开源PolarDB-X v2.4.1,标准版(集中式)
  • 数据库部署架构:单节点部署

工具安装

下载xtrabackup工具安装包(注意提前自行配置系统Yum源,本文不赘述),使用命令:

yum install -y t-polardbx-engine-xtrabackup-80-8.0.32-20240821163958.alios7.x86_64.rpm

安装完成后默认会创建/u01/polardbx_engine_xtrabackup80目录:

image.png

备份数据

全量备份

数据准备:备份前插入三条数据:

image.png

按照以下命令,执行全量备份:

u01/polardbx_engine_xtrabackup80/bin/xtrabackup --defaults-file=/home/polarx/polardbx-engine/my.cnf --xtrabackup-plugin-dir="/u01/polardbx_engine_xtrabackup80/lib/plugin"  
--stream=xbstream  
--backup  
--extra-lsndir=/home/bk  
--parallel=4  --socket=/home/polarx/polardbx-engine/tmp.mysql.sock >/home/fwg/full/bakcup.xbstream

参数说明:(可自行在网上查询)

--defaults-file:指定主配置文件

--xtrabackup-plugin-dir:指定XtraBackup插件的安装路径,若未指定,工具会自动搜索默认路径;

--stream:使用 xtrabackup 进行流式备份

--backup:指定执行备份操作

--extra-lsndir:备份过程中包含额外的目录(例如日志目录或者其他重要数据目录),你可以使用 --extra-lsndir 参数,也可以使用 --include 来指定额外的文件或目录。

--parallel:指定在备份过程中使用的并行线程数

执行结果如下图:

image.png

image.png

备份成功完成后,即可在指定的目录(/home/fwg/full )里看到备份文件:

image.png

image.png

备份完成后通过/home/bk查看xtrabackup_info文件获取lsn,用作增量备份:

image.png


增量备份

数据准备:原有三条数据的基础上,新增加两条数据记录:

image.png

执行增量备份命令:

/u01/polardbx_engine_xtrabackup80/bin/xtrabackup --defaults-file=/home/polarx/polardbx-engine/my.cnf --xtrabackup-plugin-dir="/u01/polardbx_engine_xtrabackup80/lib/plugin"  
--stream=xbstream  
--backup 
--incremental-lsn=346461404 
--extra-lsndir=/home/bk/inc  
--parallel=4  --socket=/home/polarx/polardbx-engine/tmp.mysql.sock >/home/fwg/incr/bakcup_inc.xbstream

注意,我们增量备份命令中,指定了:incremental-lsn=346461404 ,即上次全量备份的lsn号

执行过程如下:

image.png

image.png

备份完成,可以在指定的目录(/home/fwg/incr/)查看增量备份文件。

日志备份

日志备份较为简单,可以直接将数据目录下的所有的二进制日志文件拷贝到指定备份目录下即可:

image.png

恢复数据

执行数据恢复之前,先停止数据库服务,并且通过清理polardb数据库相关目录(包括:/data、/log、/mysql、/run、/tmp),模拟数据丢失场景。

image.png

image.png

全量备份集恢复

解压备份

将完全备份对应的备份集文件解包到指定位置,这里可以直接指定为数据目录,解包命令如下:

/u01/polardbx_engine_xtrabackup80/bin/xbstream -x < /home/fwg/full/bakcup.xbstream -C /home/polarx/polardbx-engine/data/

解包完成后应用数据,应用命令如下:

/u01/polardbx_engine_xtrabackup80/bin/xtrabackup --defaults-file=/home/polarx/polardbx-engine/my.cnf --xtrabackup-plugin-dir="/u01/polardbx_engine_xtrabackup80/lib/plugin" 
--prepare
 --target-dir=/home/polarx/polardbx-engine/data/

image.png

image.png

应用数据完成,查看数据目录(/home/polarx/polardbx-engine/data):

image.png

查看xtrabackup_binlog_info文件获取index,用于指定元数据刷新

image.png

元数据刷新

将恢复后的数据目录修改用户属主

chown -R polarx:polarx /home/polarx/polardbx-engine

元数据刷新需要切换到非root用户,与环境搭建时一致

image.png

连续两次启动数据库(首次启动后可能无法连接,第二次启动后正常):

image.png

数据库启动完成后,即可访问数据库查看数据:

image.png

注:如果数据库启动失败,将数据目录下的二进制日志文件清理后重新启动即可:

rm -f data/mysql-binlog.*

全量+多个增量备份集恢复

将完全备份集解包到指定文件

/u01/polardbx_engine_xtrabackup80/bin/xbstream -x < /home/fwg/full/bakcup.xbstream -C /home/polarx/polardbx-engine/data/

将增量备份集解包到指定文件

/u01/polardbx_engine_xtrabackup80/bin/xbstream -x < /home/fwg/incr/bakcup_inc.xbstream -C /home/fwg/incr/

应用完全备份集

/u01/polardbx_engine_xtrabackup80/bin/xtrabackup --defaults-file=/home/polarx/polardbx-engine/my.cnf --xtrabackup-plugin-dir="/u01/polardbx_engine_xtrabackup80/lib/plugin" 
--prepare --apply-log-only
 --target-dir=/home/polarx/polardbx-engine/data/

image.png

将增量备份集应用到完全备份集中

/u01/polardbx_engine_xtrabackup80/bin/xtrabackup --defaults-file=/home/polarx/polardbx-engine/my.cnf --xtrabackup-plugin-dir="/u01/polardbx_engine_xtrabackup80/lib/plugin" 
--prepare  
--apply-log-only 
--target-dir=/home/polarx/polardbx-engine/data/ --incremental-dir=/home/fwg/incr/

image.png

应用数据完成后,同完全备份恢复后操作一致,完成元数据刷新后启动数据库,即可查看数据:

image.png

数据备份集结合日志文件实现指定时间点恢复

数据备份集恢复后,获取日志文件,确定恢复的指定时间是在哪个日志文件中。

例如:

日志文件为mysql-binlog.000001 ... mysql-binlog.000099,需要恢复的时间点为 “2025-10-25 09:59:35”

1、确定需要的日志文件,遍历日志文件,获取每个日志文件的开始时间(start)和结束时间(end),符合start<=指定时间<=end的日志为最后一个日志文件。

mysqlbinlog  --no-defaults  /tmp/mysql-bin.000003 |grep -m 1 "end_log_pos "

image.png

/u01/xcluster80/bin/mysqlbinlog --no-defaults /home/fwg/mysql-binlog.000003 |grep "end_log_pos " | tail -1

image.png

如上mysql-bin.000003为指定时间所在的日志文件。

  1. 裁剪binlog到指定恢复的时间点
/u01/polardbx_engine_xtrabackup80/bin/mysqlbinlogtailor --truncate-datetime="2025-10-25 09:59:35" mysql-binlog.000003

  1. 此命令会将mysql-binlog.000003进行裁剪,裁剪后的文件对应的时间为2025-10-25 09:56:28---2025-10-25 09:59:35。
  2. 将mysql-binlog.000003前序binlong日志文件(如本案例中涉及:mysql-binlog.000001、mysql-binlog.000002),以及裁剪后的mysql-binlog.000003都放入数据目录中,并创建日志索引文件:


    image.png
  3. 需要确保恢复机数据库配置文件中server_id值与备份机不同,如果相同将不会回放binlog到指定时间。
    image.png
  4. 重复以上元数据刷新步骤,启动数据库
  5. 查看恢复出来的数据

image.png

相关文章
|
3月前
|
运维 安全 Linux
PolarDB-X下使用备份工具t-polardbx-engine-xtrabackup
针对PolarDB-X xtrabackup在CentOS 8/RHEL 8等新版系统因依赖旧版libgcrypt.so.11和libprocps.so.4无法运行的问题,提供两种零侵入兼容方案:一是通过独立目录部署旧库+wrapper脚本+环境变量注入,实现一键开关、无污染回退;二是强制安装仅含库文件的CentOS 7 RPM包,与新库共存,支持快速卸载。均无需降级系统、重编译或修改glibc,保障生产环境安全稳定,适用于自动化运维与定时备份场景。
250 4
|
5月前
|
SQL 关系型数据库 MySQL
开源新发布|PolarDB-X v2.4.2开源生态适配升级
PolarDB-X v2.4.2开源发布,重点完善生态能力:新增客户端驱动、开源polardbx-proxy组件,支持读写分离与高可用;强化DDL变更、扩缩容等运维能力,并兼容MySQL主备复制及MCP AI生态。
开源新发布|PolarDB-X v2.4.2开源生态适配升级
|
2月前
|
Linux 数据库
Linux 环境 Polardb-X 数据库 单机版 rpm 包 安装教程
本文介绍在CentOS 7.9环境下安装PolarDB-X单机版数据库的完整流程,涵盖系统环境准备、本地Yum源配置、RPM包安装、用户与目录初始化、依赖库解决、数据库启动及客户端连接等步骤,助您快速部署运行PolarDB-X。
930 2
Linux 环境 Polardb-X 数据库 单机版 rpm 包 安装教程
|
2月前
|
Ubuntu Java Linux
ARM Linux 环境 国产 华为 欧拉 openEuler 20.03 操作系统安装 Polardb-X 数据库 单机版 rpm 包 教程
本文介绍在ARM64架构的openEuler 20.03系统上,通过RPM包安装部署PolarDB-X单节点数据库的完整过程,涵盖环境准备、RPM安装、用户配置、数据库初始化及启动连接等步骤,助力用户在国产化软硬件平台上快速搭建PolarDB-X运行环境。
955 2
|
负载均衡 监控 关系型数据库
利用ProxySQL构建PolarDB-X三节点高可用集群
作者介绍: 廖银华,重庆市中冉数字科技有限公司系统分析师; 邓海林,重庆市中冉数字科技有限公司项目经理; 何龙建,重庆远通电子技术开发有限公司信息系统项目管理师 作者聚焦数据治理中台架构设计与AI+业务深度融合实践,在数据质量、智能分析及高效数据处理等领域积累了扎实的实战经验,精通打造高效安全、稳定可扩展的数据中台解决方案
|
4月前
|
数据采集 人工智能 自然语言处理
Meta SAM3开源:让图像分割,听懂你的话
Meta发布并开源SAM 3,首个支持文本或视觉提示的统一图像视频分割模型,可精准分割“红色条纹伞”等开放词汇概念,覆盖400万独特概念,性能达人类水平75%–80%,推动视觉分割新突破。
1824 59
Meta SAM3开源:让图像分割,听懂你的话
|
2月前
|
Linux 数据库
Linux 环境 国产银河麒麟V10操作系统安装 Polardb-X 数据库 单机版 rpm 包 教程
本文介绍在国产银河麒麟V10操作系统上安装Polardb-X单机版数据库的完整过程。基于RPM包方式部署,步骤与CentOS 7.9类似,涵盖系统环境确认、依赖安装、用户配置、初始化数据目录及启动服务等关键环节,并通过命令验证运行状态,助力国产化平台数据库搭建。
788 2
|
7月前
|
人工智能 关系型数据库 MySQL
开源PolarDB-X:单节点误删除binlog恢复
本文由邵亚鹏撰写,分享了在使用开源PolarDB-X过程中,因误删binlog导致数据库服务无法启动的问题及恢复过程。作者结合实践经验,详细介绍了在无备份情况下如何通过单节点恢复机制重启数据库,并提出了避免类似问题的几点建议,包括采用高可用部署、定期备份及升级至最新版本等。

热门文章

最新文章