扩展服务器时使用不同的时区是否有不利影响?

时间:2019-06-24 14:38:04

标签: php mysql apache

我在MySQL上托管了一个主数据库(Ubuntu Server),其计算机时区设置为America / New York(默认)。 下面的命令显示MySQL正在使用系统时区。

mysql> @@global.time_zone, @@session.time_zone

我有3台服务器托管在不同的区域。基本上是靠近用户群的区域。

Server 1 : Hosted on Europe Region.
Server 2 : Hosted on North America Region.
Server 3 : Hosted on South America Region.

这些服务器通过负载平衡器并使用Round-robin方法进行管理。所有这些服务器都将数据存储在同一MySQL服务器上。

所有这些服务器都有其本地时区,并且都是不同的时区。

我想扩展主数据库以承担额外的负载,还希望在亚洲添加一些新服务器。

在不久的将来为多台服务器使用不同的时区是否会引起问题?还是应该对所有服务器(美国/纽约)和数据库服务器使用相同的时区?但是我想在选择数据时使用 mysqli日期函数,并且还希望将数据显示到用户本地时区。

当前,我将所有日期都转换为美国/纽约时区,然后存储在MySQL数据库中,但这可能会影响性能。并通过按国家/地区进行转换来向用户显示。

执行此操作的最佳方法是什么?

我正在使用ApacheMysqlPHP

谢谢。

1 个答案:

答案 0 :(得分:1)

什么是DST?

DST是指夏令时夏令时。 DST在春天开始时,我们的时钟会提前一定的时间,通常是1小时。这意味着将跳过1个小时,从时钟开始,DST转换的日期只有23个小时。

DST的快速示例:

此示例将向您展示DST的效果。我正在使用Windows 10作为操作系统。

请按照以下步骤查看DST在实际中的含义。

第1步::右键单击“日期和时间”(位于Windows任务栏的右下角)。

步骤2:单击调整日期/时间选项。

第3步::打开-“自动调整夏令时”选项。

第4步::将“时区”设置为(UTC-6:00中部时间(美国和加拿大))。

步骤5:关闭-“自动设置时间”选项。

步骤6::在“更改日期和时间”标签下,单击“更改”。

STEP 7::将“日期”设置为2019年3月10日,将时间设置为1:59 AM,然后单击“更改”。

-现在查看1分钟后的PC时间,而不是凌晨2:00,它将显示为3:00 AM。这是因为在夏季(夏令时开始时间),您的时钟被设置为比实际时间早1个小时,而夏令时结束时则向后退1小时。

-美国的夏令时2019从3月10日星期日凌晨2:00开始,到11月3日星期日凌晨2:00结束

*不用担心会为您的PC时间增加一小时,它将在2019年11月3日凌晨2:00减去。

具有夏时制/夏令时的问题:

由于时间不符合主要时间标准,因此可能会对服务器应用程序造成一些问题。以下是受DST启用的时区影响最大的区域。

  • 实时聊天应用程序。
  • 跨多个区域扩展服务器。
  • 记录数据。
  • 交易数据。
  • 数据库并发。
  • NoSQL数据库扩展。
  • 性能点击。
  • 处理全球访客。
  • 和其他用途。

DST解决方案:

-将MySQL时区更改为UTC(+0:00),只需更改my.conf文件(也称为My.INI,my.CNF),添加以下代码:

[mysqld]
default-time-zone=+00:00

-PHP时区为UTC,只需使用以下代码即可:

ini_set("date.timezone", "UTC");

-将服务器/系统时区更改为UTC。

有关DST的一些要点:

  • DST不适用于世界标准时间(UTC)。因为它基于协调的时间尺度。

  • 某些国家/地区尚未实施DST,而是根据UTC时差使用自己的时区。例如,印度使用IST(印度标准时间)设置为Asia / Kolkata或UTC + 5:30,因此您没有不必担心更改这些国家/地区的时钟。