RHEL6服务器的系统时区在MySQL复制中有什么影响?

时间:2015-04-29 09:54:07

标签: mysql timezone

我们在EST时区有一个主服务器,而slave配置为遵循IST时区,但slave上的mysql配置了default_time_zone = EST5EDT只是为了使两个数据库实例都遵循相同的时区,但是如果我执行

mysql > Select now(); 

在两台服务器上我获得相同的值,相反,当我使用now()在master实例中插入值时,它在主机上的EST和从机上的IST中插入值,这导致主机和从机中的数据差异列。 以下是我进行的测试

 Master : (Having EST as system timezone)
 mysql> insert into test_timezone values (1,now());
  Query OK, 1 row affected (0.00 sec)

 mysql> insert into test_timezone values (2,now());
 Query OK, 1 row affected (0.00 sec)

 mysql> insert into test_timezone values (3,now());
 Query OK, 1 row affected (0.00 sec)

 mysql> select * from test_timezone;
 +------+---------------------+
 | id   | date_tz             |
 +------+---------------------+
 |    1 | 2015-02-02 02:53:46 |
 |    2 | 2015-02-02 02:53:50 |
 |    3 | 2015-02-02 02:53:54 |
 +------+---------------------+

 Slave : (Having IST as system timezone but mysql default timezone is   EST5EDT)
 mysql> select * from test_timezone;
 +------+---------------------+
 | id   | date_tz             |
 +------+---------------------+
 |    1 | 2015-02-02 13:23:46 |
 |    2 | 2015-02-02 13:23:50 |
 |    3 | 2015-02-02 13:23:54 |
 +------+---------------------+
 3 rows in set (0.00 sec)

那么在插入/更新数据时需要做些什么才能在主设备和从设备上获得相同的时间?

1 个答案:

答案 0 :(得分:0)

MySQL依赖于系统时区。

default-time-zone='TIMEZONE'

如果未在my.cnf中配置此变量,则MySQL将使用系统时区来保存和显示数据。如果您想在主站和从站中拥有相同的时间值,那么理想的方法是配置

default-time-zone='TIMEZONE'

主站和从站的上述变量将优先于系统时区,并且您将在主站和从站中具有相同的时间值。

如果您在MySQL中找不到所需的时区,请按照以下链接填充MySQL数据库中的时区

https://dev.mysql.com/doc/refman/5.5/en/time-zone-support.html