此文演示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+":"+端口