亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》
  • 首頁 > 
  • 教程 > 
  • 開發技術 > 
  • docker怎么運行PostgreSQL數據庫維護執行腳本備份數據庫與更新表結構

docker怎么運行PostgreSQL數據庫維護執行腳本備份數據庫與更新表結構

發布時間:2023-05-05 11:41:33 來源:億速云 閱讀:119 作者:iii 欄目:開發技術

本篇內容主要講解“docker怎么運行PostgreSQL數據庫維護執行腳本備份數據庫與更新表結構”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“docker怎么運行PostgreSQL數據庫維護執行腳本備份數據庫與更新表結構”吧!

PostgreSQL簡介

  • PostgreSQL是一種開源的關系型數據庫管理系統,它是一個功能強大、高度可定制化和支持復雜應用的數據庫。它支持廣泛的數據類型,包括數值、文字、二進制、地理空間等多種類型,同時還擁有高級數據建模和表連接等功能。PostgreSQL是使用ANSI SQL標準的一種數據庫,也支持JSON、XML等多種數據格式。

  • PostgreSQL 是一個功能強大、可靠性高、豐富性強的數據庫管理系統,廣泛應用于大型企業和各類應用程序。

  • 在開源界,PostgreSQL得到了廣泛的認可和支持,并且在全球范圍內有著龐大的社區和開發者團隊。它是一種成熟的數據庫技術,也是當今最具活力和發展潛力的開源數據庫之一。

業務場景

  • 我們有一小部分客戶,項目涉及路口較少,本身對平臺的需求較少,對平臺并發量也沒啥要求

  • 另一方面,也是比較重要的原因,他們沒有買新服務器的預算,只會提供給我們一臺比較老的windows server服務器,用來部署平臺

  • 為了部署和運維方便,我們會將所有微服務和中間件,使用docker部署,使用docker-compose統一管理配置文件

  • 在windows機器上安裝virtualBox,在里面安裝CentOS7虛擬機,在虛擬機里部署平臺(數據庫也使用了docker部署)

  • 客戶是內網環境,后續更新部署時,主要是整理好部署包和更新腳本,當地維保配合更新。這時出現了一個問題,有時候需要修改表結構,當地維保人員不會操作(其實他們主要是使用平臺幫客戶干活,不是專業運維)

  • 現在需要在原有的程序更新腳本里,把數據庫結構更新過程放進去,使維保人員只需要執行一個腳本即可完成更新

  • 對于一個生產環境,數據庫的備份策略是必要的,至少要做到每天備份一次。由于我們只有業務數據存儲在PostgreSQL,整體數據量不大,所以采用全量備份

數據庫維護

docker-compose配置

  • 首先放一下我們的PostgreSQL的docker-compose配置

  # 數據庫服務
  postgresql:
    image: postgres:14.2
    container_name: postgres
    ports:
      - 5432:5432
    volumes:
      - ./volumes/postgresql/:/var/lib/postgresql/data/
      - /etc/localtime:/etc/localtime
    environment:
      - POSTGRES_USER=postgres
      - POSTGRES_PASSWORD=xxxxxxxx
      - POSTGRES_HOST_AUTH_METHOD=md5
      - TZ=Asia/Shanghai
    restart: always
  • 主要是需要把PostgreSQL數據庫存放數據的data目錄映射出來,其他都是通用配置,用戶名、密碼、密碼訪問、時區等

  • 數據目錄映射出來,也方便做數據的全量備份與恢復。

備份腳本

  • 可以使用定時任務,在每天凌晨直接對映射出來的文件夾,進行壓縮備份到其他目錄

  • 下面是備份腳本pg-backup.sh,只保留10天的備份,循環刪除最早的一天

#!/bin/bash
echo "======== start backup pg data ========"
# pg 數據目錄
pgdata=/home/signal/instance/volumes
target=/home/bak/pgbak
if [ ! -d $target ];then
    mkdir -p $target
else
    echo "文件夾已經存在"
fi
# 當前日期
curDay=$(date "+%Y-%m-%d")
echo ${curDay}
# 保留文件數
ReservedNum=10
# 去pg 數據目錄,按日期壓縮到備份文件夾
cd $pgdata
tar -zcvf $target/postgresql-$curDay.tgz postgresql
# 刪除多余天數的壓縮文件
#*.tgz表示篩選文件類型,去掉則針對整個目錄的文件
cd $target
FileNum=$(ls -l  ./*.tgz |grep ^- |wc -l)
while(( FileNum > $ReservedNum))
do
	OldFile=$(ls -rt  ./*.tgz| head -1)
	rm -f $OldFile
	let "FileNum--"
done
echo "======== bakup pg data end ========"
  • 然后將腳本加入服務器定時執行即可,可以直接使用crontab

更新表結構腳本

  • docker是可以執行sh腳本的,使用docker exec 容器name/id /bin/sh -c "命令"即可

  • 在原有的程序更新腳本里,加入數據庫更新命令即可,具體命令如下:

echo "更新postgresql表結構"
docker exec postgres /bin/sh -c "sh /var/lib/postgresql/data/db_update.sh"
  • 其中/var/lib/postgresql/data/db_update.sh是數據庫更新腳本,使用psql 命令執行SQL文件,具體如下:

#!/bin/bash
# 以postgres用戶 執行此腳本 更新數據庫
echo 'update database'
psql -d core -U postgres -f /var/lib/postgresql/data/core_update.sql
sleep 1s
echo 'create update end'
exit
  • 其中/var/lib/postgresql/data/core_update.sql為具體的SQL文件

  • 由于/var/lib/postgresql/data文件夾已經映射出來了,更新部署程序時,順便更新core_update.sql即可

到此,相信大家對“docker怎么運行PostgreSQL數據庫維護執行腳本備份數據庫與更新表結構”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

灵武市| 吉首市| 枣强县| 土默特右旗| 木里| 徐水县| 界首市| 肇源县| 诸城市| 岑巩县| 富民县| 贵南县| 金阳县| 会昌县| 吴江市| 宜兰市| 盈江县| 巴林右旗| 沙河市| 灌阳县| 长海县| 石泉县| 松桃| 云林县| 建水县| 河北省| 广平县| 康乐县| 桓仁| 牟定县| 剑河县| 宾川县| 武陟县| 夏津县| 全椒县| 虎林市| 元谋县| 安远县| 张掖市| 武义县| 商洛市|