在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.下载镜像
docker pull microsoft/mssql-server-linux
2.启动容器
docker run --name mssql2017 -m 512m -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=TYdemo@2020' -p 14330:1433 --restart=always -v /opt/mssql/:/var/opt/mssql -d microsoft/mssql-server-linux
启动代理
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的操作方式略为不同,端口14330放行,具体操作省略;此处可用natcat连接测试了。
7.查看备份
查看备份逻辑名称,口令如下:
sqlcmd -S '127.0.0.1,14330' -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:SqlDatadataMSSQL11.MSSQLSERVERMSSQLDATAAAA_v3.mdf
AAA_v1_log D:SqlDatadataMSSQL11.MSSQLSERVERMSSQLDATAAAA_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,14330' -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.操作结束