V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
helee9199
V2EX  ›  Docker

docker 装 db 数据备份恢复的问题

  •  
  •   helee9199 · 258 天前 · 1577 次点击
    这是一个创建于 258 天前的主题,其中的信息可能已经有所发展或是发生改变。

    测试用,在 docker 里装了 sqlserver 使用的是 docker-commose 启动 配置里挂载映射到了外部磁盘。 volumes: - /mnt/myroot/dbdata/sqlserver_data:/var/opt/mssql/data 今天因故重装了系统。外部磁盘没变。 装好系统和 docker 后, 设置好映射路径, 但是没资料 是哪里姿势不对? 权限什么的也设置对了 我的理解是,文件夹映射后 数据是存在磁盘里。 重装系统后只需要映射就好。 不知道是我理解有误 还是我操作有误。

    8 条回复    2024-02-23 12:48:21 +08:00
    KB12312
        1
    KB12312  
       258 天前
    之前遇到过一次,Mongo 换了容器之后一直挂载不上,进容器创建文件,外面能看见,但是外面目录下的文件容器里又看不见。确实很奇怪,不知道有没有大神知道原因的。
    oneisall8955
        2
    oneisall8955  
       258 天前 via Android
    检查下/mnt/myroot/dbdata/sqlserver_data 有文件吗
    huangsijun17
        3
    huangsijun17  
       258 天前
    再 exec 到容器里,看一下/var/opt/mssql/data 的情况如何?
    helee9199
        4
    helee9199  
    OP
       258 天前
    @oneisall8955 文件肯定是有的,这次唯一的区别是 原本 dbdata 是放在系统盘的,因为重装系统要格式化盘所以我吧整个 dbdata 挪到了 B 盘 ,就是为了方便重装系统的时候资料不丢 设置好了挂载和权限.我现在在想, 我先是未挂载启动,然后停止容器,然后再挂载启动的,因为还有安装 oracle 好像得跑一次产生原本的资料后再挂载的.


    @huangsijun17 容器里的应该就是原始数据吧? 所以挂载应该是相当于把资料存到我挂载的路径吧?这个要如何理解?
    oneisall8955
        5
    oneisall8955  
       258 天前 via Android
    如果你怕挂载与容器启动顺序问题,可以
    docker-compose down 再 docker-compose up -d

    down 会先删除容器,up 会是个新的容器
    guanzhangzhang
        6
    guanzhangzhang  
       258 天前
    1. 看看镜像的 DOckerfile 的 volume 未知是否变了
    2. 还有启动脚本看看,是不是 env 或者配置文件改变了 data 目录
    3. 是不是之前你就挂载错了数据目录,例如容器内是/var/lib/mssql/data
    Belmode
        7
    Belmode  
       258 天前
    是用了 wsl 吗?
    helee9199
        8
    helee9199  
    OP
       258 天前
    @guanzhangzhang 折腾了半天 反复试验终于破案了.感觉和挂载盘有关, 挂在外置盘不行,复制到系统盘路径里设置好权限以后 SQLSERVER 就好了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3833 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 10:20 · PVG 18:20 · LAX 02:20 · JFK 05:20
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.