docker 安装sql2017还原windows2012数据库备份
1. centos7.6安装docker
#安装依赖包
yum install -y yum-utils device-mapper-persistent-data lvm2
#下载docker yum源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
#下载docker
yum install -y docker
#配置国内镜像
[root@node1 ~]#cat /etc/docker/daemon.json
{
"registry-mirrors": [
"https://kfwkfulq.mirror.aliyuncs.com",
"https://2lqq34jg.mirror.aliyuncs.com",
"https://pee6w651.mirror.aliyuncs.com",
"https://registry.docker-cn.com",
"http://hub-mirror.c.163.com"
],
"dns": ["8.8.8.8","8.8.4.4"]
}
#启动&开机启动docker
systemctl start docker && systemctl enable docker
2.docker安装mssql2017
#搜索镜像
[root@node1 ~]# docker search mssql
INDEX NAME DESCRIPTION STARS OFFICIAL AUTOMATED
docker.io docker.io/microsoft/mssql-server-linux Deprecated SQL Server on Linux Container R... 1159
docker.io docker.io/microsoft/mssql-server-windows-developer Official Microsoft SQL
..........................
#下载镜像
[root@node1 ~]#docker pull microsoft/mssql-server-linux:2017-latest
#查看下载好的镜像
[root@node1 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/microsoft/mssql-server-linux 2017-latest 314918ddaedf 11 months ago 1.35 GB
#创建并运行容器
[root@node1 ~]#docker run --name MSSQL_1433 -m 512m -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=yourpasSw0rd' --net=host -d microsoft/mssql-server-linux
[root@node1 ~]# docker start eae198ad6034(可以启动ID或者容器名)
eae198ad6034
#查看创建好的容器(UP代表已经启动)
[root@node1 ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
eae198ad6034 314918ddaedf "/opt/mssql/bin/sq..." 24 hours ago Up 58 minutes MSSQL_1433
8b1962a03efe 314918ddaedf "/bin/bash" 25 hours ago Exited (0) 24 hours ago linuxmssql
#进入容器
[root@node1 ~]# docker exec -it eae198ad6034 /bin/bash
#进入数据库(IP是宿主机的IP,用户是大写的)
root@node1:~# /opt/mssql-tools/bin/sqlcmd -S 172.16.10.66 -U SA -P 'lihao@123'
#出现这个就表示进入数据库了
1> select name from sys.databases;
2> go
name
--------------------------------------------------------------------------------------------------------------------------
master
tempdb
model
msdb
3.还原数据库
#上传备份文件
下载winscp或者lrzsz工具,把备份文件上传宿主机,再把备份文件复制到容器的/var/opt/mssql/data/目录下
[root@node1 ~]# docker cp EastRiver.bak eae198ad6034:/var/opt/mssql/data/
root@node1:~# ll /var/opt/mssql/data/
total 1300488
drwxr-xr-x 2 root root 4096 Nov 19 14:25 ./
drwxr-xr-x 7 root root 73 Nov 18 15:23 ../
-rw-r--r-- 1 root root 205852672 Nov 4 09:43 EastRiver.bak
-rw-r----- 1 root root 4194304 Nov 19 15:14 master.mdf
-rw-r----- 1 root root 2097152 Nov 19 15:23 mastlog.ldf
-rw-r----- 1 root root 8388608 Nov 19 14:09 model.mdf
-rw-r----- 1 root root 8388608 Nov 19 14:09 modellog.ldf
-rw-r----- 1 root root 15466496 Nov 19 15:14 msdbdata.mdf
-rw-r----- 1 root root 786432 Nov 19 15:14 msdblog.ldf
-rw-r----- 1 root root 8388608 Nov 19 14:09 tempdb.mdf
-rw-r----- 1 root root 8388608 Nov 19 15:14 templog.ldf
-rw-r----- 1 root root 8388608 Nov 19 14:09 test.mdf
-rw-r----- 1 root root 8388608 Nov 19 15:09 test_log.ldf
#打开Windows下的sql管理工具(我用2008R2中文版的不行,用2012的英文版的可以,不清楚是中英文的关系,还是版本的的关系,有兴趣的你们可以试试)
新建了一个test库
create database test;
#还原数据库
后面的操作因为某些原因无法上图了,都跟Windows还原一样了,百度一下就可以了
还原成功后,就出现新的库了
#在容器上查看
1> select name from sys.databases
2> go
name
--------------------------------------------------------------------------------------------------------------------------------
master
tempdb
model
msdb
test
EastRiver
(6 rows affected)
1> use EastRiver
2> go
Changed database context to 'EastRiver'.
1> select name from sys.tables;
2> go
name
--------------------------------------------------------------------------------------------------------------------------------
BlackCardTask
ReplaceReg_D
TransRecords
Archs
RefuseReg_M
BlackCardTaskClockState
MChargeRecords
Area
......
UpLoadTable_comp2
Company
PriceHistory
CommMsg
OpLog
CardTypeConfig
OutWork_D
RealCardState
RealStateInfo
OutWork_M
EmployeeAccount
OverTime_Detail
TimeReport2
ClockDefaultParam
Scheme
ClockParams
Groups
NumberPool
DataBaseConfig
DoorTimeBound
user_log
ZKDownHis
tblAdmin
TB_FREESPACE
Accounts
(212 rows affected)