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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 資料庫備份指令碼資料庫指令碼
- Mysqldump備份說明及資料庫備份指令碼分享-運維筆記MySql資料庫指令碼運維筆記
- MySQL資料庫備份的shell指令碼MySql資料庫指令碼
- oracle資料庫使用rman備份指令碼Oracle資料庫指令碼
- Liunx備份mysql資料庫的shell指令碼MySql資料庫指令碼
- SQL Server2019資料庫備份與還原指令碼,資料庫可批量備份SQLServer資料庫指令碼
- 案例:通過shell指令碼實現mysql資料備份與清理指令碼MySql
- shell 備份檔案指令碼+自動清理指令碼
- 【BASIS】HANA備份指令碼,Catalog自動清理指令碼
- 使用shell 指令碼備份資料指令碼
- MogDB openGauss資料庫擴縮容的幾種方式資料庫
- Shell多執行緒備份資料庫的指令碼執行緒資料庫指令碼
- KOSQL Server2019資料庫備份與還原指令碼(批量備份)zrbSQLServer資料庫指令碼
- Mysql定時備份資料指令碼MySql指令碼
- 自動定時備份 mysql 資料庫 的 shell 指令碼MySql資料庫指令碼
- [SQLServer]NetCore中將SQLServer資料庫備份為Sql指令碼SQLServerNetCore資料庫指令碼
- Mysql資料庫備份及恢復MySql資料庫
- Dedecms備份的資料檔案位置及備份資料庫的方法資料庫
- 【MySQL】Xtrabackup備份及恢復指令碼MySql指令碼
- 備份指令碼指令碼
- MySQL:Windows下分庫備份指令碼MySqlWindows指令碼
- 資料庫備份資料庫
- MOGDB/openGauss索引推薦及虛擬索引索引
- rman 備份指令碼指令碼
- mysql備份指令碼MySql指令碼
- ORACLE備份指令碼Oracle指令碼
- 初探MySQL資料備份及備份原理MySql
- mysql 資料庫 備份MySql資料庫
- 資料庫備份策略資料庫
- MongoDB資料庫備份MongoDB資料庫
- MOGDB/openGauss資料庫執行計劃快取/失效機制的測試資料庫快取
- 【DATAPUMP】Oracle資料泵定時備份刪除指令碼Oracle指令碼
- oracle資料庫備份之exp增量備份Oracle資料庫
- 自動備份指令碼指令碼
- windows mysqldump備份指令碼WindowsMySql指令碼
- MogDB openGauss故障排查流程
- oracle 備份資料庫,匯出資料庫Oracle資料庫
- 使用RMAN備份資料庫資料庫