MOGDB/openGauss資料庫gs_dump備份指令碼及清理
有客戶需要對MOGDB/openGauss進行每天邏輯備份。如下指令碼分享給大家。當然專業的備份工具也可以瞭解一下雲和恩墨的BRM備份工具。
一、備份指令碼
1.指令碼
c.sh (可以改名字)
# database dump shell # you should change the GAUSSHOME GAUSSPORT GAUSSDATA DUMP_USER DUMP_PASSWORD #!/bin/bash source /etc/profile source /home/omm/.bash_profile export GAUSSHOME=/opt/gaussdb/app export GAUSSPORT=26000 export GAUSSDATA=/gaussdb/data/dn1 export PATH=$PGHOME/bin:$PATH DUMP_USER=ysla DUMP_PASSWORD='1qaz@WSX' CUR_DATE=`date "+%Y-%m-%d-%H%M"` dbnamelist=`cat oo.txt` #Loading DBLIST gsql -p ${GAUSSPORT} postgres -c "select datname from pg_database where datname not in ('template1','template0','postgres')" -t | grep -v '^$' >oo.txt #save directory SAVE_BASE_DIR="/gaussdb/dump_dir" DAT_FILE_DIR="${SAVE_BASE_DIR}/${CUR_DATE}" if [ -d ${DAT_FILE_DIR} ] then : else mkdir -p ${DAT_FILE_DIR} fi # The real backup step! echo "`date "+%Y-%m-%d-%H%M"` begin backup db " for dbname in ${dbnamelist} do gs_dump -E UTF8 ${dbname} -U ${DUMP_USER} -W ${DUMP_PASSWORD} -p ${GAUSSPORT} -F p -f ${DAT_FILE_DIR}/${dbname}_${CUR_DATE}.sql gs_dumpall -l ${dbname} -U ${DUMP_USER} -W ${DUMP_PASSWORD} -p ${GAUSSPORT} -g -f ${DAT_FILE_DIR}/global_data_${dbname}_${CUR_DATE}.sql done tar -cjvf ${DAT_FILE_DIR}.tar.gz /${DAT_FILE_DIR} --remove-files echo "`date "+%Y-%m-%d-%H%M"` end backup db "
這個指令碼需要修改GAUSSHOME GAUSSPORT GAUSSDATA DUMP_USER DUMP_PASSWORD這幾個(資料庫家目錄,埠,資料目錄,做dump的使用者,以及密碼),之後直接執行就可以。指令碼會自動查詢資料庫,並把’template1’,'template0’和’postgres’資料庫排除掉,然後把其他資料庫的資料和全域性物件各自備份一份,最後把備份的.sql檔案進行壓縮。
2,指令碼執行
執行結果如下:
去備份儲存的目錄下
解壓一個檔案
如下資料庫的資料儲存的檔名格式為(資料庫名_日期時間.sql)
全域性物件儲存的檔名格式為(global_data_資料庫名_日期時間.sql)
檢視資料庫對應的資料備份
[omm@node1 2022-01-07-1634]$ vim ysla_2022-01-07-1634.sql
檢視資料庫對應的全域性物件備份
[omm@node1 2022-01-07-1634]$ vim global_data_ysla_2022-01-07-1634.sql
二、備份指令碼加到crontab
將如下一行加入crontab,讓指令碼每天凌晨12:30執行,這裡的flock是為了防止一個指令碼沒執行完就到了這個指令碼下一次執行的週期,可能會導致併發問題,嚴重時會導致出現髒資料效能瓶頸等惡性迴圈,所以使用flock建立排它鎖
-x 獨佔鎖 -n 直接失敗 如發現被鎖如就失敗不等待,除非解鎖
30 00 * * * /usr/bin/flock -xn /tmp/test.lock -c 'sh /home/omm/c.sh >> c.log'
三、備份保留,清理
每天都進行備份,如果備份天數過多不清理,可能使目錄打滿,因此需要新增備份清理策略,我這裡用的是crontab的方式,每天凌晨3:30清理過期資料。
如下一行加入到crontab裡邊,也是用了flock,這一行命令會找備份目錄下的檔案,排除掉隱藏檔案,並把30天之前的.tar.gz檔案刪除。
30 03 * * * /usr/bin/flock -xn /tmp/test1.lock -c "find /gaussdb/dump_dir -not -path '*/\.
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69990629/viewspace-2851213/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 資料庫備份指令碼資料庫指令碼
- 資料庫全備份指令碼資料庫指令碼
- catalog備份資料庫及RMAN儲存指令碼資料庫指令碼
- 《mysql資料庫備份小指令碼》MySql資料庫指令碼
- Mysqldump備份說明及資料庫備份指令碼分享-運維筆記MySql資料庫指令碼運維筆記
- oracle資料庫使用rman備份指令碼Oracle資料庫指令碼
- MySQL資料庫備份的shell指令碼MySql資料庫指令碼
- Oracle多例項資料庫備份指令碼Oracle資料庫指令碼
- 《mysql資料庫備份小指令碼》(轉)MySql資料庫指令碼
- 簡單的備份資料庫指令碼資料庫指令碼
- mysqldump來備份MYSQL資料庫(指令碼)MySql資料庫指令碼
- oracle資料庫資料備份成文字的指令碼Oracle資料庫指令碼
- 案例:通過shell指令碼實現mysql資料備份與清理指令碼MySql
- Liunx備份mysql資料庫的shell指令碼MySql資料庫指令碼
- 恢復目錄資料庫備份指令碼資料庫指令碼
- Mysql資料庫的簡單備份指令碼MySql資料庫指令碼
- 資料庫連結的備份指令碼(轉)資料庫指令碼
- shell 備份檔案指令碼+自動清理指令碼
- 【Oracle指令碼】-很不錯的Windows下資料庫備份EXP指令碼Oracle指令碼Windows資料庫
- MogDB openGauss資料庫擴縮容的幾種方式資料庫
- 使用shell 指令碼備份資料指令碼
- 課時7-備份與恢復----資料庫備份策略指令碼資料庫指令碼
- 資料庫全備指令碼資料庫指令碼
- 【BASIS】HANA備份指令碼,Catalog自動清理指令碼
- Shell多執行緒備份資料庫的指令碼執行緒資料庫指令碼
- Linux定時備份資料庫與指令碼加密Linux資料庫指令碼加密
- 關於Oracle資料庫熱備份指令碼深入剖析Oracle資料庫指令碼
- SQL Server2019資料庫備份與還原指令碼,資料庫可批量備份SQLServer資料庫指令碼
- MySQL備份之分庫分表備份指令碼MySql指令碼
- Mysql定時備份資料指令碼MySql指令碼
- RMAN全庫備份指令碼指令碼
- 自動定時備份 mysql 資料庫 的 shell 指令碼MySql資料庫指令碼
- windows下oracle資料庫的exp自動備份指令碼WindowsOracle資料庫指令碼
- Oracle expdp/impdp匯入匯出備份資料庫指令碼Oracle資料庫指令碼
- 讓資料庫更安全,Mysql自動備份指令碼(轉)資料庫MySql指令碼
- SQL備份資料庫程式碼SQL資料庫
- 網站資料定時備份指令碼分享 (保留最近的30份備份資料)網站指令碼
- 【MySQL】Xtrabackup備份及恢復指令碼MySql指令碼