日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

Linux下定時自動備份Docker中所有SqlServer數據庫的腳本_docker

作者:一塊白板 ? 更新時間: 2022-11-19 編程語言

準備工作

  • 一臺Linux(Centos7為例)服務器。
  • 安裝Docker服務。
  • 安裝并啟動SqlServer容器服務。

編寫Shell文件

給出一個備份的范例

#!/bin/bash
#設置mssql備份目錄
folder=/var/opt/mssql/data/databack/
day=`date +%Y%m%d%H%M%S`
#數據庫服務器,一般為localhost
host=localhost
#用戶名
user=sa
#密碼
password='********'
# 容器名稱
containerId='sqlserver'

# 循環獲取數據庫名稱
for line in $(docker exec $containerId /opt/mssql-tools/bin/sqlcmd \
   -S $host -U $user -P $password \
   -Q "select [name] from master.dbo.SysDatabases where [dbid] > 4")
do
    # 判斷是否是數據庫名稱
    if [[ $line =~ ^[a-zA-Z0-9_]+$ && $line != 'name' && $line != 'rows' ]]; then
        echo "數據庫 $line 開始備份"
        docker exec $containerId /opt/mssql-tools/bin/sqlcmd \
        -S $host -U $user -P $password \
        -Q "BACKUP DATABASE [$line] TO DISK = N'$folder$line/$line$day.bak' WITH NOFORMAT, NOINIT, NAME = N'$line Backup $day', SKIP, NOREWIND, NOUNLOAD, STATS = 10"
    fi
done

在Linux添加定時任務

添加定時任務需要使用到Linux的crontab服務。我們可以通過下列命令來檢測并安裝這個服務。

# 檢查crontab工具是否安裝
crontab -l
# 檢查crond服務是否啟動
service crond status

# 如果未安裝服務我們需要進行安裝
yum install vixie-cron
yum install crontabs

再確認安裝完成后我們使用命令 crontab -e 打開crontab的編輯功能,添加如下示例:

# 定時任務 每日0點備份
# 注意別忘記 sh 命令
0 0 * * * sh /root/databack/sqlServerBackup.sh

添加完成后可以使用命令(systemctl restart crond),重啟下crond服務確保服務能正常運行。

crontab格式介紹

參考生成工具 https://tool.lu/crontab/
格式: * * * * * comand(*以空格或tab隔開)

  • 第一個* : 分鐘(0--59)
  • 第二個* : 小時(0--23)
  • 第三個* : 日期(0--31)
  • 第四個* : 月份(1--12)
  • 第五個* : 星期0--7(0或者7表示星期天)
  • comand : 要執行的操作

舉例:

  • 每晚21:30重啟apache: 30 21 * * * service httpd restart
  • 每月1、10、22日的4:45重啟apache : 45 4 1,10,22 * * service httpd restart
  • 每月1到10日的4:45重啟apache : 45 4 1-10 * * service httpd restart
  • 每隔兩分鐘重啟apache : */2 * * * * service httpd restart 或者 1-59/2 * * * * service httpd restart
  • 每晚11點到早上7點間,每隔1小時重啟apache : 0 23-7/1 * * * service httpd restart
  • 每晚18:00至23:00,每隔30分鐘重啟apache : 0,30 18-23 * * * service httpd restart 或 0-59/30 18-23 * * * service httpd restart

原文鏈接:https://www.cnblogs.com/ykbb/archive/2022/09/27/16734907.html

欄目分類
最近更新