个人感悟
最近还在搞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, 把思路讲给别人听, 多看看成熟的设计方案。
接下来还有很多坑需要踩..希望大家持续关注哈。
领取专属 10元无门槛券
私享最新 技术干货