chengshiwen / influx-proxy

InfluxDB Proxy with High Availability and Consistent Hash
https://github.com/chengshiwen/influx-proxy/wiki
MIT License
354 stars 112 forks source link

无法create数据库 #39

Closed Juke-github closed 2 years ago

Juke-github commented 2 years ago

有3个circle,每个circle有两个influxdb实例,当停掉一个influxdb实例,创建数据库时 curl -X POST 'http://127.0.0.1:7076/query' --data-urlencode 'q=CREATE DATABASE "mytest2"'会报 {"error":"backend influxdb-1-1(http://127.0.0.1:8066) unavailable"} 这是为什么呢?

chengshiwen commented 2 years ago

为了保证数据一致性,如果某个实例停掉了,而其它实例创建数据库成功的话,当这个实例重启后,就会导致数据库信息不一致,后面写入数据就会被丢弃,所以创建数据库必须要求所有实例都是正在运行的

chengshiwen commented 2 years ago

influxdb cluster 是按照 influxdb enterprise 来编写的,可以参考官方 influxdb enterprise 文档: https://docs.influxdata.com/enterprise_influxdb/v1.8/concepts/clustering/ influxdb cluster支持高可用集群、更好的扩缩容、所有query语句

InfluxDB Cluster v1.8.10-c1.0.0 正式发布,参考 InfluxDB Enterprise 进行实现, 基于最新代码 InfluxDB v1.8.10 开发,旨在替换 InfluxDB Enterprise

项目地址:https://github.com/chengshiwen/influxdb-cluster

欢迎试用反馈👏🏻

Juke-github commented 2 years ago

InfluxDB Cluster和通过influx-proxy实现的集群有哪些区别呢

chengshiwen commented 2 years ago

influx-proxy:基于代理的方式,influx-proxy 程序通过db和measurement进行hash,确定要写入或查询某个 influxdb 节点,因此有些 influxql 语句不支持,例如 select into、语句中含有正则表达式等,此外 continuous query 也不支持等,架构如下图所示

image

influxdb-cluster:完全按照官方 influxdb enterprise 集群实现,几乎一模一样,也不存在上述的问题,架构如下图所示

image