此文演示docker-compose
创建、运行、还原 SqlServer
操作系统:CentOS7.6
系统环境:Docker、Docker-Compose 关闭防火墙
一、创建docker-mssql.yml文件,位置/usr/local/richpencil/docker-mssql.yml
version: '3' services: mssql: image: microsoft/mssql-server-linux:2017-latest ports: - "1433:1433" container_name: mssql volumes: - /usr/local/richpencil/mssql:/var/opt/mssql environment: - ACCEPT_EULA=Y - SA_PASSWORD=a12345678. - TZ=Asia/Shanghai
注意数据库密码必须为8位长度以上,否则无法启动docker
二、启动mssql docker容器
此命令会自动下载sqlserver docker并启动
docker-compose -f /usr/local/richpencil/docker-mssql.yml up
三、放置备份文件、进入容器、成功还原
3.1将sqlserver bak文件放在linux系统的映射目录
linux系统目录为 /usr/local/richpencil/mssql/blst.bak docker容器目录为 /var/opt/mssql/blst.bak
3.2进入docker容器
a、通过启动文件进入docker
docker-compose -f /usr/local/richpencil/docker-mssql.yml exec mssql bash
b、查看备份文件的逻辑名
/opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P 'a12345678.' -Q 'RESTORE FILELISTONLY FROM DISK = "/var/opt/mssql/blst.bak"' | tr -s ' ' | cut -d ' ' -f 1-
数据逻辑名称
fl_db_birdnestle
fl_db_birdnestle_log
c、根据逻辑名进行还原
命令中指定还原数据库名、逻辑数据库名、逻辑数据库文件名、逻辑数据库日志名、逻辑数据库日志文件名、数据库密码等重要信息
/opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P 'a12345678.' -Q 'RESTORE DATABASE blst FROM DISK = "/var/opt/mssql/blst.bak" WITH MOVE "fl_db_birdnestle" TO "/var/opt/mssql/data/blst.mdf" , MOVE "fl_db_birdnestle_log" TO "/var/opt/mssql/data/blst.ldf"'
d、通过Microsoft Sql Server Management Studo 连接数据库
服务器名称: 192.168.0.203,1433
用户:sa
密码:a12345678.
注意连接数据库和端口之前用逗号分隔(重要!!!)
连接成功
总结:
1、安装最新版docker、docker-compose 关闭防火墙
2、创建docker-compose文件时,直接设置管理员sa密码,密码长度需大于8位
3、还原数据库之前需要先查询逻辑文件名、逻辑日志文件名
4、还原时需要保证文件的位置正确无误,数据库密码正确、逻辑名称正确
5、在还原时要注意如果有错误命令提示,有可能是硬盘空间不够导致
6、最好申请一个腾讯或阿里的docker加速地址,否则下载sqlserver docker可能会很慢或失败
7、连接sqlserver的服务器名称是ip+","+端口 而不是ip+":"+端口