【技術】一個由於時間問題引發的血案

導讀:公司目前正在搞多機房部署,多機房部署數據庫那一塊採用是MYSQL 的主主同步,由於部署另外一個機房的時候忘記添加時間ntp 服務器的同步,導致兩個機房服務器時間不一致,而公司有個論壇是採用discuzX2 的版本,論壇的php 的統計程序會在0 點的時候做清空帖子數等一些操作,這些信息會改寫數據庫中相應的記錄,應此通過MYSQL 的同步,另外一邊也出現帖子數清零的現象。

公司目前正在實施多機房部署,避免因為一個機房出先問題而導致業務中斷的情況,目前另外一個機房已經部署好了,只是目前只用了一個機房,深圳機房還處於測試階段,架構如下圖

所示:


【技術】一個由於時間問題引發的血案


目前在用的是佛山機房,網站架構為LNMP(linux/nginx/mysql/php),其中論壇使用的是discuzX2的版本。

下午3 點的時候運營那邊突然打電話過來詢問,為什麼論壇的所有板塊的帖子都置0 了?感到問題比較嚴重,於是趕緊登錄服務器查看,SELECT `name`,todayposts FROMpre_forum_forum;查看這個板塊表中,發現todayposts 被重置了。因為數據庫的管理員只有我一個人知道,因此不會有人去直接重置那個表的信息。

查找計劃任務看看是否有計劃任務會去更新pre_forum_forum 表的todayposts 字段,也沒發現。我懷疑是什麼條件觸發了那個論壇的一些統計腳本,因為帖子到了0 點才會清零。突然意識到會不會是時間到0 點了?於是登錄佛山服務器查看,時間正常。再登錄深圳機房服務器,oh my gold!時間是00 點過2 分鐘。諮詢開發,他們說是discuz 中含有一些統計的和清零的腳本,到了0 點就會清空帖子數等一些操作。

這些操作會寫入數據庫,由於佛山和深圳機房做了MYSQL 主主同步,因此也會同步到佛山機房的數據庫中,導致佛山的論壇出現帖子數清零的現象。那麼為什麼深圳機房的時間會和佛山機房的差那麼遠呢?原來是忘記將時間同步的命令添加到計劃任務中。

趕緊將時間同步的命令添加到計劃任務中,59 5,9,14,19,23* * * ntpdate asia.pool.ntp.org。另外為了避免類似問題,將這個命令加入到系統初始化腳本中,以後一安裝完系統就跑系統初始化腳本。


教訓

這個是一個很低級的錯誤,對於這種服務器都需要用

的基礎配置,必須添加到系統初始化腳本中,避免再次出現類似

的問題。同時也給自己一個教訓就是配置好服務器後需要做詳細

的檢查,要細心,杜絕此類低級錯誤的發生。

ead from remote host X.X.X.X: Connection reset by peer


解決辦法

有的時候要採用scp 備份異地的文件,這個時候有的時候會

出現如下報錯ead from remote host X.X.X.X: Connection reset by peer

lost connection

解決辦法,在客戶端上的/etc/ssh/sshd_config 添加如下內容:

ClientAliveInterval 300

ClientAliveCountMax 60

重啟ssh,看看是否還會出現類似問題?


分享到:


相關文章: