Centos7-Docker上安装MSSQL

在Docker上安装MSSQL主要包含了以下几个步骤:

  1.下载镜像

  2.创建容器并运行

  3.安装SQL客户端

  4.执行SQL还原DB

约定:

  1.宿主主机Win10

  2.虚拟机Centos,Centos版本必须>=7.0,本文使用7.6版本

  3.容器安装到虚拟机里面

  4.容器名称为mssql2017

  5.mssql秘密设定为TYdemo@2020

  6.虚拟机目录 /opt/mssql 映射到容器 /var/opt/mssql ,里面包含了 data,log

准备:

  mkdir /opt/mssql/

  mkdir /opt/mssql/backup

  win10备份一个SQL库,暂定取名为AAA_v3.bak

操作:

  1.下载镜像

    镜像1:

    docker pull microsoft/mssql-server-linux:2017-latest

    镜像2:

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

  2.启动容器

    容器1:

    docker run --name mssql2017 -m 1024m -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=TYdemo@2020' -p 1433:1433 --restart=always -v /opt/mssql/:/var/opt/mssql -d microsoft/mssql-server-linux:2017-latest

    容器2:

    docker run --name mssql2017 -m 1024m -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=TYdemo@2020' -p 1433:1433 --restart=always -v /opt/mssql/:/var/opt/mssql -d mcr.microsoft.com/mssql/server:2017-latest

    启动代理

      docker exec -it mssql2017 /bin/bash

      /opt/mssql/bin/mssql-conf set sqlagent.enabled true

      保存退出

    重启服务

      systemctl restart mssql-server.service

  3.备份准备

    cp 数据库备份文件到虚拟机/opt/mssql/backup/目录,备份名叫名称不变

  4.客户端安装

    curl https://packages.microsoft.com/config/rhel/7/prod.repo > /etc/yum.repos.d/msprod.repo

    yum install -y mssql-tools

  5.环境变量

    echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bash_profile

    echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc

    source ~/.bashrc

  6.端口放行

    注意:基于iptables和firewall-cmd的操作方式略为不同,端口1433放行,具体操作省略;此处可用natcat连接测试了。

  7.查看备份

    查看备份逻辑名称,口令如下:

      sqlcmd -S '127.0.0.1,1433' -U SA -P 'TYdemo@2020' -Q 'RESTORE FILELISTONLY FROM DISK = "/var/opt/mssql/backup/AAA.bak"' | tr -s ' ' | cut -d ' ' -f 1-2

      LogicalName PhysicalName

      ----------------------------------------------------------------------------------------------------------------

      AAA_v1 D:\SqlData\data\MSSQL11.MSSQLSERVER\MSSQL\DATA\AAA_v3.mdf

      AAA_v1_log D:\SqlData\data\MSSQL11.MSSQLSERVER\MSSQL\DATA\AAA_v3_1.ldf

    注意红色出名字

  8.DB还原

    8.1SQL方式还原

RESTORE DATABASE [AAA_v3] FROM DISK = N'/var/opt/mssql/backup/AAA_v3.bak' \
WITH FILE = 1, MOVE N'AAA_v1' TO N'/var/opt/mssql/data/AAA_v3.mdf', \
MOVE N'AAA_v1_log' TO N'/var/opt/mssql/data/AAA_v3_1.ldf', NOUNLOAD, REPLACE, STATS = 5

    8.2SQLCMD方式还原      

sqlcmd -S '127.0.0.1,1433' -U SA -P 'TYdemo@2020' \
-Q 'RESTORE DATABASE [AAA_v3] FROM  DISK = N"/var/opt/mssql/backup/AAA_v3.bak" \
WITH  FILE = 1,  MOVE N"AAA_v1" TO N"/var/opt/mssql/data/AAA_v3.mdf",  \
MOVE N"AAA_v1_log" TO N"/var/opt/mssql/data/AAA_v3_1.ldf",  NOUNLOAD,  REPLACE,  STATS = 5'

    8.3SSMS方式还原

      和在Window提供的MSSQL服务的还原模式一模一样;区别在于选择备份集的路径为Linux下面的路径格式,MDF,LDF文件指定的路径应符合Linux的路径格式

    8.4连接测试

      通过前面的操作基本可以实现数据的访问了。

  9.操作结束

    

    

 

posted @ 2020-11-29 19:56  李文学  阅读(1180)  评论(0编辑  收藏  举报