之前公司用的influxdb是直接买的influxdb实例,最近厂商产品下线,不得不迁移到自己的机器,以下是迁移过程。
考虑生产有现成的k8s集群,influxdb官网文档也有k8s部署说明,便直接将influxdb部署到k8s中。(版本1.8.x)
部署新的influxdb
部署的yaml文件如下:
apiVersion: v1 kind: Namespace metadata: name: influxdb ---
apiVersion: v1 kind: ConfigMap metadata: name: influxdb-config namespace: influxdb data: influxdb.conf: >- [meta] dir = "/var/lib/influxdb/meta"
[coordinator] log-queries-after = "60s" max-select-series = 10000 write-timeout = "30s" [data] dir = "/var/lib/influxdb/data" engine = "tsm1" wal-dir = "/var/lib/influxdb/wal" cache-max-memory-size = "0" cache-snapshot-memory-size = "256m" index-version = "tsi1" max-index-log-file-size = "64k" max-series-per-database = 3000000 max-values-per-tag = 100000
---
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: influxdb-data namespace: influxdb spec: accessModes: - ReadWriteOnce storageClassName: csi-xxx resources: requests: storage: 8Gi --- apiVersion: apps/v1 kind: StatefulSet metadata: labels: app: influxdb name: influxdb namespace: influxdb spec: replicas: 1 selector: matchLabels: app: influxdb serviceName: influxdb template: metadata: labels: app: influxdb spec: containers: - image: uhub.service.ucloud.cn/tv1234pub/influxdb:1.8.10 name: influxdb ports: - containerPort: 8086 name: influxdb volumeMounts: - mountPath: /var/lib/influxdb name: data - name: influxdb-config mountPath: /etc/influxdb/influxdb.conf readOnly: true subPath: influxdb.conf volumes: - name: data persistentVolumeClaim: claimName: influxdb-data - name: timezone-config hostPath: path: /usr/share/zoneinfo/Asia/Shanghai - name: influxdb-config configMap: defaultMode: 0600 name: influxdb-config --- apiVersion: v1 kind: Service metadata: name: influxdb namespace: influxdb spec: ports: - name: influxdb port: 8086 targetPort: 8086 selector: app: influxdb type: ClusterIP
|
dump 历史数据
dump 需要开启 8088 端口
influxd backup -portable -host 172.16.xx.xxx:8088 sai-snapshot
|
恢复数据
上传
kubectl cp -r sai-snapshot influxdb/influxdb-0:/root/
|
influxd restore -portable ./sai-snapshot
|
验证
influx客户端查验数据即可。