Mysql
在 mysql 5.5 伺服器上更新系統時間有什麼風險嗎?
我們剛剛發現我們的一個mysql系統沒有執行ntp,結果時間有點飄了。
如果我啟用 ntp,並在系統執行時同步時間,會不會有任何問題?master 目前慢了大約 4 分鐘,slave 大約落後了 3:45。
隨著Master上時鐘時間的變化
- 從站可能會失去數據
- 從站可能會重播它已經處理過的查詢
您應該安排短暫的停機時間,而不是冒這兩種極端情況的風險。
這是你應該做的:
步驟 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
是 0Read_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 伺服器主機上更改時鐘時間的風險)