前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >关于最近项目的思考-databus2

关于最近项目的思考-databus2

作者头像
用户2825413
发布2019-07-16 11:04:27
7750
发布2019-07-16 11:04:27
举报

个人感悟

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

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

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

  1. 快速失败 首先我去databus上克隆了一份databus源码, 找到example目录,想办法把它运行起来。其实相比来说,这个databus文档还是比较少的,只能先运行例子,照猫画虎的把自己的需求套进去. 技术调研期间如果文档不是很详细,网上例子也比较少,没有相关社群,只能不断的去快速失败,慢慢就会理解它其中的门道(最好还能输出一篇自己理解的文档加深理解)。 你可以试试github,关注下issues,或者搜搜看下别人有没有其他关于这方面的输出成果,可以更好的借鉴,熟悉项目的运行流程。带着问题再看一遍官方技术文档也许会有更好的收获
  2. 问问题 在编写消费者那快的时候也遇到了很多语法的障碍问题,比如java怎么设计的类更好,线程安全问题,连接池问题,版本问题, gradle构建等等问题。 因为没有相关基础,当然首先是借助搜索引擎看看有没有解答方案,然后也发到java群里去提问,开始还有人回答我的问题,后来基本没人了。再后来群里之前加我好友有一个还把我给拉黑了。 靠群友是靠不住,除非你问的问题人家有兴趣回答,大部分你还得靠自己。
  3. 快速充电 当有些知识很基础,但是你不知道的时候,网上是有大量资源供你学习的,提前把一些感觉需要了解的书籍加到自己的书架,把一些博客文章在手机端收藏下来,地铁时间可以详细看一遍,在阅读过程中静下心思考下,我现在的设计实现是不是有问题,有没有更好的优化方式。 当要解决的问题没解决下班或吃饭时候,通常我的心情不会那么好,如果一个问题尝试了很久还没有起色,还是建议先离开工位一会儿. 我通常会把错误日志发到手机上,不管在地铁时间,在家里吃着东西看看文档,也许就恍然大悟了。 嗯。。。也许不是一个很大的问题,也有很多时候是一些小细节,大部分都是当时焦虑解决问题的心情忽视了它。
  4. 不能忽视身边的同事 有些问题感觉自己很难解决,或者没有经验,可以问问身边的同事,也许他们有人遇到过。一起排查研究问题,总比一个人好。 多沟通,和各个部门的积极沟通,不同领域专业知识能让你认清楚事情的本质,良好的人际关系能让你工作更加开心 (这方面我还需要改进)

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

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

binlog的点位计算,修改maxScn配置 (1234为当前binlog文件位置数)

代码语言:javascript
复制
1234 * (1<< 32) + 56789 = 5299989700053 (0x4D20000DDD5)

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问题

代码语言:javascript
复制
show global variables like 'binlog_checksum'
show global variables like 'innodb_checksums';

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

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

代码语言:javascript
复制
show variables like  '%max_allow%';
set global max_allowed_packet = 32*1024*1024

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

代码语言:javascript
复制
reset master;

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

代码语言:javascript
复制
client >  databus2-checkpoints

6. 时间戳问题:

代码语言:javascript
复制
timestamp
datetime
代码语言:javascript
复制
5.7 timestamp 0000-00-00 00:00:00问题

set session sql_mode='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';

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

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

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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-11-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 呆呆熊的技术路 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 个人感悟
  • 下面是我工作遇到的几个问题:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档