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

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

时间:2022-09-27 16:11:06浏览次数:112  
标签:httpd service SqlServer crontab Linux apache line Docker restart

准备工作

  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

标签:httpd,service,SqlServer,crontab,Linux,apache,line,Docker,restart
From: https://www.cnblogs.com/ykbb/p/16734907.html

相关文章

  • sqlserver查询锁表并解锁
    在SqlServer中,项目中需要写到存储过程,但是有些刚接触的小伙伴,可能会出现写了begin,没有end的情况,这种SQL语句可以保存到存储过程中,但是在执行存储过程的时候会出现锁的情况,......
  • Linux用户和用户组
    一、Linux用户和用户组的概念Linux是多用户多任务操作系统,换句话说,Linux系统支持多个用户在同一时间内登陆,不同用户可以执行不同的任务,并且互不影响。不同用户具有不......
  • Linux 创建用户并配置SSH免密登录
    补一个Linux的新用户SSH记录叭~1、创建用户 sudouseraddweisheng#weisheng:用户名用户创建成功会在磁盘生成/home/weisheng作为用户根目录 2、目录授......
  • docker安装和登陆mysql
    1.docker是什么Docker是一个开源的应用容器引擎,基于Go语言并遵从Apache2.0协议开源。Docker可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器......
  • Docker 容器里运行Docker
    参考文章:https://www.cnblogs.com/netflix/p/15131498.html在Jenkins容器里运行docker需要加上参数-v/var/run/docker.sock:/var/run/docker.sock运行jenkins的命令d......
  • SQLServer 杀死数据库下所有进程 将数据库改为多用户
    杀死所有进程USEmastergoDECLARE@SqlNVARCHAR(max)SET@Sql=''select@Sql=@Sql+'kill'+cast(spidasvarchar(50))+';'fromsys.sysprocesseswhere......
  • Linux之EOF
       常见问题:1.在EOF中存在特殊字符,例如$导致后面的无法识别,因为默认会对变量自动替换使用引号处理cat>>a.sh<<"EOF"echo`hostname`echo$HOMEEOF......
  • 基于Docker部署Skywalking
     这里用的版本是9.2.0,如果用最新版,需查看配置是否需要更改,此处使用的为默认配置,如需修改配置请自行前往官网学习https://skywalking.apache.org/docs/main/v9.2.0/en/s......
  • Linux防火墙firewall只允许特定IP访问
    1、https://blog.csdn.net/haoqi9999/article/details/125988881一、概述1、目的服务A使用端口9001,只有允许的应用才可以访问,其它未经允许服务无法正常访问(即默认应用无......
  • Amazon linux docker安装
    Amazon的服务器安装docker和普通Linux系统安装有些许的区别,安装源可以使用Amazon的1、安装Docker#安装步骤sudoyuminstall-yamazon-linux-extrasyum-utilsdevice......