此话题已在最后回复的 7 天后被自动关闭。不再允许新回复。
两个时间字段相差有2、3s,其实人工也能判断出来,到底是哪个字段是准确的了。 现在已经 确认是 create_time 不准么?
拿这两个时间和你电脑时间比较一下,看到底是哪个字段不准。
咦,7.1.2 了还自己部署 TiDB 集群么?那就想办法每台机器都执行下时间吧,尤其确定一下 pd-server、tidb-server、程序所在虚拟机,三类机器上的时钟是不是一致。
tiup cluster exec test --command "date '+%F %T'" 执行下这个命令,看下所有节点的时钟是否正常吧
[image]
试了下在7.5.4上用你的程序来跑结果是符合预期的的,你看下是不是还是时钟偏移导致的? 机器有部署NTP么?
确实如此,我看下脚本里用的 config task 导出的
,导致密码被混淆了。 后续我改造一下脚本,来适配一下
其实 DM 提供一个 update-task 命令也可以,现在每次改配置文件都得重建任务,这才要求需要原始的数据库密码。
-–
看用户的原始要求,其实只让前端展示时候过滤就行了,没必要在后端运维的 dmctl 也加密。一旦加密了,就是我跟上面提到的需求一样,会导致 dm 的运维需求没办法完全通过 dm 自身来获取到,还得借助其他的配置文件来获取对应的密码。
另外,跟我上面的提的一样,这种做法只是能限制 dm-ctl 的接口自身,限制不了 etcd 上的明文密码,想获取原始密码来是能获取到。 如果真的对安全有要求,完全可以(目前来说也只能)通过 TLS 加密,
这不就是典型的
分布式系统CAP不可能三角 么,建议你自己先了解一下,之后给你的客户科普,让他们做好取舍。
不一定客户所有的需求都要满足的,要先自己做一下需求分析,然后再来咨询别人,否则是不可能得到解决方案的。
下面是摘录的介绍
Consistency 一致性:在分布式系统中的所有数据备份,在同一时刻是否同样的值。(等同于所有节点访问同一份最新的数据副本)
Available 可用性:在集群中一部分节点故障后,集群整体是否还能响应客户端的读写请求。(每次请求都能获取到非错的响应——但是不保证获取的数据为最新数据)
Partition Tolerance 分区容错性:分布式系统,出现…
增加监控啊,这种很容易提前发现的,TiDB 自身监控就有,还是没人跟进导致的。
这里边一般都是事件触发式,数据库层、中间件层、服务层分别来搞自己的切换逻辑,当真正故障发生时,通过发送事件的方式,各个层分别调用自己的接口来将流量切换到另外一个中心。
放心吧,机房容灾是一个特大故障,一般都是需要领导拍板来决定切不切,别太想着完全自动化。(没办法做到自动化的最大原因,其实就是上面讲的,跨城很难保证强同步,数据大概率会丢一些,得均衡一下成本,看是等待自愈还是主动切换)
这已经是个很高的要求了,跨城容灾不可能是一个小课题,这只能说是客户对系统的复杂度考虑不足。 如果还要求 RPO 为 0的话,那要求就更高,只能是三地五中心,并且做强同步。
两地三中心,也能保证单中心故障。例如海南发生海啸,导致两中心都不可用了,北京的单中心,只能保证可用性,并不能保证 RPO 为 0。
什么架构都没办法解决这种问题吧
另外现在也只是在 dm-master 返回时做了一下替换,在 etcd 里还是明文存储的,如果有心,还是可以从 etcd 里获取到原始密码的。
最彻底的办法,其实还是开启 TLS 认证,而不仅仅是在导出时候替换下密码。建议还是给个口子让能获取到原始的配置文件。
或者 dm 提供一个 update-task 的子命令,而不用每次都得 stop-task + start-task 的方式来修改任务也可以。
7.5 之前通过 config export 出来的配置,是可以用来start-task 的。 我们的一个任务是白名单模式,每新增一个库表,都需要修改 dm-task, 目前是写了一个脚本,使用 config export 的配置来更新 dm-task 配置的。
看这个描述,更像是负载均衡导致的,很多负载均衡都是可以复用端口的,你在一台机器上重试没用
只看日志信息,两端都是正常的:
在 JAVA 程序那里,重启也会直接报错,并不是执行了一段时间报错的。
在 TiDB 这里,是接收到了异常的报文,直接关闭连接了。
[image]
描述一下网络链路吧,程序和 TiDB 之间有哪些中间件,大概率还是某个中间件的问题。
最好是把 tiup cluster tls 也集成到 dm 上,这样配置就可以自动化了。
tidb@dev-tidb-db-e01:~/dm-cert-files$ tiup cluster tls --help
Enable/Disable TLS between TiDB components
Usage:
tiup cluster tls <cluster-name> <enable/disable> [flags]
Flags:
--clean-certificate Cleanup the certificate file if it already ex…