解决迁移ssdb到docker出现的no space left on device问题

今天想把ssdb上的数据迁移到docker环境中,增加系统稳定性,执行了以下操作。

一,ssdb 文件导出:

介绍一下ssdb 备份主要有两种方式:

1,ssdb sql语句导出
# 进入ssdb-cli 交互模式
ssdb-cli -h 127.0.0.1 -p 8888
# 导出数据
ssdb 127.0.0.1:8888> export backup.ssdb
# 导入数据
ssdb 127.0.0.1:8888> import backup.ssdb
2,使用tools文件夹下的ssdb-dump工具
# 导出data_dir
./tools/ssdb-dump 127.0.0.1 8888 ./backup
# 然后将ssdb.conf 中的 work_dir改为本文件目录

方法1,原理是导出sql语句,导入时执行sql
方法2,在安全模式下对数据文件的复制,所以速度会相对快很多。(也可以停止ssdb后直接cp ssdb work_dir目录)

此处使用方法2导出数据文件

二,ssdb 文件导入docker容器

向docker 容器中导入文件语句为

# 可以先查询image 信息
docker ps |grep [image]
# 向docker容器中导入文件
docker cp [host_path] [container_name]:[container_path]

执行过程中,出现错误:
docker cp /zfs/ssdb/ssdb-master/tools/backup mystifying_turing:/ssdb/var/
Error response from daemon: Error processing tar file(exit status 1): write /backup/data/009745.ldb: no space left on device

首先这里本人首先想到的是磁盘容量不够了,ssdb内数据大概250G,从扩容方向思考,并未解决。
通过对docker文档的学习,发现这个需求可以直接用docker的文件映射解决。

# docker -d 设置后台运行 -p 端口号映射 -v 文件映射
docker run -d -p 10888:8888 \
 -v /zfs/ssdb/docker-ssdb/workdir:/ssdb/var:rw \
 --restart=always \
 --name my-ssdb leobuskin/ssdb-docker

问题解决!!!
总结:还是对docker概念不熟悉,只会简单命令,需要之后系统补上相关知识。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值