亚洲视频二区_亚洲欧洲日本天天堂在线观看_日韩一区二区在线观看_中文字幕不卡一区

公告:魔扣目錄網(wǎng)為廣大站長(zhǎng)提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請(qǐng)做好本站友鏈:【 網(wǎng)站目錄:http://www.430618.com 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會(huì)員:747

目錄
  • PostgreSQL簡(jiǎn)介
  • 業(yè)務(wù)場(chǎng)景
  • 數(shù)據(jù)庫維護(hù)
    • docker-compose配置
    • 備份腳本
    • 更新表結(jié)構(gòu)腳本

PostgreSQL簡(jiǎn)介

  • PostgreSQL是一種開源的關(guān)系型數(shù)據(jù)庫管理系統(tǒng),它是一個(gè)功能強(qiáng)大、高度可定制化和支持復(fù)雜應(yīng)用的數(shù)據(jù)庫。它支持廣泛的數(shù)據(jù)類型,包括數(shù)值、文字、二進(jìn)制、地理空間等多種類型,同時(shí)還擁有高級(jí)數(shù)據(jù)建模和表連接等功能。PostgreSQL是使用ANSI SQL標(biāo)準(zhǔn)的一種數(shù)據(jù)庫,也支持JSON、XML等多種數(shù)據(jù)格式。
  • PostgreSQL 是一個(gè)功能強(qiáng)大、可靠性高、豐富性強(qiáng)的數(shù)據(jù)庫管理系統(tǒng),廣泛應(yīng)用于大型企業(yè)和各類應(yīng)用程序。
  • 在開源界,PostgreSQL得到了廣泛的認(rèn)可和支持,并且在全球范圍內(nèi)有著龐大的社區(qū)和開發(fā)者團(tuán)隊(duì)。它是一種成熟的數(shù)據(jù)庫技術(shù),也是當(dāng)今最具活力和發(fā)展?jié)摿Φ拈_源數(shù)據(jù)庫之一。

業(yè)務(wù)場(chǎng)景

  • 我們有一小部分客戶,項(xiàng)目涉及路口較少,本身對(duì)平臺(tái)的需求較少,對(duì)平臺(tái)并發(fā)量也沒啥要求
  • 另一方面,也是比較重要的原因,他們沒有買新服務(wù)器的預(yù)算,只會(huì)提供給我們一臺(tái)比較老的windows server服務(wù)器,用來部署平臺(tái)
  • 為了部署和運(yùn)維方便,我們會(huì)將所有微服務(wù)和中間件,使用docker部署,使用docker-compose統(tǒng)一管理配置文件
  • 在windows機(jī)器上安裝virtualBox,在里面安裝CentOS7虛擬機(jī),在虛擬機(jī)里部署平臺(tái)(數(shù)據(jù)庫也使用了docker部署)
  • 客戶是內(nèi)網(wǎng)環(huán)境,后續(xù)更新部署時(shí),主要是整理好部署包和更新腳本,當(dāng)?shù)鼐S保配合更新。這時(shí)出現(xiàn)了一個(gè)問題,有時(shí)候需要修改表結(jié)構(gòu),當(dāng)?shù)鼐S保人員不會(huì)操作(其實(shí)他們主要是使用平臺(tái)幫客戶干活,不是專業(yè)運(yùn)維)
  • 現(xiàn)在需要在原有的程序更新腳本里,把數(shù)據(jù)庫結(jié)構(gòu)更新過程放進(jìn)去,使維保人員只需要執(zhí)行一個(gè)腳本即可完成更新
  • 對(duì)于一個(gè)生產(chǎn)環(huán)境,數(shù)據(jù)庫的備份策略是必要的,至少要做到每天備份一次。由于我們只有業(yè)務(wù)數(shù)據(jù)存儲(chǔ)在PostgreSQL,整體數(shù)據(jù)量不大,所以采用全量備份

數(shù)據(jù)庫維護(hù)

docker-compose配置

  • 首先放一下我們的PostgreSQL的docker-compose配置
  # 數(shù)據(jù)庫服務(wù)
  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數(shù)據(jù)庫存放數(shù)據(jù)的data目錄映射出來,其他都是通用配置,用戶名、密碼、密碼訪問、時(shí)區(qū)等
  • 數(shù)據(jù)目錄映射出來,也方便做數(shù)據(jù)的全量備份與恢復(fù)。

備份腳本

  • 可以使用定時(shí)任務(wù),在每天凌晨直接對(duì)映射出來的文件夾,進(jìn)行壓縮備份到其他目錄
  • 下面是備份腳本pg-backup.sh,只保留10天的備份,循環(huán)刪除最早的一天
#!/bin/bash
echo "======== start backup pg data ========"
# pg 數(shù)據(jù)目錄
pgdata=/home/signal/instance/volumes
target=/home/bak/pgbak
if [ ! -d $target ];then
    mkdir -p $target
else
    echo "文件夾已經(jīng)存在"
fi
# 當(dāng)前日期
curDay=$(date "+%Y-%m-%d")
echo ${curDay}
# 保留文件數(shù)
ReservedNum=10
# 去pg 數(shù)據(jù)目錄,按日期壓縮到備份文件夾
cd $pgdata
tar -zcvf $target/postgresql-$curDay.tgz postgresql
# 刪除多余天數(shù)的壓縮文件
#*.tgz表示篩選文件類型,去掉則針對(duì)整個(gè)目錄的文件
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 ========"
  • 然后將腳本加入服務(wù)器定時(shí)執(zhí)行即可,可以直接使用crontab

更新表結(jié)構(gòu)腳本

  • docker是可以執(zhí)行sh腳本的,使用docker exec 容器name/id /bin/sh -c "命令"即可
  • 在原有的程序更新腳本里,加入數(shù)據(jù)庫更新命令即可,具體命令如下:
echo "更新postgresql表結(jié)構(gòu)"
docker exec postgres /bin/sh -c "sh /var/lib/postgresql/data/db_update.sh"
  • 其中/var/lib/postgresql/data/db_update.sh是數(shù)據(jù)庫更新腳本,使用psql 命令執(zhí)行SQL文件,具體如下:
#!/bin/bash
# 以postgres用戶 執(zhí)行此腳本 更新數(shù)據(jù)庫
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文件夾已經(jīng)映射出來了,更新部署程序時(shí),順便更新core_update.sql即可

分享到:
標(biāo)簽:備份 執(zhí)行 數(shù)據(jù)庫 腳本 運(yùn)行
用戶無頭像

網(wǎng)友整理

注冊(cè)時(shí)間:

網(wǎng)站:5 個(gè)   小程序:0 個(gè)  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會(huì)員

趕快注冊(cè)賬號(hào),推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學(xué)四六

運(yùn)動(dòng)步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動(dòng)步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績(jī)?cè)u(píng)定2018-06-03

通用課目體育訓(xùn)練成績(jī)?cè)u(píng)定