如何在AWS DMS中为源数据库设置time_zone?

时间:2017-12-06 23:41:21

标签: mysql amazon-web-services rds dms

我正在尝试将MySQL数据库迁移到Aurora,但无法设置时区。

根据documentation:"有效值是托管源MySQL数据库的操作系统的标准时区缩写。"

在我的Linux(Ubuntu)计算机上执行 date 会显示:Thu Dec 7 10:27:48 AEDT 2017

我已将源端点配置为使用:

额外连接属性 initstmt = SET time_zone = AEDT

这会导致我的连接测试失败:

Error Details: [errType=ERROR_RESPONSE, status=1022502, errMessage=Cannot connect to ODBC provider ODBC general error., errDetails= RetCode: SQL_ERROR SqlState: HY000 NativeError: 1298 Message: [unixODBC][MySQL][ODBC 5.3(w) Driver]Unknown or incorrect time zone: 'AEDT' ODBC general error.]

我也尝试了"Australia/Sydney"(与RDS参数组中的值相同)但得到了相同的错误。

有什么想法吗?

我完全知道这应该是UTC。不是我的选择 - 遗产。

更新:似乎initstmt=SET time_zone="+11:00"有效,但导致this问题。

1 个答案:

答案 0 :(得分:0)

您是否希望将MySQL从Linux服务器迁移到Aurora,即用户复制而不是DMS。 DMS在数据加载期间不支持许多DDL。因此,在MySQL和Aurora之间创建一个复制。

Master - 您当前的MySQL。 奴隶 - 奥罗拉。

准备:

  • 两个实例都能够相互通信。
  • 主人必须是5.5或更高版本。
  • binlog_format到Master MySQL上的ROW。

创建用于复制的用户:

CREATE USER 'rep_user'@'%' IDENTIFIED BY 'rep_user';  
GRANT REPLICATION slave ON *.* TO 'rep_user'@'%' IDENTIFIED BY 'rep_user';  
FLUSH PRIVILEGES;  

使用Binlog详细信息进行转储:

mysqldump -u user -p dbname --master-data=2 > backup.sql

less backup.sql 这将为您提供binlog文件名及其位置。

恢复备份:

mysql -h auroraendpoint -u user -p dbname < backup.sql

启用复制:

CALL mysql.rds_set_external_master ('Master_RDS_EndPoint', 3306,    'Replication_user_name', 'Replication_User_password', 'BinLog_FileName', BingLog_Position, 0);

Strat复制:

call mysql.rds_start_replication;

割接:

在维护窗口期间进行切换并将Aurora作为主人。

call mysql.rds_stop_replication;  
CALL mysql.rds_reset_external_master;