amazon-web-services - 时间戳列上的 AWS DMS time_zone 问题
问题描述
我当前的源数据库是非 UTC 时区(亚洲/加尔各答,UTC+5:30)。
我使用 AWS DMS 将某些表从 SourceDB 移动到 TargetDB,该 TargetDB 在参数组中设置为相同的非 UTC 时区(亚洲/加尔各答)。
当我创建并运行“迁移现有数据并复制正在进行的更改”时,数据被迁移但时间戳列是不同的值(实际上是 UTC)
table1 @ Source DB
----------------------------------------------------
id user_id purpose in_time
1 24 Cleaning 2020-08-09 20:00:00
2 78 Cleaning 2020-08-09 21:30:00
table1 @ Target DB
----------------------------------------------------
id user_id purpose in_time
1 24 Cleaning 2020-08-09 14:30:00
2 78 Cleaning 2020-08-09 16:00:00
现在,我停止 DMS 任务,然后再次恢复它。(这一步很重要,后面会跟描述的不一样)。
在此之后,当我更新第 1 行时,说源数据库复制上的目的列发生并且目标数据库上的 Asia/Calcutta time_zone 突然出现时间,但仅对于该ROW 1,时间上的ROW 2仍然是 UTC。
table1 @ Source DB
----------------------------------------------------
id user_id purpose in_time
1 24 Survey 2020-08-09 20:00:00
2 78 Cleaning 2020-08-09 21:30:00
table1 @ Target DB
----------------------------------------------------
id user_id purpose in_time
1 24 Survey 2020-08-09 20:00:00
2 78 Cleaning 2020-08-09 16:00:00
任何线索为什么它会这样,有没有办法解决这个问题?
PS我不是在寻找建议“您应该始终在您的数据库中使用UTC格式”的答案,因为这不是我的选择。
解决方案
好的,我终于能够解决这个问题。
答案在这个aws 文档中,但不是很明显。查看使用 MySQL 作为 AWS DMS 源时的额外连接属性
serverTimezone
当您的源数据库是非 UTC 时区时,我们需要在定义端点时在额外连接属性中定义。
指定源 MySQL 数据库的时区。
示例:serverTimezone=US/Pacific;
注意:不要将时区括在单引号中。
另请注意,如果您的目标端点位于非 UTC 时区,则有类似的设置,请参阅此aws 文档,initstmt=SET time_zone='US/Pacific'
如果它是非 UTC 则设置目标数据库的 time_zone(请注意,time_zone 在此处使用单引号)。
指定目标 MySQL 兼容数据库的时区。
默认值:UTC
有效值:您要使用的时区的三个或四个字符的缩写。有效值是托管目标 MySQL 兼容数据库的操作系统的标准时区缩写。
示例:initstmt=SET time_zone=UTC
需要注意的一件非常重要的事情是,当您设置目标数据库 time_zone 时,接受的 time_zone 值根据操作系统,即 Linux。而不是数据库,即 MySql。
在我的情况下,使用了以下值:
- 源数据库
serverTimezone=Asia/Calcutta
- 目标数据库
initstmt=SET time_zone='Asia/Kolkata'
除了在数据库参数组中设置 time_zone 之外,您还需要根据数据库 time_zone 设置这两个值。
推荐阅读
- mysql - MySql更新查询极慢
- amazon-s3 - 使用 AWS athena 从 avro 文件读取数组没有结果和未知错误
- android - 导入项目时 gradle 同步失败
- node.js - 在 Node/Express 中,如何使用 csv-to-array 匹配或比较嵌套承诺中的值
- java - 如何使用通用方法查找对象的字段?
- scroll - 停止滚动的 Tmux 配置
- azure-devops - VSTS WIki 使用 HTML Img 标签
- conda - GDAL/底图 w/ Anaconda Python 2.7 w/o internet 或其他 GIS 选项,如 cartopy
- git - 是否可以使用命令行在 Visual Studio Online 上创建一个空的 Git 存储库?
- java - 我们可以在 Spring Retry 中配置两个 RetryConfiguration 类吗?