Mac系统Docker中SQLserver数据库文件恢复记录

ops/2024/9/23 2:34:46/

Mac系统Docker中SQLserver数据库文件恢复记录

Mac想要安装SQLsever,通过docker去拉去镜像是最简单方法。

一、下载Docker

  • Docker 下载安装:

需要‘科学上网’ 才能访问到docker官网。( https://docs.docker.com/desktop/install/mac-install/)。
这里需要安装包的留言我将网盘中的docker安装包分享出来!

根据电脑搭载的芯片架构,选择苹果芯片<font style="color:rgb(199, 37, 78);background-color:rgb(249, 242, 244);">Apple Silicon</font>或因特尔芯片<font style="color:rgb(199, 37, 78);background-color:rgb(249, 242, 244);">Intel chip</font>的安装包下载。

安装过程省略…

  • 配置Docker镜像加速

国内镜像地址:

阿里云 Docker 镜像加速,需在阿里云官方网站注册账号后获取。

腾讯云 Docker 镜像加速

华为云 Docker 镜像加速

清华大学 TUNA 协会 镜像源地址:https://docker.mirrors.tuna.tsinghua.edu.cn

中国科学技术大学 镜像源地址:https://docker.mirrors.ustc.edu.cn

北京理工大学 镜像源地址:https://dockerhub.azk8s.cn

浙江大学 镜像源地址:https://mirrors.zju.edu.cn/dockerhub/

修改 Docker 配置文件:
修改配置文件:

{"builder": {"gc": {"defaultKeepStorage": "20GB","enabled": true}},"experimental": false,"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn","https://registry.docker-cn.com","http://hub-mirror.c.163.com"]
}

  • Docker容器设置:

根据实际需求情况,设置Docker容器的相关配置信息!

  • 验证 Docker :

打开命令行窗口,运行命令docker --version

二、拉取SQLserver镜像

在ARM框架的m1,m2中,在使用镜像拉取SQLsever的时候,以前的 **mcr.microsoft.com/mssql/server:2019-latest **是行不通的,只会拉取到AMD64版本,指定arm64版本拉下来的也还是AMD64。

所以我们改用** mcr.microsoft.com/azure-sql-edge:latest **镜像。

docker pull **mcr.microsoft.com/azure-sql-edge:latest**

拉取下来后的镜像 可以在 images 中查看:

三、生成容器

docker run 命令运行sqlserver镜像,生成容器!

docker run -e "ACCEPT_EULA=1" -e "MSSQL_SA_PASSWORD=**Sxf123456@**" -e "MSSQL_PID=Developer" -e "MSSQL_USER=SA" -p 1433:1433 -d --name=sql mcr.microsoft.com/azure-sql-edge

上面黑体加粗的密码部分换成你自己的:

  • 需要注意密码设置是有规则的

  • 检查Docker进程

在命令行中,使用 docker ps 查看当前 Docker 中运行的进程:

四、Docker中导入数据库文件

4.1 启动交互式 Bash Shell

docker容器运行之后,在命令行界面使用下面命令在容器内部启动交互式 Bash Shell:

docker exec -it [你的容器名称] "bash"

**注意1: **这里也可以不用在命令行窗口进行,可以直接在Docker应用中进行交互:

**注意2: **查看容器是否已经创建数据卷 ,通过docker volume ls命令查看:

docker 中查看 数据卷:

如果没有创建数据卷,则需要创建好数据卷, 使用命令:docker run -e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=<YourStrong!Passw0rd>' -p 1433:1433 -v sqlvolume:/var/opt/mssql -d mcr.microsoft.com/mssql/server:2017-latest

下面的操作,我以交互式 Bash Shell 进行操作!

4.2 向Docker中导入数据文件

在带有数据卷的容器中创建个文件夹把我们的** .MDF和.LDF文件** 复制过去
  1. 中Docker中创建一个文件夹,存放数据库数据文件:

进入Docker容器中后(命令行界面启动交互式Bash Shell),通过命令 mkdir /xx/xx 来创建文件夹:

如过我们没有使用 交互式 Bash Shell 时,在命令行界面 可以使用以下命令实现在Docker中创建文件夹:docker exec -it [sql你的容器名称] mkdir /var/opt/mssql/data

  1. 将.MDF和.LDF文件 复制到Docker中创建好的文件夹中

使用如下命令,将需要复制的文件复制到Docker容器中的对应文件夹中:

docker cp /Users/chiyu/Desktop/xx.LDF [sql(你的容器名称)]:/var/opt/mssql/mtxyBackups/xx.LDF
docker cp /Users/chiyu/Desktop/xx.MDF [sql(你的容器名称)]:/var/opt/mssql/mtxyBackups/xx.MDF

**注意:**需要注意被复制文件的文件权限需要调整!

可以在复制进入docker 之前先将文件的权限进行调整后,在进行复制:**
**(显示简介–> 共享权限 --> everyone 读与写)


也可以将文件复制进入Docker之后,在使用命令将数据文件的权限进行修改:

chmod 666 xx.LDF
chown -R root:root xx.LDF

五、使用Navicat Premium导入文件数据

  1. 通过Navicat Premium 连接Sqlserver,然后创建数据库

(自行下载安装Navicat )

Navicat 连接sqlserver创建数据库时,需要注意排序规则设置为:Chinese_PRC_90_CI_AS**** 。 否则会出现插入中文字符时会出现问号或者乱码的情况!

  1. 双击数据库打开(变绿色),然后点击左上方的新建查询,输入下面代码(dbname无所谓):

Navicat中执行下面命令:

EXEC sp_attach_db @dbname = 'database_name',
@filename1 = '/home/Xk_Log.LDF',
@filename2 = '/home/Xk.MDF'

我这里是 采用另一种方式: 导入数据库的 .bat 文件到Docker中,在通过 Microsoft SQL Server Tools 连接Docker中的 SQLserver ,然后通过.bat文件进行数据库还原操作!


http://www.ppmy.cn/ops/114542.html

相关文章

如何在 CentOS 中管理用户、组和服务状态

如何在 CentOS 中管理用户、组和服务状态 在 CentOS 系统中&#xff0c;用户管理、文件权限设置以及服务的启动与管理是系统管理的重要组成部分。本文将通过实际案例&#xff0c;逐步展示如何新建用户组、创建用户、修改文件权限以及使用 systemctl 来管理系统服务。让我们开始…

数模方法论-整数规划

一、基本概念 非线性规划的应用包括工程设计、资源分配、经济模型等。在求解过程中&#xff0c;由于非线性特性&#xff0c;常用的方法有梯度法、牛顿法、启发式算法等。求解非线性规划问题时&#xff0c;解的存在性和唯一性通常较难保证&#xff0c;且可能存在多个局部最优解…

第十一章 【后端】商品分类管理微服务(11.5)——增强响应

11.5 增强响应 在前后端分离的开发模式下,我们一般会统一后端的响应格式,比如自定义 Response 结构,但每个开发者可能会封装各自的 Response 结构,造成不一致,因此我们需要将响应格式统一起来,定义一个统一的标准响应格式。 11.5.1 创建响应模块 新建 yumi-etms-respon…

Python基础学习(3)

目录 一&#xff0c;函数 1&#xff0c;函数的定义 2&#xff0c;函数的参数 1&#xff0c;默认值 2&#xff0c;传参 3&#xff0c;返回值 4&#xff0c;变量的作用域 5&#xff0c;函数的调用 二&#xff0c;常用数据结构 1&#xff0c;列表 列表的定义 列表的特性…

关于IT行业

关于IT行业的一些浅见 在当今的互联网时代&#xff0c;IT行业无疑是一个高速发展的领域。无论是人工智能、大数据、云计算&#xff0c;还是区块链、物联网&#xff0c;这些新兴技术的背后都离不开IT行业的推动力。今天我想简单谈一下自己对IT行业的一些看法和理解。 1. IT行业…

【系统架构设计师】软件架构的风格(经典习题)

更多内容请见: 备考系统架构设计师-核心总结索引 文章目录 【第1题】【第2题】【第3~4题】【第5题】【第6题】【第7题】【第8题】【第9题】【第10题】【第11题】【第12题】【第13题】【第14题】【第15~16题】【第17题】【第18~19题】【第20~21题】【第22题】【第23题】【第24~…

基于YOLOv5的教室人数检测统计系统

基于YOLOv5的教室人数检测统计系统可以有效地用于监控教室内的学生数量&#xff0c;适用于多种应用场景&#xff0c;比如 自动考勤、安全监控或空间利用分析 以下是如何构建这样一个系统的概述&#xff0c;包括环境准备、数据集创建、模型训练以及如何处理不同类型的媒体输入…

Unity射击游戏开发教程:(36)敌人关卡生成器的设计和开发

丰富多样地游戏关卡生成器能自动生成不同的关卡地图和游戏内容,以增加游戏的可玩性和挑战性。关卡生成可以基于随机算法或者预设的规则生成不同的地图布局、敌人位置、道具位置等。 定义关卡生成器WaveSpawner 如何设置通用的 Wave Spawner?我将此 Wave Spawner 脚本附加到…