grafana 容器数据迁移的处理
一个简单的场景,grafana 基于容器部署的,但是早起没有使用持久化数据卷以及使用了内置的sqlite 数据库
所以存在存储迁移的问题,几个数据迁移的方法
基于几个假设,我们没有使用额外的扩展插件
解决方法
- 使用api 导出dashboard 以及datasource 通知配置
- 直接copy grafana sqlite 数据库进行使用
问题说明
基于api 有点太费事,因为api 需要调用很多,直接copy sqlite 数据库比较方便,然后直接使用数据卷挂载的模式就可以了
- 参考方法
sqlite copy
docker cp containerid:/var/lib/grafana/grafana.db grafana.db
容器数据挂载(docker-compose)
version: "3"
services:
app:
image: grafana/grafana
build: ./
ports:
- "3000:3000"
volumes:
- "./grafana.db:/var/lib/grafana/grafana.db"
- 直接容器镜像制作模式(需要注意文件权限的问题)
FROM grafana/grafana
COPY --chown=grafana:grafana grafana.db /var/lib/grafana/grafana.db
- k8s 模式
kind: Deployment
apiVersion: extensions/v1beta1
metadata:
name: grafana2
labels:
io.kompose.service: grafana2
spec:
replicas: 1
selector:
matchLabels:
io.kompose.service: grafana2
template:
metadata:
creationTimestamp:
labels:
io.kompose.service: grafana2
spec:
volumes:
- name: db
hostPath:
path: "/opt/g/grafana.db"
containers:
- name: grafana2
image: grafana/grafana
ports:
- containerPort: 3000
protocol: TCP
resources: {}
volumeMounts:
- name: db
mountPath: "/var/lib/grafana/grafana.db"
imagePullPolicy: IfNotPresent
nodeSelector:
kubernetes.io/hostname: <hostip>
restartPolicy: Always
strategy:
type: RollingUpdate
rollingUpdate:
maxUnavailable: 1
maxSurge: 1