Linux下定时自动备份Docker中所有SqlServer数据库[亲测有效]

Linux下定时自动备份Docker中所有SqlServer数据库[亲测有效]准备工作 一台Linux(Centos7为例)服务器。 安装Docker服务。 安装并启动SqlServer容器服务。 编写Shell文件 给出一个备份的范例 #!/bin/bash #设置mssql

Linux下定时自动备份Docker中所有SqlServer数据库

准备工作

  1. 一台Linux(Centos7为例)服务器。
  2. 安装Docker服务。
  3. 安装并启动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 : 要执行的操作

举例:

  1. 每晚21:30重启apache: 30 21 * * * service httpd restart
  2. 每月1、10、22日的4:45重启apache : 45 4 1,10,22 * * service httpd restart
  3. 每月1到10日的4:45重启apache : 45 4 1-10 * * service httpd restart
  4. 每隔两分钟重启apache : */2 * * * * service httpd restart 或者 1-59/2 * * * * service httpd restart
  5. 每晚11点到早上7点间,每隔1小时重启apache : 0 23-7/1 * * * service httpd restart
  6. 每晚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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/4716.html

(0)
上一篇 2023-06-07 20:30
下一篇 2023-06-08

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注