docker部署mssql2017

前言

从 SQL Server 2017 开始,可以安装Linux 上的 SQL Server操作系统,同时也开始支持容器部署,更加方便了各位开发同学的使用。

先决条件

部署

docker部署请自行搜索其他博主文章,后续有时间完成docker部署教程后会在此添加连接

拉取镜像

docker pull mcr.microsoft.com/mssql/server:2017-latest

启动

docker run方式
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=12345678" \
   -p 1433:1433 --name sql1 --hostname sql1 \
   -d \
   mcr.microsoft.com/mssql/server:2017-latest

docker run参数说明

参数说明
-e “ACCEPT_EULA=Y”将 ACCEPT_EULA 变量设置为任意值,以确认接受最终用户许可协议。 SQL Server 映像的必需设置。
-e “MSSQL_SA_PASSWORD=YourStrong@Passw0rd指定至少包含 8 个字符且符合密码策略的强密码。 SQL Server 映像的必需设置。
-e “MSSQL_COLLATION=<SQL_Server_collation>”指定自定义 SQL Server 排序规则,而不使用默认值 SQL_Latin1_General_CP1_CI_AS。
-p 1433:1433将主机环境中的 TCP 端口(第一个值)映射到容器中的 TCP 端口(第二个值)。 在此示例中,SQL Server 侦听容器中的 TCP 1433,此容器端口随后会对主机上的 TCP 端口 1433 公开。
–name sql1为容器指定一个自定义名称,而不是使用随机生成的名称。 如果运行多个容器,则无法重复使用相同的名称。
–hostname sql1用于显式设置容器主机名。 如果未指定主机名,则主机名默认为容器 ID,这是随机生成的系统 GUID。
-d在后台运行容器(守护程序)。
mcr.microsoft.com/mssql/server:2017-latestSQL Server Linux 容器映像

❗️注:密码应符合 SQL Server 默认密码策略,否则容器无法设置 SQL Server,会停止工作。 默认情况下,密码必须为至少八个字符且包含以下四种字符中的三种:大写字母小写字母十进制数字符号。 可使用 docker logs 命令检查错误日志。

**数据持久化:**如果需要实现即使在容器停止后文件也能持久保存,可以在上面命令后添加 -v sqlvolume:/var/opt/mssql,其中sqlvolume就是宿主机的一个文件挂载名称,冒号后边的是容器内的目录,这样数据将会被存储在宿主机保留,避免数据丢失。

Docker-compose方式

在实际应用中,docker run方式由于参数繁多,每次启动都需要配置参数选项,所以docker-compose方式更适合日常部署。

编辑/data/mmssql/docker-compose.yml文件:

version: '3'
services:
  #服务名称
  sqlserver-db:
    #容器名称
    container_name: sqlserver-db
    #镜像名称
    image: microsoft/mssql-server-linux:2017-latest
    #端口映射
    ports:
      - 1433:1433
    #挂载宿主机目录,数据持久化
    volumes:
      - ./data:/var/opt/mssql
    #环境变量
    environment:
      - ACCEPT_EULA=Y
      #SA用户密码长度必须至少为 8 个字符,并包含以下四组中的三组字符:大写字母、小写字母、10 位基数和符号
      - MSSQL_SA_PASSWORD=Abc@1234
      - MSSQL_PID=EnterpriseCore
      - TZ=Asia/Shanghai

在docker-compose.yml文件同级目录创建挂载路径,并启动docker

[root@docker mssql]# mkdir data
[root@docker mssql]# docker compose up -d
[root@docker mssql]# docker ps
CONTAINER ID   IMAGE                                        COMMAND                  CREATED         STATUS         PORTS                                       NAMES
77ec13bea161   mcr.microsoft.com/mssql/server:2017-latest   "/opt/mssql/bin/nonr…"   5 minutes ago   Up 4 minutes   0.0.0.0:1433->1433/tcp, :::1433->1433/tcp   sqlserver-db

连接

sqlcmd方式

从 SQL Server 2017 (14.x) 开始,容器映像中加入了 SQL Server 命令行工具。 如果使用交互式命令提示符附加至此映像,则可在本地运行工具。

  1. 进入docker容器内
[root@docker mssql]# docker exec -it 77e "bash"
root@77ec13bea161:/#
  1. 通过qlcmd进行本地连接
root@77ec13bea161:/# /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P 'Abc@1234'
1> select name from master.dbo.sysdatabases
2> go
name
--------------------------------------------------------------------------------------------------------------------------------
master
tempdb
model
msdb
容器外工具

可从支持 SQL 连接的任何 Linux、Windows 或 macOS 外部工具连接到容器主机上的 SQL Server 实例。

SSMS工具

备份还原

可以使用多个不同的选项备份 Linux 上的 SQL Server 中的数据库。 在 Linux 服务器上,可以使用 sqlcmd 连接到 SQL Server 并进行备份。 如果是 Windows,则可以在连接到 Linux 上的 SQL Server 后通过用户界面进行备份。 各平台间的备份功能都是相同的

sqlcm工具

备份数据库
sqlcmd -S localhost -U SA -Q "BACKUP DATABASE [demodb] TO DISK = N'/var/opt/mssql/data/demodb.bak' WITH NOFORMAT, NOINIT, NAME = 'demodb-full', SKIP, NOREWIND, NOUNLOAD, STATS = 10"
备份事物日志

如果数据库处于完整恢复模式,还可以进行事务日志备份以获得更精细的还原选项

sqlcmd -S localhost -U SA -Q "BACKUP LOG [demodb] TO DISK = N'/var/opt/mssql/data/demodb_LogBackup.bak' WITH NOFORMAT, NOINIT, NAME = N'demodb_LogBackup', NOSKIP, NOREWIND, NOUNLOAD, STATS = 5"
还原数据库

NORECOVERY 选项用于其他日志文件备份的还原。 如果不打算还原额外的日志文件,请删除 NORECOVERY 选项。

sqlcmd -S localhost -U SA -Q "RESTORE DATABASE [demodb] FROM DISK = N'/var/opt/mssql/data/demodb.bak' WITH FILE = 1, NOUNLOAD, REPLACE, NORECOVERY, STATS = 5"
  • 还原事物日志
sqlcmd -S localhost -U SA -Q "RESTORE LOG demodb FROM DISK = N'/var/opt/mssql/data/demodb_LogBackup.bak'"

SSMS工具

备份

可以从 Windows 计算机使用 SSMS 连接到 Linux 数据库并通过用户界面进行备份。

  1. 启动 SSMS 并连接到 Linux 上的 SQL Server 实例。
  2. 在“对象资源管理器”中,右键单击数据库,选择“任务”,然后选择“备份…”。
  3. 在“备份数据库”对话框中,验证参数和选项,然后选择“确定”。
还原
  1. 在 SSMS 中,右键单击“数据库”,然后选择“还原数据库…”。
  2. 在“源”下,选择“设备:”,然后选择省略号图标 (…)。
  3. 查找你的数据库备份文件,然后选择“确定”。
  4. 在“还原计划”下,验证备份文件和设置。 选择“确定”。
  5. SQL Server 将还原数据库。

本文由mdnice多平台发布

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

运维之牛马

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值