解决迁移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概念不熟悉,只会简单命令,需要之后系统补上相关知识。

猜你喜欢

转载自blog.csdn.net/iamcodingmylife/article/details/85007486