InfluxDB源码编译、安装、配置及主从同步实现

本文介绍了如何在InfluxDB时序数据库中实现主从同步,详细讲解了源码修改、编译安装过程,并提供了Python同步脚本的实现。通过修改InfluxDB源码以记录写入操作数据,实现主从数据库健康运行。
摘要由CSDN通过智能技术生成

先扯点蛋

公司有个项目要求使用InfluxDB时序数据库储存点东西。第一次听说还有这种数据库,哈哈哈,孤陋寡闻了,先从各位大佬的博客看起,慢慢学习,逐渐了解了之后在服务器上进行安装。直接使用官方包进行安装很简单,查看官方说明即可。安装之后使用才发现,开源的只支持单机版的,但是公司用不能这么low吧,怎么也要“高可用”一点,于是自己参考MySQL主从复制原理、半同步操作步骤及原理饿了么 Influxdb 实践之路,做了InfluxDB主从系统。


客户端系统

客户端系统拓扑图
InfluxDB主从同步拓扑图

这个系统主要是用来从kafka获取数据源,经过处理之后存到InfluxDB中去,这里参考了「饿了么」那篇文章,但是我看过他们的源码,基本上搞不懂,就根据文章的描述搞了一个简陋版的东西吧,这里涉及到kafka和influxdb-java,项目源代码可以看这里。该项目启动运行参考其中的README。


InfluxDB主从同步系统

InfluxDB同步系统
InfluxDB同步系统

主从同步架构,是简陋版的MySQL主从同步。脚本读取InfluxDB的增删改操作日志,使用脚本将记录写入从机中。经过测试,运行状况良好,只要主从机不挂,同步系统可以健康运行。

同步脚本使用Python编写,项目源代码在这里。该项目启动运行参考其中的README。

为什么使用Python脚本来编写主从同步代码?

  • 主要是考虑到降低与数据库的代码耦合程度,InfluxDB源码如果出现大规模的升级改动,同步脚本只需略作修改就可以了。
  • 毕竟Python是世界上**的语言。?

InfluxDB源码修改

  • 下载源码

    在github上下载InfluxDB源码(这里使用的是我的fork地址,已经修改好的源码)。

  • 修改源码

    由于脚本需要读取InfluxDB的增删改操作日志,需要对源码中这一部分操作的日志进行修改,方便脚本解析日志。官方版的日志不记录写入操作的数据值,所以需要我们自己修改源码中对应的记录写日志的地方。

    修改文件influxdb/services/httpd/handler.go

    // 记录日志的具体方法
    func buildLogLine(l *responseLogger, r *http.Request, start time.Time, body string) string {
    
        redactPassword(r)
    
        username := parseUsername(r)
    
        host, _, err := net.SplitHostPort(r.RemoteAddr)
        if err != nil {
            host = r.Rem
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值