Mysql

在 mysql 5.5 伺服器上更新系統時間有什麼風險嗎?

  • August 17, 2015

我們剛剛發現我們的一個mysql系統沒有執行ntp,結果時間有點飄了。

如果我啟用 ntp,並在系統執行時同步時間,會不會有任何問題?master 目前慢了大約 4 分鐘,slave 大約落後了 3:45。

隨著Master上時鐘時間的變化

  1. 從站可能會失去數據
  2. 從站可能會重播它已經處理過的查詢

您應該安排短暫的停機時間,而不是冒這兩種極端情況的風險。

這是你應該做的:

步驟 01:停止所有對 Master 的寫入

SET GLOBAL read_only = 1;
FLUSH TABLES WITH READ LOCK;

步驟 02:確保 Master 上的寫入已停止

SHOW MASTER STATUS;

你可能會看到這樣的東西

mysql> show master status;
+----------------+----------+--------------+------------------+-------------------+
| File           | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+----------------+----------+--------------+------------------+-------------------+
| bin-log.005956 | 59702913 |              | dba              |                   |
+----------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)

mysql>

執行幾次並確保沒有任何執行

步驟 03:在 Master 上設置時鐘時間(如果需要,在 Slave 上設置)

步驟 04:在 Slave 上,執行幾次

SHOW SLAVE STATUS\G

確保

  • Seconds_Behind_Master是 0
  • Read_Master_Log_File沒有改變
  • Relay_Master_Log_File沒有改變
  • Exec_Master_Log_Pos沒有改變

STEP 04 : 在從站上執行以下命令

STOP SLAVE;
CHANGE MASTER TO master_log_file='bin-log.000001',master_log_pos=4;

STEP 05 : 在 Master 上執行

RESET MASTER;

這將清除您在 Master 上的所有 binlog 並從一個新的開始

步驟 06:在奴隸上,

START SLAVE; DO SLEEP(5); SHOW SLAVE STATUS\G

確保Seconds_Behind_Master為 0

步驟 07:在 Master 上,

UNLOCK TABLES;

而已。

最好這樣做只是在實時系統上翻轉時鐘

我在大約 1.5 年前提出了這個建議(在 MySQL 伺服器主機上更改時鐘時間的風險

引用自:https://dba.stackexchange.com/questions/111317