shell腳本備份PostgreSQL數據庫和庫下表

注意:

  • 以下為對PostgreSQL13.16版本數據庫備份shell腳本參考
  • 請確認備份節點上psql和pgdump的版本不至于太低,建議>=13.16
  • 該腳本目前是對于整庫、(默認針對public這個schema,如果有其他schema,請自行添加一層循環)庫下各表都做了備份,若不需要對各表進行備份,去除關于備表的for循環即可

一.腳本內容?

#!/bin/bash# 定義連接pg的用戶、密碼、地址、端口
export pg_user="postgres"
export pg_pass="SLBpg2025"
export pg_host="192.168.2.199"
export pg_port="25432"
# 備份主目錄
bak_path="/data/pg/back"
# 備份數據保留周期(單位:天)
retain_days=3
# 時間格式
date="$(date +"%Y-%m-%d")"
# 日志存放目錄
log_file="$bak_path/$date/backup.log"
# 忽略備份的數據庫
exdbname=' template0| template1| postgres'
# 獲取所有數據庫名
dbname=$(PGPASSWORD=$pg_pass psql -h$pg_host -p$pg_port -U$pg_user -c "SELECT datname FROM pg_database;" | sed -n '3,$p'|head -n -2 | grep -Ev "^($exdbname)$")
echo $dbname
if [ -z "$dbname" ]; thenecho "未獲取到有效的數據庫列表,請檢查 PGSQL 連接和權限。" > $log_fileexit 1
fifor db in $dbname; do# 創建數據庫對應的備份目錄db_backup_dir="$bak_path/$date/$db"if [ ! -d "$db_backup_dir" ]; thenmkdir -p "$db_backup_dir"fi# 備份整個數據庫PGPASSWORD=$pg_pass pg_dump -h$pg_host -p$pg_port -U$pg_user $db | gzip > $db_backup_dir/${db}_$(date +%F).sql.gzif [ $? -ne 0 ]; thenecho "備份數據庫 $db 失敗。" >> $log_fileelseecho "數據庫 $db 備份成功,存放路徑 $db_backup_dir/${db}_$(date +%F).sql.gz" >> $log_filefi# 獲取數據庫中的表列表tb_list=$(PGPASSWORD=$pg_pass psql -h$pg_host -p$pg_port -U$pg_user -d"$db" -tAc "SELECT tablename FROM pg_tables WHERE schemaname = 'public';")# 檢查是否獲取到表列表if [ -z "$tb_list" ]; thenecho "未獲取到數據庫 $db 中的表列表。" >> $log_filecontinuefi# 對每個表進行操作for tb in $tb_list; do# 備份單個表PGPASSWORD=$pg_pass pg_dump -h$pg_host -p$pg_port -U$pg_user -d"$db" -t"$tb" -F p | gzip > "$db_backup_dir/${db}_${tb}_$(date +%F).sql.gz"if [ $? -ne 0 ]; thenecho "備份表 $db.$tb 失敗。" >> $log_fileelseecho "表 $db.$tb 備份成功,存放路徑 $db_backup_dir/${db}_${tb}_$(date +%F).sql.gz" >> $log_filefidone
donefind $bak_path -mtime +$retain_days -exec rm -f {} \;

二.執行效果

[root@master01 back]# bash back.sh 
slb
[root@master01 back]# ll
total 4
drwxr-xr-x 3 root root   35 Feb 17 22:10 2025-02-17
-rw-r--r-- 1 root root 2157 Feb 17 22:10 back.sh
[root@master01 back]# cd 2025-02-17/
[root@master01 2025-02-17]# ll
total 4
-rw-r--r-- 1 root root 299 Feb 17 22:10 backup.log
drwxr-xr-x 2 root root 112 Feb 17 22:10 slb
[root@master01 2025-02-17]# cat backup.log 
數據庫 slb 備份成功,存放路徑 /data/pg/back/2025-02-17/slb/slb_2025-02-17.sql.gz
表 slb.students 備份成功,存放路徑 /data/pg/back/2025-02-17/slb/slb_students_2025-02-17.sql.gz
表 slb.employees 備份成功,存放路徑 /data/pg/back/2025-02-17/slb/slb_employees_2025-02-17.sql.gz

三.創建定時任務

[root@master01 2025-02-17]# tail -1 /etc/crontab 
0 2 * * * root /usr/bin/bash /data/pg/back/back.sh

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/895786.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/895786.shtml
英文地址,請注明出處:http://en.pswp.cn/news/895786.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

EXCEL解決IF函數“您已為此函數輸入太多個參數”的報錯

IF函數的基本結構是IF(條件, 值為真時的結果, 值為假時的結果),所以標準的IF函數最多只能有三個參數。當用戶輸入的參數超過三個時,Excel就會報這個錯誤。比如多個IF語句疊加,但可能在嵌套的過程中沒有正確關閉每個IF函數的括號,導…

圖像質量評價指標-UCIQE-UIQM

一、評價指標UCIQE 在文章《An underwater color image quality evaluation metric》中,提到的了評價指標UCIQE(Underwater Colour Image Quality Evaluation),是一種無參考圖像質量評價指標,主要用于評估水下圖像的質…

Vue 前端開發中的路由知識:從入門到精通

文章目錄 引言1. Vue Router 簡介1.1 安裝 Vue Router1.2 配置 Vue Router1.3 在 Vue 實例中使用 Vue Router 2. 路由的基本用法2.1 路由映射2.2 路由視圖2.3 路由鏈接 3. 動態路由3.1 動態路徑參數3.2 訪問動態參數3.3 響應路由參數的變化 4. 嵌套路由4.1 定義嵌套路由4.2 渲染…

基于Springboot+微信小程序調用文心一言大模型實現AI聊天

一、文章前言 此文主要實現基于Springboot微信小程序調用文心一言大模型實現AI聊天對話功能,使用Java作為后端語言進行支持,界面友好,開發簡單。 二、開發流程及工具準備 2.1、登錄百度智能云平臺,獲取 API Key 和 Secret Key兩個…

leaflet前端初始化項目

1、通過npm安裝leaflet包,或者直接在項目中引入leaflet.js庫文件。 npm 安裝:npm i leaflet 如果在index.html中引入leaflet.js,在項目中可以直接使用變量L. 注意:盡量要么使用npm包,要么使用leaflet.js庫,兩者一起使用容易發生…

Deepseek官網接口文檔

API 接口 生成完成 生成聊天完成 創建模型 列出本地模型 顯示模型信息 復制模型 刪除模型 拉取模型 推送模型 生成嵌入 列出運行中的模型 版本 約定 模型名稱 模型名稱遵循 model:tag 格式,其中 model 可以有一個可選的命名空間,例如 ex…

容器運行常見數據庫

一.涉及鏡像壓縮包 均為amd架構版本:mysql:5.7.42、postgres:13.16、dm8:20250206_rev257733_x86_rh6_64、oceanbase-ce:v4.0、opengauss:5.0.2 通過網盤分享的文件:db.tgz 鏈接: https://pan.baidu.com/s/1EBbFPZj1FxCA4_GxjVunWg?pwd563s 提取碼: 5…

python爬蟲系列課程2:如何下載Xpath Helper

python爬蟲系列課程2:如何下載Xpath Helper 一、訪問極簡插件官網二、點擊搜索按鈕三、輸入xpath并點擊搜索四、點擊推薦下載五、將下載下來的文件解壓縮六、打開擴展程序界面七、將xpath.crx文件拖入擴展程序界面一、訪問極簡插件官網 極簡插件官網地址:https://chrome.zzz…

PHP支付寶--轉賬到支付寶賬戶

官方參考文檔: ?https://opendocs.alipay.com/open/62987723_alipay.fund.trans.uni.transfer?sceneca56bca529e64125a2786703c6192d41&pathHash66064890? 可以使用默認應用,也可以自建新應用,此處以默認應用來講解【默認應用默認支持…

前端開發崗模擬面試題套卷A答案及解析(一)技術面部分

前端開發崗模擬面試題套卷A答案及解析(一)技術面部分 (一)技術面 一、JavaScript核心技術(ES6+) 1-1、實現防抖函數 function debounce(fn, delay) {let timer = null;return function(...args) {clearTimeout(timer); // 清除已有定時器timer = setTimeout(() =>…

對稱加密算法——IDEA加密算法

Java IDEA算法詳解 1. 理論背景 IDEA(International Data Encryption Algorithm)是一種對稱密鑰加密算法,由Xuejia Lai和James Massey于1991年提出。它被設計用于替代DES(Data Encryption Standard)算法,…

單例模式、構造函數、左值右值

拷貝構造函數 簡單的說就是——用一個對象構造另外一個對象 class Myclass {public:int d0;Myclass(int d_){d d_}; //常用的構造函數Myclass(Myclass c) //拷貝構造函數{d c.d;} }; //對比 class Myclass {public:int d0;Myclass(int d_){d d_}; //常用的構造函數Myclass…

rustdesk遠程桌面自建服務器

首先,我這里用到的是阿里云服務器 centos7版本,win版客戶端。 準備工作 centos7 服務器端文件: https://github.com/rustdesk/rustdesk-server/releases/download/1.1.11-1/rustdesk-server-linux-amd64.zip win版客戶端安裝包&#xff1…

【深度學習】Transformer入門:通俗易懂的介紹

【深度學習】Transformer入門:通俗易懂的介紹 一、引言二、從前的“讀句子”方式三、Transformer的“超級閱讀能力”四、Transformer是怎么做到的?五、Transformer的“多視角”能力六、Transformer的“位置記憶”七、Transformer的“翻譯流程”八、Trans…

用deepseek學大模型03-數學基礎 概率論 最大似然估計(MLE)最大后驗估計(MAP)

https://metaso.cn/s/r4kq4Ni 什么是最大似然估計(MLE)最大后驗估計(MAP)?深度學習中如何應用,舉例說明。 好的,我現在需要回答關于最大似然估計(MLE)和最大后驗估計&…

Socket通訊協議理解及客戶端服務器程序流程

Socket通訊我們可以從以下幾個方面簡單理解 1.Socket是網絡通信中的一項重要技術,它提供了在網絡上進行數據交換的接口。用C#、Java、C等開發語言,都可以開發Socket網絡通信程序。 2.Socket(套接字)是計算機網絡編程中的一種抽象,它允許不同…

《Stable Diffusion繪畫完全指南:從入門到精通的Prompt設計藝術》-配套代碼示例

第一章:模型加載與基礎生成 1.1 基礎模型加載 from diffusers import StableDiffusionPipeline import torch# 加載SD 1.5基礎模型(FP32精度) pipe StableDiffusionPipeline.from_pretrained("runwayml/stable-diffusion-v1-5",…

【DL】淺談深度學習中的知識蒸餾 | 輸出層知識蒸餾

目錄 一 核心概念與背景 二 輸出層知識蒸餾 1 教師模型訓練 2 軟標簽生成(Soft Targets) 3 學生模型訓練 三 擴展 1 有效性分析 2 關鍵影響因素 3 變體 一 核心概念與背景 知識蒸餾(Knowledge Distillation, KD)是一種模…

嵌入式學習第十六天--stdio(二)

文件打開 open函數 #include <fcntl.h> int open(const char *pathname&#xff0c;int flags); int open(const char *pathname&#xff0c;int flags&#xff0c;mode_t mode); 功能: 打開或創建文件 參數: pathname //打開的文件名 flags //操作…

對話智面創始人陶然:一是初心和心態,二是堅持和心力

隨著經濟全球化的加深和市場競爭的日益激烈&#xff0c;企業迅速發展成為了每一個企業家的夢想。然而&#xff0c;要實現企業的快速發展并保持競爭力&#xff0c;企業戰略的人力資源管理起著至關重要的作用。 企業的核心競爭力是“人才”的競爭&#xff0c;無論是研發、銷售、…