備份docker desktop中的opengauss數據庫

文章目錄

  • 備份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…