如果你Master与Slave的时区不相同,那你就有些麻烦了,具体的设置见MySQL手册
今天写MySQL replication关于events的blog. 就在Master创建envent, 利用了now()这个函数来设置event的执行时间,因为只是简单测试,一切从简,可是,当在Master和Slave上的event都创建成功,但二者的触发时间却相差6个小时;
但是我前面已是用date -s 来手动同步了两个linux server的时间,只相关1s.
而且在两mysql上执行select now()也是只相差1s.
同时间测试,在Master向可复制的一表中插入now()和sysdate()时,Master与Slave对应表的数据的时间就是相关6小时
当然在Slave上执行插入now()和sysdate()肯定是和Master的时间结果一样。
经过测试和调查,最终确定下来是时区设置不一致的问题。
mysql> show events\G
*************************** 1. row ***************************
Db: test
Name: e_replication
Definer: root@localhost
Time zone: SYSTEM
Type: RECURRING
Execute at: NULL
Interval value: 1
Interval field: MINUTE
Starts: 2012-04-09 16:20:34
Ends: 2012-04-09 16:27:34
Status: ENABLED
1 row in set (0.00 sec)
Slave上复制成功的Event
mysql> show events\G
*************************** 1. row ***************************
Db: test
Name: e_replication
Definer: root@localhost
Time zone: SYSTEM
Type: RECURRING
Execute at: NULL
Interval value: 1
Interval field: MINUTE
Starts: 2012-04-09 22:20:34
Ends: 2012-04-09 22:27:34
Status: SLAVESIDE_DISABLED
1 row in set (0.01 sec)
Master上的时区
mysql> show variables like '%time_zone%';
+------------------+--------+
| Variable_name | Value |
+------------------+--------+
| system_time_zone | CEST |
| time_zone | SYSTEM |
+------------------+--------+
2 rows in set (0.00 sec)
Slave上的时区
mysql> show variables like '%time_zone%';
+------------------+--------+
| Variable_name | Value |
+------------------+--------+
| system_time_zone | CST |
| time_zone | SYSTEM |
+------------------+--------+
2 rows in set (0.00 sec)
更直观地查看,利用date -R
Master:
[mysql@vvmvcs0 data]$ date -R
Tue, 10 Apr 2012 13:09:40 +020
Slave:
[root@mwm-database /]# date -R
Tue, 10 Apr 2012 13:09:33 +0800
可见Master比Slave晚6小时。
阅读(1742) | 评论(2) | 转发(0) |