博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于最近项目的思考~附一些遇到的问题
阅读量:6135 次
发布时间:2019-06-21

本文共 2299 字,大约阅读时间需要 7 分钟。

个人感悟

最近还在搞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文件位置数)

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] 查看具体事件信息

SCN的确定:64bits组成,高32位表示binlog的文件序号,低32位代表event在binlog文件的offset,例如在 mysql-bin.000001文件中 offset为 4的scn表示为(1 << 32) | 4 = 4294967300

2. 5.6后binlog crc32问题

show global variables like 'binlog_checksum'show global variables like 'innodb_checksums';复制代码

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

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

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

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

reset master;复制代码

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

client >  databus2-checkpoints复制代码

6. 时间戳问题:

timestampdatetime复制代码
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, 把思路讲给别人听, 多看看成熟的设计方案。

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

转载地址:http://eaeua.baihongyu.com/

你可能感兴趣的文章
RocketMQ服务搭建
查看>>
微信支付 - 可以下单但是无法收到通知消息Log总显示begin notify
查看>>
分享我如何活用notepad++
查看>>
Object-c的基础概念
查看>>
GNU Building System
查看>>
自我关系的建立
查看>>
RAID
查看>>
配置文件及工具包
查看>>
转 前端开发利器—FIDDLER
查看>>
mysql读取配置文件的顺序
查看>>
《游戏程序设计模式》 2 - 顺序模式
查看>>
数据过滤器注解@Filter 如何在hibernate、spring data jpa中调用
查看>>
Eclipse上GIT插件EGIT使用手册之九_Rebase和Merge的区别
查看>>
logback + slf4j + jboss + spring mvc
查看>>
罗伯特·帕丁森Robert Pattinson
查看>>
服务器反爬虫攻略:nginx禁止某些User Agent抓取网站
查看>>
【转】模板类实例化的相关常识
查看>>
Python 作用域(scope) 和 LEGB
查看>>
SpringBoot基础教程2-1-3 异常处理规范
查看>>
GB2312、GBK、GB18030 这几种字符集的主要区别是什么?
查看>>