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.操作結束

    

    

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM