我们在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)
那么在插入/更新数据时需要做些什么才能在主设备和从设备上获得相同的时间?
答案 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