一、數(shù)據(jù)定時備份
解釋:備份指定數(shù)據(jù)庫,能有效在發(fā)生錯誤時,預(yù)防錯誤,進(jìn)行恢復(fù)
1.基本備份
#!/bin/bash
sudo -u postgres pg_dump -U postgres -d dbname -Fc > /home/postgres/backup/backup.dump
# sudo -u postgres:先切換到postgres用戶;pg_dump是postgresql數(shù)據(jù)庫壓縮備份方式;-U指定用戶(默認(rèn)就是postgres) ;-d指定要備份的數(shù)據(jù)庫;-Fc該格式可以確保更高的備份效率和恢復(fù)速度;> /home/postgres/backup/backup.dump寫入到指定文件位置
2.備份超過7天的刪除
#!/bin/bash
sudo -u postgres pg_dump -U postgres -d dbname -Fc > /home/postgres/backup/backup_$(date +\%Y\%m\%d).dump
find /home/postgres/backup/ -name "backup_*.dump" -mtime +7 -exec rm {} \;
3.本地備份+其它服務(wù)器備份
#!/bin/bash
sudo -u postgres pg_dump -U postgres -d dbname -Fc > /home/postgres/backup/backup_$(date +\%Y\%m\%d).dump
find /home/postgres/backup/ -name "backup_*.dump" -mtime +7 -exec rm {} \;
scp /home/postgres/backup/backup_$(date +\%Y\%m\%d).dump user@8.8.8.8:/home/postgres/backup/backup_$(date +\%Y\%m\%d).dump
# 遠(yuǎn)程服務(wù)器使用scp命令,scp后面第一個參數(shù)是傳輸哪個文件,后一個參數(shù)是遠(yuǎn)程服務(wù)器(user是遠(yuǎn)程服務(wù)器用戶名,8.8.8.8為其ip地址)執(zhí)行這行命令需要輸入密碼(不利于自動化下面介紹自動化方法)
# scp -r能傳送文件夾
免密
ssh-keygen -t rsa
# 一直回車,創(chuàng)建的文件目前在 /當(dāng)前用戶/.ssh
ssh-copy-id <username>@<remote_host>
# 將公鑰復(fù)制到遠(yuǎn)程主機(該命令不是在遠(yuǎn)程主機執(zhí)行)
# 若提示.ssh創(chuàng)建失敗,即username沒有權(quán)限,使用高權(quán)限用戶登錄遠(yuǎn)程服務(wù)器在/home/username/創(chuàng)建/.ssh/目錄即可,并將其所有權(quán)給username chown username .ssh
測試:ssh username@server_address(直接免密就成功了)
4.自動化任務(wù)
cron
crontab -e
# 寫入下面內(nèi)容,比如定時在北京時間0點執(zhí)行,每天在0點都會執(zhí)行
0 0 * * * /bin/bash /path/1.sh
日志查看:tail -f -n 200 /var/log/syslog
systemd timer
解釋:因為博主在自己電腦上怎么用cron都不行,故使用了這個,其效果同cron類型,但效率甚至比cron高出一點點vim /etc/systemd/system/mytask.service
[Unit]
Description=My Task
[Service]
ExecStart=/bin/bash /path/to/your/script.sh
[Install]
WantedBy=default.target
vim /etc/systemd/system/mytask.timer
# 下面例子是每天在0點執(zhí)行
[Unit]
Description=Run my service every Beijing 0 clock
[Timer]
OnCalendar=*-*-* 00:00:00
Persistent=true
[Install]
WantedBy=timers.target
# 依次執(zhí)行下面的代碼(上面文件有修改都要依次執(zhí)行下面內(nèi)容)
sudo systemctl daemon-reload
sudo systemctl start mytask.timer
sudo systemctl start mytask.service
查看現(xiàn)有定時任務(wù)隊列
:systemctl list-timers
關(guān)閉任務(wù)
:systemctl stop mytask.timer
文章來源:http://www.zghlxwxcb.cn/news/detail-639835.html
二、數(shù)據(jù)恢復(fù)
解釋:對已經(jīng)經(jīng)過pg_dump
的內(nèi)容,進(jìn)行恢復(fù)文章來源地址http://www.zghlxwxcb.cn/news/detail-639835.html
1.基本恢復(fù)
createdb dbname
# 此為新建即將存入恢復(fù)數(shù)據(jù)的數(shù)據(jù)庫
# 可能需要先su postgres
pg_restore -d dbname < backup.dump
pg_restore為恢復(fù)pg_dump -Fc 選項快速創(chuàng)建的備份數(shù)據(jù)庫表;-d dbname為指定上面創(chuàng)建的數(shù)據(jù)庫;backup.dump為備份文件名
到了這里,關(guān)于三、python Django ORM postgresql[數(shù)據(jù)定時備份、數(shù)據(jù)恢復(fù)]的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!