私のマシンには、システム時刻(タイムゾーンを含む)を同期するサービスがあり、DBがマシンの時刻とたまに同期するようにしたいと考えています。
SYSTEM時間を変更すると、MySQLはCURRENT_TIMESTAMP
、MySQLサービスを再起動したときにのみ同期します。
質問したいのですが、サービスを再起動せずに、システム変数などを更新することで、DB時間をSYSTEM時間またはその他の時間に設定することは可能ですか?
DBを停止したくありません。たまに実行されるスケジュールされたタスクを設定できると思いますが、どうすればよいですか?
回答を受け入れるには、次のテストに合格する必要があります。
# change system time, date or timezone on the machine
select CURRENT_TIMESTAMP from dual; #--still show old time
call sync_time; #or some sync date + time + timezone commands...
select CURRENT_TIMESTAMP from dual; #--will show updated time
Sync_timeプロシージャが必要です。これにより、最後の選択でマシンの日付と現地時間が表示されます。
@rathishDBAの回答はまったく役に立ちませんでした。MySQL変数のみを変更し、DB時間を同期しませんでした。 「root」ユーザーとして試してみましたが、最初と最後の両方の選択で同じ非同期結果が得られました。
System time = 2:07
CURRENT_TIMESTAMP = 11:37
この解決策は私にとってうまくいきました、あなたにとってもうまくいくことを願っています:
mysql> select now();
+---------------------+
| now() |
+---------------------+
| 2017-10-26 15:13:16 |
+---------------------+
1 row in set (0.07 sec)
mysql> SET GLOBAL time_zone = 'SYSTEM';
Query OK, 0 rows affected (0.07 sec)
mysql> show global variables like '%time_zone%';
+------------------+---------------------+
| Variable_name | Value |
+------------------+---------------------+
| system_time_zone | India Standard Time |
| time_zone | SYSTEM |
+------------------+---------------------+
2 rows in set (0.18 sec)
mysql>
システムの再起動を回避するために、実行時にこの構成値を設定するには、SUPER
特権が必要です。