【MySQL】DTS机制对触发器时间的影响

案例背景

背景:

  1.  源库A 通过 dts的sync服务 同步一张表 到目标库B(表B1)
  2. 目标库B同时通过触发器实现:
    1. 当表B1 insert时,触发器触发该记录同时写入B2
    2. B2 比 B1多了两个时间字段,且为datetime格式
    3. 多的两个时间字段值通过触发器NOW函数生成写入

问题:

  • 两个时间字段的时间都少8小时

DTS 对日期的处理逻辑

1.  dts 会把源库日期相关的数据转换为0时区的值

2.  然后在写入目标端时设置session time_zone为0时区,这样不管源库目标库设置的是什么时区都可以以统一的方式处理,这也是一种标准的处理方式,

        a.  例如binlog中设置的时区就是0时区。

        b.  注意不同时区只影响时间的表示形式,并不影响存入数据库的二进制值(timestamp类型是这样)

        c.  但是datetime这个类型比较特殊,在mysql中基本等同于字符串类型,所以在不同时区下datetime类型的值的意义发生了变化,使用不当会导致源库目标库的值不一致,这个和dts无关。

触发器的联动逻辑

● now() 函数实现

       

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

无用程序员~

家里还有病重的爷爷奶奶🙏🙏

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值