更改 AWS RDS mysql时区 -摘自网络

Posted iDEAAM 爱地爱木

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了更改 AWS RDS mysql时区 -摘自网络相关的知识,希望对你有一定的参考价值。

AWS RDS

AWS上搭建数据库的时候,不是DB on EC2就是RDS,但是选择RDS时,Timezone怎么处理?

「面向全球提供的AWS来讲理所当然的是UTC」,而RDS也不是例外。把服务器迁移到AWS时,「数据库能不能使用中国时间」是常见的一个问题。 DB on EC2的话,配置一下系统的Timezone就可以,但是RDS是我们无法直接登录的因此需要使用mysql的功能来实现。

介绍如何修改RDS MySQL的Timezone。

在RDS的Master用户不同于MySQL root用户,因此没有SUPER权限(管理者权限)。因此不能使用SET GLOBAL命令修改Timezone。在这里使用MySQL的init_connect参数里使用SET SESSION命令来修改Timezone。Init_conect参数实在Parameter Group里进行修改。

注意事项

  • rdsadmin用户貌似是AWS用来管理RDS实例的用户,无法判断影响范围因此不修改rdsadmin的Timezone。
  • 在init_connect参数里直接填写命令会无法正常运行,因此定义Stored Procedure,用CALL方式执行

操作流程如下

  1. 创建Stored Procedure
  2. 创建Parameter Group
  3. Parameter Grouup关联到RDS
  4. 重启RDS

1.创建Stored Procedure

以Master用户登录到RDS,shared Schema创建Stored Procedure(shared.store_time_zong)。

把时间配置为中国标准时间(Asia/Chongqing)。

确认Stored Procedure好不好用

确认到时间变为中国标准时间(比UTC快8小时)。

2.创建Parameter Group

RDS上是以Parameter Group的形式来管理,MySQL的参数,在这里不修改默认的Parameter Group,创建一个Parameter Group。

  1. 点击:Parameter Groups
  2. 点击:Create Parameter Group

技术分享

  1. Parameter Group Family:选择mysql5.6(因为我们的RDS MySQL版本是5.6.22)
  2. Group Name:timezone-Chongqing
  3. Description:init_connect call store_time_zone

技术分享

  1. 选择:timezone-chongqing
  2. 点击:Edit Parameters

技术分享

  1. init_connect:CALL shared.store_time_zone

技术分享

  1. 点击:Save Changes

技术分享

  1. 选择:RDS实例(awspack)
  2. 点击:Instance Actions
  3. 点击:Modify

技术分享

  1. DB Parameter Group:timezone-chongqing
  2. 点击:Continue

技术分享

  1. 确认:DB Parameter Group为timezone-chongqing
  2. 点击:Modify DB Instance

技术分享

当用户连接到RDS时,通过init_connect调用Stored Procedure。

3. 重启RDS

重启RDS实例之前确认一下,Parameter Group的状态在applying

  1. 点击:RDS Dashboard的Instances
  2. 选择:RDS实例awspack
  3. 点击:Instance Actions
  4. 点击:Reboot

技术分享

重启RDS实例之后确认,Parameter Group的状态为in-sync

技术分享

以aws_rds用户登录到MySQL以后查看,时间为中国时间。

以上是关于更改 AWS RDS mysql时区 -摘自网络的主要内容,如果未能解决你的问题,请参考以下文章

AWS RDS MySQL 只读副本滞后问题

AWS实例修改时区及数据库实例修改时区

AWS实例修改时区及数据库实例修改时区

在 Elastic Beanstalk 中更改 AWS RDS 层级

更改 AWS EB 环境使用的 RDS 数据库

更改 AWS EB 环境使用的 RDS 数据库