给出一个备份的范例
#!/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的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服务确保服务能正常运行。
- 第一个* : 分钟(0–59)
- 第二个* : 小时(0–23)
- 第三个* : 日期(0–31)
- 第四个* : 月份(1–12)
- 第五个* : 星期0–7(0或者7表示星期天)
- comand : 要执行的操作
举例:
Original: https://www.cnblogs.com/ykbb/p/16734907.html
Author: 一块白板
Title: Linux下定时自动备份Docker中所有SqlServer数据库
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/609703/
转载文章受原作者版权保护。转载请注明原作者出处!