IvorySQL 增量备份与合并增量备份功能解析
1. 概述
IvorySQL v4 引入了块级增量备份和增量备份合并功能,旨在优化数据库备份与恢复流程。通过 pg_basebackup 工具支持增量备份,显著降低了存储需求和备份时间。同时,pg_combinebackup 工具能够将多个增量备份合并为单个完整备份,提升了数据恢复的灵活性和效率。
2. 特性介绍
IvorySQL 的增量备份通过记录每个 checkpoint 周期内的数据变更,确保仅备份自上次备份以来发生变化的数据块。这种机制不仅减少了所需的存储空间,也缩短了备份过程中的 I/O 操作时间。此外,pg_combinebackup 工具支持将多个增量备份合并为一个完整备份,使得在数据恢复时不再需要逐个应用增量备份,大大简化了恢复流程。

2.1 启用增量备份特性
为启用增量备份功能,首先需要在数据库中配置相关参数并重新加载配置文件:
ALTER SYSTEM SET summarize_wal = ON;
SELECT pg_reload_conf();
接着,创建测试表并插入初始数据,以便后续进行备份操作:
CREATE TABLE sample_table(t INT);
INSERT INTO sample_table VALUES (1);
SELECT * FROM sample_table;

2.2 执行全量备份
使用 pg_basebackup 工具执行全量备份,并生成包含 backup_manifest 的备份文件,以便后续增量备份的基础:
pg_basebackup -Fp -D /backup/\$(date +%Y-%m-%d*%H%M%S-FULL)
此命令将全量备份数据保存至指定目录,并记录当前的备份状态。
2.3 进行增量备份
(1)在对数据进行修改后,执行增量备份以记录自上次全量备份或增量备份以来的变更。
修改表数据并执行第一次增量备份:
UPDATE sample_table SET t = 2;
SELECT * FROM sample_table;

执行增量备份:
pg_basebackup -Fp -D /backup/\$(date +%Y-%m-%d*%H%M%S-INCREMENTAL) -i /backup/2025-02-20_161530-FULL/backup_manifest
(2)再次修改表数据并执行第二次增量备份。
UPDATE sample_table SET t = 3;
SELECT * FROM sample_table;

然后执行第二次增量备份:
pg_basebackup -Fp -D /backup/\$(date +%Y-%m-%d*%H%M%S-INCREMENTAL) -i /backup/2025-02-20_161808-INCREMENTAL/backup_manifest

2.4 合并增量备份
合并全量备份和多个增量备份,创建新的完整备份,以便后续的恢复操作:
cd /backup
pg_combinebackup 2025-02-20_161530-FULL 2025-02-20_161808-INCREMENTAL 2025-02-20_162115-INCREMENTAL -o 2025-02-20_66666-FULL

注意事项:全量备份必须在参数列表的首位,增量备份需要按时间顺序排列,以确保数据恢复的完整性与一致性。
2.5 恢复合并后的备份
启动数据库并验证数据的完整性:
pg_ctl start -D /backup/2025-02-20_66666-FULL -o '-p 5435'
SELECT * FROM sample_table;

2.6 合并指定增量备份
如需恢复到特定的增量备份状态,可以选择合并到某个中间增量备份:
pg_combinebackup 2025-02-20_161530-FULL 2025-02-20_161808-INCREMENTAL -o 2025-02-20_77777-FULL

然后启动数据库并验证数据:
pg_ctl start -D /backup/2025-02-20_77777-FULL -o '-p 5436'
SELECT * FROM sample_table;

3. 注意事项
- 备份顺序:确保全量备份在合并命令的首位,增量备份按照时间顺序排列,以避免合并过程中的数据不一致性问题。
- 增量备份存储管理:虽然增量备份减少了存储空间的需求,但恢复操作依赖于完整的增量备份链,任何增量备份的丢失将直接导致恢复失败。因此,建议定期检查和合并增量备份,以确保备份链的完整性和可靠性。
- 性能监控:在执行增量备份和合并操作时,监控数据库的性能,确保操作对系统性能的影响在可接受范围内,避免在高负载时段进行备份操作。
4. 总结
IvorySQL 提供的块级增量备份与 pg_combinebackup 工具显著提升了数据库的备份与恢复效率。通过只备份变更的数据块,增量备份在减小存储占用和缩短备份时间方面展现出卓越性能,而合并增量备份功能则简化了恢复流程,提升了操作的便捷性。
这些先进的特性使得 IvorySQL 成为大规模数据库和对数据恢复要求严格的环境的理想选择,能够提供灵活而高效的备份与恢复解决方案,确保数据的安全与可用性。
相关文章:
IvorySQL 增量备份与合并增量备份功能解析
1. 概述 IvorySQL v4 引入了块级增量备份和增量备份合并功能,旨在优化数据库备份与恢复流程。通过 pg_basebackup 工具支持增量备份,显著降低了存储需求和备份时间。同时,pg_combinebackup 工具能够将多个增量备份合并为单个完整备份&#x…...
【css酷炫效果】纯CSS实现故障文字特效
【css酷炫效果】纯CSS实现故障文字特效 缘创作背景html结构css样式完整代码基础版进阶版(3D效果) 效果图 想直接拿走的老板,链接放在这里:https://download.csdn.net/download/u011561335/90492053 缘 创作随缘,不定时更新。 创作背景 刚…...
SpringSecurity配置(自定义认证过滤器)
文末有本篇文章的项目源码文件可供下载学习 在这个案例中,我们已经实现了自定义登录URI的操作,登录成功之后,我们再次访问后端中的API的时候要在请求头中携带token,此时的token是jwt字符串,我们需要将该jwt字符串进行解析,查看解析后的User对象是否处于登录状态.登录状态下,将…...
设计模式(行为型)-备忘录模式
目录 定义 类图 角色 角色详解 (一)发起人角色(Originator) (二)备忘录角色(Memento) (三)备忘录管理员角色(Caretaker)…...
WebAssembly 技术在逆向爬虫中的应用研究
一、引言 1.1 Web 技术发展与性能需求 在当今数字化浪潮中,Web 应用已成为人们生活和工作中不可或缺的一部分。从简单的静态网页到功能复杂的单页面应用(SPA),Web 技术的发展日新月异。随着用户对 Web 应用交互性、实时性和复杂性的要求不断提高,传统的 Web 开发技术面临着…...
Advanced Intelligent Systems 软体机器手助力截肢者玩转鼠标
随着科技的不断进步,假肢技术在改善截肢者生活质量方面取得了显著成就。然而,截肢群体在就业方面仍面临巨大困难,适龄截肢群体的就业率仅为健全群体的一半。现有的肌电控制假肢手在与计算机交互时存在诸多挑战,特别是截肢者在使用…...
pyhton中 字典 元组 列表 集合之间的互相转换
在 Python 中,集合(set)、字典(dict)、元组(tuple)、列表(list)和序列(如字符串 str)之间可以互相转换。以下是它们之间转换的详细方法,涵盖从基础到高级的用法。 1. 列表(list)与其他类型的转换 1.1 列表 → 集合 my_list = [1, 2, 2, 3...
每日Attention学习27——Patch-based Graph Reasoning
模块出处 [NC 25] [link] Graph-based context learning network for infrared small target detection 模块名称 Patch-based Graph Reasoning (PGR) 模块结构 模块特点 使用图结构更好的捕捉特征的全局上下文将图结构与特征切片(Patching)相结合,从而促进全局/…...
理一理Mysql日期
在 MySQL 数据库中,关于日期和时间的类型主要有以下几种: 1. **DATE**: 仅存储日期部分,格式为 YYYY-MM-DD,例如 2023-10-31。 2. **TIME**: 仅存储时间部分,格式为 HH:MM:SS,例如 14:30:00。 3. **DATE…...
数据结构:栈的应用举例——括号匹配的检验
2. 括号匹配的检验 如果表达式中包含括号,当程序中含有这类表达式时,在代码编译过程中,必然会检查括号是否匹配,这是一项必需的语法检查环节。 (1)迭代版 此处假设表达式中只含有左、右圆括号࿰…...
DeepSeek成功的秘诀:谈谈DeepSeek的算法创新
李升伟 整理 DeepSeek 是一家专注于人工智能技术研发的公司,其算法创新在业界引起了广泛关注。以下是 DeepSeek 使用的核心算法及其特点的详细解析: 1. 原生稀疏注意力(NSA)算法 DeepSeek 提出的 原生稀疏注意力(Na…...
初始OpenCV
OpenCV 是一个功能强大、应用广泛的计算机视觉库,它为开发人员提供了丰富的工具和算法,可以帮助他们快速构建各种视觉应用。随着计算机视觉技术的不断发展,OpenCV 也将会继续发挥重要的作用。 OpenCV 提供了大量的计算机视觉算法和图像处理工具,广泛应用于图像和视频的处理…...
深圳南柯电子|医疗设备EMC检测测试整改:保障患者安全的第一步
在医疗设备领域,电磁兼容性(EMC)是确保设备安全、有效运行的关键指标。随着医疗技术的飞速发展,医疗设备日益复杂,其电磁环境也愈发复杂多变。EMC检测测试及整改因此成为医疗设备研发、生产、销售过程中不可或缺的一环…...
【笔记】计算机网络——数据链路层
概述 链路是从一个结点到相邻结点的物理路线,数据链路则是在链路的基础上增加了一些必要的硬件和软件实现 数据链路层位于物理层和网络层之间,它的核心任务是在直接相连的节点(如相邻的交换机,路由器)之间提供可靠且…...
Rust语言介绍和猜数字游戏的实现
文章目录 Rust语言介绍和猜数字游戏的实现cargo是什么使用Rust编写猜数字 Rust语言介绍和猜数字游戏的实现 Rust语言是一种系统编程语言,核心强调安全性、并发性以及高性能,由类似于C/C的底层控制能力,性能也非常接近,Rust有一些…...
STM32-汇编
学习arm汇编的主要目的是为了编写arm启动代码,启动代码启动以后,引导程序到c语言环境下运行。换句话说启动代码的目的是为了在处理器复位以后搭建c语言最基本的需求。因此启动代码的主要任务有: 初始化异常向量表; 初始化各工作模…...
利用通义灵码AI在VS Code中快速开发扫雷游戏:Qwen2.5-Max模型的应用实例
引言 随着人工智能技术的不断进步,开发过程中的自动化程度也在逐步提高。阿里云推出的通义灵码AI程序员,作为一款创新型的智能编程助手,现已全面上线并兼容VS Code、JetBrains IDEs等多种开发环境。本文将介绍如何利用最新的Qwen2.5-Max模型…...
202503执行jmeter压测数据库(ScyllaDB,redis,lindorm,Mysql)
一、Mysql 1 、 准备MySQL 连接内容 2 、 下载连接jar包 准备 mysql-connector-java-5.1.49.jar 放到 D:\apache-jmeter-5.6.3\lib\ext 目录下面; 3 、 启动jmeter ,配置脚本 添加线程组---》JDBC Connection Configuration---》JDBC Request---》查看结果树。 1)测…...
【QT 多线程示例】两种多线程实现方式
文章目录 多线程实现方式一:继承QThread类方式二: 使用QObject::moveToThread()方法 多线程实现 在Qt中,实现多线程编程有两种常见的方式,它们分别是通过继承QThread类和使用QObject::moveToThread()方法。 方式一:继…...
excel文件有两列,循环读取文件两列赋值到字典列表。字典的有两个key,分别为question和answer。将最终结果追加到json文件
import pandas as pd import json import osdef excel_to_json_append(excel_path, json_path):# 1. 读取Excel数据到字典列表df pd.read_excel(excel_path, usecols["question", "answer"])new_data [{"question": str(row["question&qu…...
以太网 MAC 帧格式
文章目录 以太网 MAC 帧格式以太网帧间隔参考 本文为笔者学习以太网对网上资料归纳整理所做的笔记,文末均附有参考链接,如侵权,请联系删除。 以太网 MAC 帧格式 以太网技术的正式标准是 IEEE 802.3,它规定了以太网传输数据的帧结…...
【PCB工艺】基础:电子元器件
电子原理图(Schematic Diagram)是电路设计的基础,理解电子元器件和集成电路(IC)的作用,是画好原理图的关键。 本专栏将系统讲解 电子元器件分类、常见 IC、电路设计技巧,帮助你快速掌握电子电路…...
docker 部署elk 设置账号密码
1. 先把 kibana 停掉 2.进入es 容器 docker exec -it 75895a078cbc /bin/bash 找到 bin 目录 执行 ./elasticsearch-setup-passwords interactive 全部设置一样的密码 ,不一样自己要记住,设置成功会输出如下内容 Changed password for user [apm_system] Chang…...
【微信小程序(云开发模式)变通实现DeepSeek支持语音】
整体架构 前端(微信小程序): 使用微信小程序云开发能力,实现录音功能。将录音文件上传到云存储。调用云函数进行语音识别和 DeepSeek 处理。界面模仿 DeepSeek,支持文本编辑。 后端(云函数 Node.js&#…...
从WebRTC到嵌入式:EasyRTC如何借助大模型提升音视频通信体验
随着人工智能技术的快速发展,WebRTC与大模型的结合正在为音视频通信领域带来革命性的变革。WebRTC作为一种开源实时通信技术,以其低延迟、跨平台兼容性和强大的音视频处理能力,成为智能硬件和物联网设备的重要技术支撑。 而EasyRTC作为基于W…...
前端样式库推广——TailwindCss
官方网址: https://tailwindcss.com/docs/installation/using-vite 中文官方文档:https://www.tailwindcss.cn/ github地址:tailwindcss 正在使用tailwindcss的网站:https://tailwindcss.com/showcase 一看github,竟然…...
Gemini分析屏幕截图时,如何处理图像模态(如界面元素、文字内容)与文本模态(用户指令)的语义对齐?
在通过Gemini大语言模型进行屏幕截图分析时,实现图像模态(界面元素/文字内容)与文本模态(用户指令)的语义对齐,需要结合多模态融合技术和领域知识。以下是具体的技术实现路径和挑战应对方案: 1.…...
【6】组合计数学习笔记
前言 关于今天发现自己连快速幂都忘记怎么写这件事 这篇博客是组合计数基础,由于大部分内容都是 6 6 6 级,所以我就给整个提高级的组合数学评了 6 6 6 级。 组合计数基础 加法原理与乘法原理 加法原理(分类计数原理)&#…...
Ai客服机器人系统源码
我将基于常见的自然语言处理库,用 Python 编写一个简单的 AI 客服机器人功能代码示例,它能处理常见问题并根据用户输入提供相应回复。 import nltk from nltk.chat.util import Chat, reflections # 下载必要的NLTK数据 nltk.download(pun…...
Redis——事务实现以及应用场景
本文介绍Redis事务相关的原理以及知识点,从redis的常用命令出发,深入理解redis在日常工作中的实际场景使用用法。 本文目录 一、Redis事务简介二、事务相关命令三、事务应用场景 一、Redis事务简介 Redis 事务本质上是一个命令队列。用户可以使用MULTI命…...
