关于最近项目的思考-databus2

个人感悟

最近还在搞databus binlog同步,之前针对databus搭建安装写过一篇行云流水的文章,那时候项目刚立项,前期调研了下,没想到后期会有这么多问题出现。

今天正好在家把那databus的第一个服务部署到了公司服务器上,开始同步测试数据库数据了,终于脱离了我的本地开发环境。也算告了一个小小的段落吧(还有几个棘手问题没有解决)。

下面是我的这几天的工作回顾感悟:

快速失败

首先我去databus上克隆了一份databus源码, 找到example目录,想办法把它运行起来。其实相比来说,这个databus文档还是比较少的,只能先运行例子,照猫画虎的把自己的需求套进去.

技术调研期间如果文档不是很详细,网上例子也比较少,没有相关社群,只能不断的去快速失败,慢慢就会理解它其中的门道(最好还能输出一篇自己理解的文档加深理解)。

你可以试试github,关注下issues,或者搜搜看下别人有没有其他关于这方面的输出成果,可以更好的借鉴,熟悉项目的运行流程。带着问题再看一遍官方技术文档也许会有更好的收获

问问题

在编写消费者那快的时候也遇到了很多语法的障碍问题,比如java怎么设计的类更好,线程安全问题,连接池问题,版本问题, gradle构建等等问题。

因为没有相关基础,当然首先是借助搜索引擎看看有没有解答方案,然后也发到java群里去提问,开始还有人回答我的问题,后来基本没人了。再后来群里之前加我好友有一个还把我给拉黑了。

靠群友是靠不住,除非你问的问题人家有兴趣回答,大部分你还得靠自己。

快速充电

当有些知识很基础,但是你不知道的时候,网上是有大量资源供你学习的,提前把一些感觉需要了解的书籍加到自己的书架,把一些博客文章在手机端收藏下来,地铁时间可以详细看一遍,在阅读过程中静下心思考下,我现在的设计实现是不是有问题,有没有更好的优化方式。

当要解决的问题没解决下班或吃饭时候,通常我的心情不会那么好,如果一个问题尝试了很久还没有起色,还是建议先离开工位一会儿.

我通常会把错误日志发到手机上,不管在地铁时间,在家里吃着东西看看文档,也许就恍然大悟了。 嗯。。。也许不是一个很大的问题,也有很多时候是一些小细节,大部分都是当时焦虑解决问题的心情忽视了它。

不能忽视身边的同事

有些问题感觉自己很难解决,或者没有经验,可以问问身边的同事,也许他们有人遇到过。一起排查研究问题,总比一个人好。

多沟通,和各个部门的积极沟通,不同领域专业知识能让你认清楚事情的本质,良好的人际关系能让你工作更加开心 (这方面我还需要改进)

下面是我工作遇到的几个问题:

1.刚上线同步binlog时候,并不是从00001开始的(我们只保留了15天)。

binlog的点位计算,修改maxScn配置

(1234为当前binlog文件位置数)

show master status; 可以查看主库的binlog信息

show binary logs 查看binlog信息

SHOW BINLOG EVENTS [IN 'log_name'] [FROM pos] [LIMIT [offset,] row_count] 查看具体事件信息

2. 5.6后binlog crc32问题

改为binlog_checksum=null,目前crc32问题还没解决

3. 主从报 max_allowed_packet 问题(最好保持一致)

4. 重置binlog(慎用,可能导致主从问题)

5. databus重启,删除位置检测点,否则之前的binlog不同步

6. 时间戳问题:

这两个时间类型同步很麻烦,并且5.6向5.7同步还存在兼容性问题。关于这事件字段的解释,之前单独发了一篇文章,感兴趣可以看看。

事情远远没有结束,工作才刚刚开始. 一个新的技术体系,从懵懂到实现再到线上稳定运行,会踩到很多坑甚至是雷, 现实要求必须把问题扼杀在前期。把代码分享给其他人review, 把思路讲给别人听, 多看看成熟的设计方案。

接下来还有很多坑需要踩..希望大家持续关注哈。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181124G1CTV900?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券