更改 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)。

1

2

3

4

5

6

7

8

9

10

11

mysql> CREATE DATABASE shared;

Query OK, 1 row affected (0.00 sec)

mysql> DELIMITER |

mysql> CREATE PROCEDURE shared.`store_time_zone`()

-> IF (POSITION(‘[email protected]‘ IN CURRENT_USER()) = 1) THEN

-> SET SESSION time_zone = ‘Asia/Chongqing‘;

-> END IF |

Query OK, 0 rows affected (0.01 sec)

mysql> DELIMITER ;

确认Stored Procedure好不好用

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

mysql> select now();

+---------------------+

| now()               |

+---------------------+

| 2015-04-09 05:10:41 |

+---------------------+

1 row in set (0.00 sec)

mysql> CALL shared.store_time_zone;

Query OK, 0 rows affected (0.07 sec)

mysql> select now();

+---------------------+

| now()               |

+---------------------+

| 2015-04-09 13:10:52 |

+---------------------+

1 row in set (0.00 sec)

确认到时间变为中国标准时间(比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以后查看,时间为中国时间。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

$ mysql -h awspack.crhydmkxhg6d.ap-northeast-1.rds.amazonaws.com -uaws_rds -p

Enter password:

Welcome to the MySQL monitor.  Commands end with ; or \g.

Your MySQL connection id is 7

Server version: 5.6.22-log MySQL Community Server (GPL)

Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its

affiliates. Other names may be trademarks of their respective

owners.

Type ‘help;‘ or ‘\h‘ for help. Type ‘\c‘ to clear the current input statement.

mysql> show global variables like ‘init_connect‘;

+---------------+-----------------------------+

| Variable_name | Value                       |

+---------------+-----------------------------+

| init_connect  | CALL shared.store_time_zone |

+---------------+-----------------------------+

1 row in set (0.00 sec)

mysql> select now();

+---------------------+

| now()               |

+---------------------+

| 2015-04-09 13:44:10 |

+---------------------+

1 row in set (0.00 sec)

时间: 2024-07-31 03:39:32

更改 AWS RDS mysql时区 -摘自网络的相关文章

AWS RDS for MySQL 维护

AWS RDS维护 检查云数据库的数据库参数 max_connections=4000  #但实际连接数到800,就无法访问了 VPC: 逻辑的虚拟的网络,可以配置自由的IP,子网.路由表和网关 提供了安全组合网络访问控制列表等高级安全功能 原文地址:http://blog.51cto.com/395469372/2106516

Amazon RDS MySQL数据库还原时 log_bin_trust_function_creators 错误解决办法

使用了Amazon AWS EC2免费云空间,数据库实例采用Amazon RDS.原来在Windows Server上有一个存在大量数据的MySQL数据库.现在需要在Amazon RDS上还原这个MySQL数据库,勾掉Views(因为它会要求SUPER权限,而Master User无此权限,毕竟是托管的RDS),只留下Tables,如下图(使用Navicat): 图1:勾掉Views,因为RDS上的Masteruser无Super权限,无法还原Views对象 但在还原时,仍然出现如下的错误信息:

tomcat解压版安装(摘自网络)

配置Tomcat[解压版] 选择解压版的Tomcat的理由是可以让我们使用多个Tomcat,但是配置上就会出现一些问题,需要我们手动进行更改配置.我的Tomcat版本是:apache-tomcat-6.0.16.zip 给个链接:http://tomcat.apache.org 下载完成后,解压到C:\Tomcat6(设置你的路径),检查环境变量JAVA_HOME是否存在:一般JDK安装时会自动设置,如果没有就创建,JAVA_HOME的值设为JDK的安装根路径. 环境变量位置:我的电脑 -> 右

Configure Amazon RDS mysql to store Chinese Characters

Configure Amazon RDS mysql to store Chinese Characters https://dev.mysql.com/doc/refman/5.7/en/charset-applications.html http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-database-instance.html#cfn-rds-dbinstance-charac

C#制作ActiveX控件及部署升级(摘自网络)

使用C#开发ActiveX控件 控件开发.制作CAB包.签名.部署 ActiveX控件以前也叫做OLE控件,它是微软IE支持的一种软件组件或对象,可以将其插入到Web页面中,实现在浏览器端执行动态程序功能,以增强浏览器端的动态处理能力.通常ActiveX控件都是用C++或VB语言开发,本文介绍另一种方式,在.NET Framework平台上,使用C#语言开发ActiveX控件. 虽然本文通篇都在讲如何使用C#语言开发ActiveX控件,但我并不极力推荐使用这种技术,因为该技术存在明显的局限,即需

AWS - RDS

AWS提供了2种数据库,RDS和DynomoDB,前者是传统的关系型数据库,目前包括Mysql,PostgrepSQL, Oracle和 MS SQL: 后者是NoSQL: 豆子以MySQL为例,把AWS RDS的基本功能过一遍. 接下来会演示以下功能: 如何创建MySQL 实例 如何通过EC2连接MySql 实例 如何创建Read Replica 如何Promote Read Replica, 如何备份,观察事件,发送通知 如何删除 MySQL 实例 1) 首先来看看如何创建MySQL实例 登

RDS MySQL 全文检索相关问题的处理

RDS MySQL 全文检索相关问题 1. RDS MySQL 对全文检索的支持 2. RDS MySQL 全文检索相关参数 3. RDS MySQL 全文检索中文支持 3.1 MyISAM 引擎表 3.2 InnoDB 引擎表 4. like '%xxx%' 和全文检索的比较 4.1 like '%xxx%' 4.2 全文检索 5. ft_query_expansion_limit 参数作用 1. RDS MySQL 对全文检索的支持 RDS MySQL 5.5 仅 MyISAM 引擎表支持全

RDS MySQL 表上 Metadata lock 的产生和处理

1. Metadata lock wait 出现的场景 2. Metadata lock wait 的含义 3. 导致 Metadata lock wait 等待的活动事务 4. 解决方案 5. 如何避免出现长时间 Metadata lock wait 导致表上相关查询阻塞,影响业务 1. Metadata lock wait 出现的场景 创建.删除索引 修改表结构 表维护操作(optimize table.repair table 等) 删除表 获取表上表级写锁 (lock table tab

Android:控件WebView显示网页 -摘自网络

WebView可以使得网页轻松的内嵌到app里,还可以直接跟js相互调用. webview有两个方法:setWebChromeClient 和 setWebClient setWebClient:主要处理解析,渲染网页等浏览器做的事情 setWebChromeClient:辅助WebView处理Javascript的对话框,网站图标,网站title,加载进度等 WebViewClient就是帮助WebView处理各种通知.请求事件的. 在AndroidManifest.xml设置访问网络权限: