文章目录

  • 备份docker desktop中的opengauss数据库
    • 一、前提条件
    • 二、备份步骤
    • 三、注意事项
    • 四、自动化备份(可选)
    • 五、验证备份

备份docker desktop中的opengauss数据库

​ 以下是在 Docker Desktop 中备份 OpenGauss 数据库(以你的环境为例,容器名为 opengauss,数据库为 postgres,版本为 7.0.0-rc1)的详细步骤。备份将使用 OpenGauss 提供的 gs_dump 工具生成 SQL 文件,并将其保存到本地主机。

一、前提条件

  • 确保 Docker 容器正在运行:

    docker ps
    

    确认 opengauss 容器状态为 Up

  • 你的数据库登录命令为:

    docker exec -it opengauss bash -c "su - omm -c 'gsql -d postgres -p 5432'"
    
  • 容器运行命令为:

    docker run --name opengauss --privileged=true -d -e GS_PASSWORD=Abcd@1234 -p 8888:5432 opengauss:7.0.0-rc1
    
  • 确保 omm 用户有权限执行 gs_dump


二、备份步骤

  1. 确认 gs_dump 工具可用
    OpenGauss 默认包含 gs_dump 工具,用于导出数据库内容。进入容器确认工具存在:

    docker exec -it opengauss bash -c "su - omm -c 'which gs_dump'"
    

    应返回类似 /usr/local/opengauss/bin/gs_dump 的路径。

  2. 备份数据库到 SQL 文件
    使用 gs_dump 导出 postgres 数据库到容器内的临时文件(例如 /tmp/backup.sql):

    docker exec -it opengauss bash -c "su - omm -c 'gs_dump -p 5432 postgres -f /tmp/backup.sql'"
    
    • -p 5432:指定数据库端口(与容器内端口一致)。

    • -f /tmp/backup.sql:指定输出文件路径。

    • 如果需要备份特定 schema 或表,可添加 --schema--table 参数,例如:

      gs_dump -p 5432 postgres --schema public -f /tmp/backup.sql
      
  3. 将备份文件复制到本地主机
    将容器内的 /tmp/backup.sql 复制到本地主机(例如当前目录下的 backup.sql):

    docker cp opengauss:/tmp/backup.sql ./backup.sql
    
  4. 验证备份文件
    检查本地 backup.sql 是否生成并包含正确内容:

    ls -l backup.sql
    head -n 10 backup.sql
    

    确认文件非空且包含 SQL 语句(如 CREATE TABLE 等)。

  5. (可选)清理容器内临时文件
    删除容器内的备份文件以释放空间:

    docker exec -it opengauss bash -c "rm /tmp/backup.sql"
    
  6. (可选)使用 gs_backup 工具
    OpenGauss 提供 gs_backup 工具用于备份整个数据库集群(包括配置文件等)。若需完整备份:

    docker exec -it opengauss bash -c "su - omm -c 'gs_backup -t backup --backup-dir=/tmp/backup_dir'"
    

    然后将备份目录复制到本地:

    docker cp opengauss:/tmp/backup_dir ./backup_dir
    

    清理容器内备份目录:

    docker exec -it opengauss bash -c "rm -rf /tmp/backup_dir"
    

    注意:gs_backup 备份包含更多系统文件,适合灾难恢复,但文件较大。

三、注意事项

  • 备份频率:建议定期备份(如通过 cron 脚本自动化)。可参考 GitHub 上 Docker 备份脚本(如 tiredofit/docker-db-backup)实现定时备份。

  • 文件权限:确保 omm 用户有权限写入 /tmp。如有权限问题,调整文件权限:

    docker exec -it opengauss bash -c "chmod 777 /tmp"
    
  • 备份完整性:检查 backup.sql 是否包含所有表和数据。如有错误,查看终端输出,可能是 schema 或权限问题。

  • 存储安全:将 backup.sql 存储到安全位置(如云存储),避免单点故障。

  • 版本兼容性:确保备份文件与 OpenGauss 7.0.0-rc1 兼容。如果计划在其他版本恢复,检查兼容性。

  • Docker Desktop 扩展:Docker Desktop 提供 “Volumes Backup & Share” 扩展,可备份卷数据,但对于数据库,建议优先使用 gs_dump 以确保数据一致性。

四、自动化备份(可选)

​ 若需定期备份,可在主机上创建脚本(例如 backup_opengauss.sh):

#!/bin/bash
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
docker exec -it opengauss bash -c "su - omm -c 'gs_dump -p 5432 postgres -f /tmp/backup_${TIMESTAMP}.sql'"
docker cp opengauss:/tmp/backup_${TIMESTAMP}.sql ./backup_${TIMESTAMP}.sql
docker exec -it opengauss bash -c "rm /tmp/backup_${TIMESTAMP}.sql"

​ 添加执行权限并加入 cron

chmod +x backup_opengauss.sh
crontab -e

​ 添加定时任务(例如每天凌晨 2 点):

0 2 * * * /path/to/backup_opengauss.sh

五、验证备份

登录数据库查看表结构:

docker exec -it opengauss bash -c "su - omm -c 'gsql -d postgres -p 5432 -c \"\dt\"'"

确保备份文件中包含所有表和数据。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/87334.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/87334.shtml
英文地址,请注明出处:http://en.pswp.cn/diannao/87334.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

实时中值滤波 + 低通滤波 示例程序(STM32环境)

一、功能概述 本示例实现两个滤波器: 中值滤波器(Median Filter):对短期异常值(如尖峰噪声)有良好的抑制能力;低通滤波器(Low-Pass Filter):对数据进行平滑…

AtCoder Beginner Contest 409 题解

本文为AtCoder Beginner Contest 409 的详细题解 目录 题目A: 题目大意: 解题思路: 代码(C): 题目B: 题目大意: 解题思路: 代码(C): 题目C: 题目大意: 解题思路: 代码(C): 题目D: 题目大意: 解题思路: 代码(C): 题目E: 题目大意: 解题思路: 代码(C): 题目A…

Spring @Environment 典型用法

简单说:Spring 里没有直接叫 Environment 的注解,更准确说常用的是 Autowired 注入 Environment 对象,或者结合 Value 配合 Environment 读取配置 。 支持从以下来源读取: 1、application.properties / .yaml 2、JVM 参数&#xf…

【集合与结构体】5.2(课本题)总结代码

ds老师产物&#xff0c;纯为期末复习&#xff0c;自用。 题目1 编写程序&#xff0c;将一个整型变量右移 4 位&#xff0c;并以二进制数形式输出该整数在移位前和移位后的数值。 //观察系统填补空缺的数位情况 代码解答 #include <iostream>//编写程序&#xff0c;将一个…

16.max/min最大最小值函数

1.基本使用 max/min函数返回满足where条件的一列的最大/最小值。 select max(column_name)|min(column_name) from table_namewhere where_definition 示例&#xff1a; ①求班级总分的最高分 #求班级总分的最高分 SELECT MAX(math_scorechinese_scoreenglish_score)AS 总分…

需要做一款小程序,用来发券,后端如何进行设计能够保证足够安全?

温馨提示&#xff1a;本文由ai生成&#xff0c;请辨别阅读&#xff0c;本文仅提供一种思考的方式和设计思路 设计一个安全的后端系统&#xff0c;用于发放优惠券的小程序&#xff0c;需要考虑多个安全层面&#xff0c;包括身份验证、数据安全、API 安全、以及防止常见攻击&…

ACM设计平台-核心模块解析-赵家康

负责模块解析-赵家康 一、Login.vue 功能逻辑、数据绑定、表单验证、与后端交互 Vue 登录页面的代码设计 代码功能概览 代码实现了一个典型的登录页功能&#xff0c;核心包括&#xff1a; 表单输入&#xff08;学号、用户名、密码、验证码&#xff09; 验证码生成与校验 勾…

在 VMware (WM) 虚拟机上安装的 Ubuntu 22.04 分配了 20GB 磁盘,但仅使用 10GB 就显示 “空间已满“

可能原因及解决方案 虚拟机磁盘未实际扩容&#xff08;仅调整了虚拟大小&#xff09; 现象&#xff1a;在 VMware 里调整了磁盘大小&#xff08;如 20GB → 50GB&#xff09;&#xff0c;但 Ubuntu 内部仍只识别 10GB。 原因&#xff1a;VMware 调整的是虚拟磁盘上限&#xf…

初学STM32全功能按键非阻塞式实现和强化

其实笔者以前学51的时候按键功能就包含非阻塞式的&#xff0c;而且还包括矩阵按键的非组塞式按键实现。开关的长短键功能笔者在之前的51博文中笔者自己尝试写过&#xff0c;功能是有了但写的其实很混乱&#xff0c;几乎没有移植的价值。这次江科大刚好出了新的教程&#xff0c;…

【网络原理】网络原理简单认识 —— 内含网络通信基础、五元组、网络协议(OSI 七层协议、TCP/IP 五层(或四层)协议)、封装和分用

目录 1. 网络互连 1.1 局域网LAN 1.2 广域网WAN 2 网络通信基础 2.1 IP地址 2.2 端口号 2.3 网络协议 3. 五元组 4. 协议分层 4.1 OSI 七层网络模型 4.2 TCP/IP 五层&#xff08;或四层&#xff09;网络模型 4.3 网络设备所在分层(经典笔试题) 5. 网络数据传输的基…

嵌入式之硬件学习(三)通信方式、串口通信

目录 一、通信种类 1、并行通信 2、串行通信 3、单工模式(Simplex Communication) 4、半双工通信(Half-Duplex Communication) 5、全双工通信(Full-Duplex Communication) 6、串行的异步通信与同步通信 &#xff08;1&#xff09;异步通信 &#xff08;2&#xff09;同…

【微信小程序】3、SpringBoot整合WxJava发送订阅消息

1、创建消息模板 在公共模板库里面选择符合自己业务场景的消息模板&#xff0c;例如&#xff1a; 每个消息模板最多选择5项&#xff0c;可根据自己业务需求自行选择&#xff0c;顺序也可以自己决定。提交后&#xff0c;我们就得到了属于自己的消息模板ID 2、文档阅读 官方文…

Flask 快速精通:从入门到实战的轻量级 Web 框架指南

Flask 作为 Python 生态中最受欢迎的轻量级 Web 框架&#xff0c;以其简洁灵活的设计理念赢得了开发者的青睐。本文将系统梳理 Flask 的核心概念与实战技巧&#xff0c;帮助你快速掌握这一强大框架。 一、Flask 框架概述 1.1 轻量级框架的核心特性 Flask 诞生于 2010 年&…

Python爬取豆瓣短评并生成词云分析

一、项目概述 本项目的目标是爬取豆瓣上某部电影的短评数据&#xff0c;并生成词云进行情感分析。我们将使用Python编程语言&#xff0c;借助爬虫技术获取数据&#xff0c;并利用自然语言处理和数据可视化工具进行分析。具体步骤包括&#xff1a; 爬取豆瓣短评数据。数据清洗…

Controller Area Network (CAN) 通信机制简介

目录 1. CAN 概述 2. 物理结构与传输机制 3. 消息格式与仲裁机制 4. 错误检测与总线状态 5. 工业用 CAN 接口 6. 本讲总结 1. CAN 概述 CAN&#xff08;Controller Area Network&#xff09;是由德国博世&#xff08;Bosch&#xff09;公司于 1983 年提出的串行通信协议…

我有一个想法

我有一个想法 我想为家乡做点事情&#xff0c;但是又不知道从哪里开始。 也许为家乡的教育做点事情是比较靠谱的。 于是&#xff0c;我就想到了&#xff0c;是不是可以在高中学校&#xff0c;设立一个“鸿鹄”奖学金&#xff1f; 这个奖学金怎么使用呢&#xff1f; 在每年9月份…

【Pandas】pandas DataFrame stack

Pandas2.2 DataFrame Reshaping sorting transposing 方法描述DataFrame.droplevel(level[, axis])用于**从 DataFrame 的索引&#xff08;行或列&#xff09;中删除指定层级&#xff08;level&#xff09;**的方法DataFrame.pivot(*, columns[, index, values])用于重塑 Dat…

Java 自动关闭资源语法糖 - try-with-resources

文章目录 Java 自动关闭资源语法糖 - try-with-resources前言优势1、自动资源管理2、处理多重资源3、异常处理更健壮4、适用条件 总结 Java 自动关闭资源语法糖 - try-with-resources 前言 日常开发中&#xff0c;我们经常会看到如下代码&#xff1a; try (InputStream is …

MyBatis中的动态SQL是什么?

大家好&#xff0c;我是锋哥。今天分享关于【MyBatis中的动态SQL是什么&#xff1f;】面试题。希望对大家有帮助&#xff1b; MyBatis中的动态SQL是什么&#xff1f; 超硬核AI学习资料&#xff0c;现在永久免费了&#xff01; MyBatis中的动态SQL指的是根据不同的条件&#x…

【Java反射】如何新增对象中的属性,与JavaScript中的直接添加属性有什么区别?

问&#xff1a; Object obj new Object(); //获取一个类的class对象 Class<?> objClass Object.class; try { //通过newInstance方法创建一个新的属性 Field newField Field.class.newInstance(); newField.setAccessible(true); newField.set(obj, “index”); }ca…