Mysql время застревает после экспорта / импорта - PullRequest
3 голосов
/ 26 мая 2011

Один из моих пользователей mysql обработал свою производственную базу данных следующим образом:

Он экспортировал все данные в файл дампа, затем удалил все содержимое, а затем импортировал свои данные обратно в базу данных.Он спас несколько гигабайт из большого табличного пространства Innodb (я не знаю, зачем он это сделал, но это не главное).

Теперь у нас проблема.

Время вернулось к настоящему времени ()всегда одно и то же, время операции (я не знаю, если это время экспорта или импорта).

Демо:

mysql> \! date
Wed May 25 22:49:24 CEST 2011
mysql> select now();
+---------------------+
| now()               |
+---------------------+
| 2011-05-07 05:34:52 |    <--- the date of the export/import, mysql is stuck at this date
+---------------------+
1 row in set (0.00 sec)

mysql> select sysdate();
+---------------------+
| sysdate()           |
+---------------------+
| 2011-05-07 05:34:52 |
+---------------------+
1 row in set (0.01 sec)

mysql> show variables like 'timestamp';
+---------------+------------+
| Variable_name | Value      |
+---------------+------------+
| timestamp     | 1304739292 |  <-- timestamp is stuck to this value
+---------------+------------+

mysql> set timestamp=1;        <-- i can manually change the time returned by now()
Query OK, 0 rows affected (0.00 sec)

mysql> select now();
+---------------------+
| now()               |
+---------------------+
| 1970-01-01 01:00:01 |
+---------------------+
1 row in set (0.00 sec)

mysql> select sysdate();
+---------------------+
| sysdate()           |
+---------------------+
| 2011-05-07 05:34:52 |   <--- but sysdate() is still stuck
+---------------------+
1 row in set (0.00 sec)

Любая идея, как я мог бы исправить это без перезапускаmysqld или повторный импорт данных?

1 Ответ

0 голосов
/ 14 июня 2011

Дикая догадка здесь: если в mysql установлена ​​опция "--sysdate-is-now", тогда SYSDATE () ведет себя как NOW () - так что вы не увидите никакой разницы между двумя функциями, как описано выше. От http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_sysdate:

SYSDATE () возвращает время выполнения. Это отличается от поведения для NOW (), которая возвращает постоянное время, которое указывает время, когда оператор начал выполняться.

В конце концов, ваш процесс импорта по какой-то причине не завершился? Проверьте список процессов с помощью «SHOW PROCESSLIST», а затем выполните «KILL (Process_Id)» и посмотрите, поможет ли это вернуть вам функции времени в нужное русло.

...