crontab的mysqldump備份任務未能完全正確執行的故障處理

来源:https://www.cnblogs.com/liyingxiao/archive/2018/04/08/8746130.html
-Advertisement-
Play Games

crontab是每個運維一線人員必須掌握的技術,熟練運用crontab可以自動幫助我們執行重覆性的工作,提高運維的工作效率。它就像一個鬧鐘,在特定的時間,準時響應並執行相應的任務。如果你的工作經常與Linux打交道,那麼你可以繼續往下看,瞭解crontab的一般性故障排查。 本次的故障發生在生產環境 ...


  crontab是每個運維一線人員必須掌握的技術,熟練運用crontab可以自動幫助我們執行重覆性的工作,提高運維的工作效率。它就像一個鬧鐘,在特定的時間,準時響應並執行相應的任務。如果你的工作經常與Linux打交道,那麼你可以繼續往下看,瞭解crontab的一般性故障排查。

  本次的故障發生在生產環境的一臺雲伺服器上,每日凌晨2點15執行資料庫的mysqldump備份任務,保留最近的三天備份,刪除之前多餘的備份文件。當第四天執行完計劃任務的時候發現本地備份目錄中居然還存留三天前的壓縮備份文件,調試腳本檢查並無問題後,手動執行crontab的腳本,發現crontab能完全正確執行,而第二天再次通過crontab的方式執行發現仍然多保留了一天的壓縮備份文件。(這裡可以通過touch命令新建空文件或者修改文件時間來模擬)

  通過與其他同行溝通並谷歌或百度搜索,發現了兩種解決這種問題的方案,如下是我的本次故障的排查流程。因故障發生於阿裡雲的生產伺服器,故障排查的現象過程不便於重現,敬請諒解,對於生產伺服器我們還是應當謹慎的操作,不便於做測試任務。

【故障情景】

  一臺阿裡雲的雲伺服器,crontab手動和自動均能執行備份任務,自動執行後備份的文件相對只保留三天卻多保留一天,而手動執行卻能保存三天的備份,而本地的物理機就能成功執行,只有雲伺服器多保留一天的備份。

#刪除未壓縮的備份目錄
function rm_oldfile()
{
  cd $backupdir
  find ./ -type f -mtime +2 -exec rm {} \;
}

#需要清理備份的時候把下麵註釋去掉,天數可以自行修改
rm_oldfile;

【故障分析】

  crontab出現故障,會有兩個原因,一個是命令路徑的問題,另一個就是環境變數的問題。

【故障排查】   命令路徑都是正確,且相關命令是絕對路徑,crontab自動執行不會出現問題。   第一種解決辦法:通過手動載入環境變數,發現問題得到解決,添加如下的登陸shell變數載入。
#!/bin/bash
. /etc/profile
. ~/.bash_profile

  第二種解決辦法:加if判斷,檢查備份文件的數量,如果大於正常值,則再執行find ./ -type f -mtime +2 -exec rm {} \;命令。

function rm_agofile()
{
cd $backupdir
if (($(ls -lh /opt/dump_ibg_mall/|grep ".*.tar.gz"|wc -l) > 3))
then
        find ./ -type f -mtime +2 -exec rm -rf {} \;
else
        echo "there is no more than 3" >>/tmp/dump_ibg_mall_result.log
fi
}
#rm_agofile;

【故障總結】

  crontab的腳本里命令必須絕對路徑,或者環境變數可能不會被載入。除了上述兩種方式,我們也可以配合if判斷,通過其他的邏輯方式來達到我們的需求。
您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 這篇文章主要介紹了C#中is與as的區別,較為詳細的分析了is與as的原理與特性及用法區別,具有很好的學習借鑒價值,需要的朋友可以參考下 本文實例分析了C#中is與as的區別,分享給大家供大家參考。具體分析如下: 一、C#類型的轉換 在c#中類型的轉換分兩種:顯式和隱式,基本的規則如下: 1、基類對 ...
  • 因為對錶達式樹有點興趣,出於練手的目的,試著寫了一個深拷貝的工具庫。支持.net standard2.0或.net framework4.5及以上。 GitHub地址https://github.com/blurhkh/DeepCopier nuget地址https://www.nuget.org/ ...
  • 從剛剛開始接觸ORM到現在已有超過八年時間,用過了不少ORM框架也瞭解了不少ORM框架,看過N種關於ORM框架的相關資料與評論,各種言論讓人很難選擇。在ORM的眾多問題中最突出的問題是關於性能方面的問題,因此我在看了國外的一遍文章(Dapper vs Entity Framework vs ADO. ...
  • 假期剛剛搭完,先寫個提綱,今晚寫完: 1.申請一個月的免費的雲伺服器ECS; 2.在雲伺服器上安裝Java開發環境+Sql Server+Tomcat; 3.購買功能變數名稱並認證,綁定伺服器共有IP地址; 4.其它註意事項. ...
  • 出現類似提示: Failed to connect to the database: could not connect to server: Connection refused Is the server running on host "localhost" (::1) and accepti ...
  • 在linux系統中, 普通用戶的許可權很低, 比如shutdown關機, 或者yum install安裝軟體等很多命令都需要root用戶許可權來運行. 普通用戶想要執行這些命令, 要麼使用su命令切換為root用戶, 而使用su命令需要輸入root密碼, 當伺服器很多人共同管理, 所有管理員都需要知道r ...
  • 1、刪除重覆記錄 ①先查詢出重覆的數據,然後通過ID號批量刪除,ID號可以導出到Excel,在Excel中,整理好ID順序. select name from users group by name having count(1)>1;提取ID號 ...
  • 保護對象的屬性 如果有一個對象,當需要對其進行修改屬性時,有2鐘方法: 對象名.屬性名 = 數據 >直接修改 對象名.方法名() >間接修改 為了更好的保存屬性的安全,即不能隨意修改,一般的處理方式為: 將屬性定義為私有屬性 添加一個可以調用的方法,供調用 運行結果為: 修改代碼: 運行結果: 總結 ...
一周排行
    -Advertisement-
    Play Games
  • 前言 本文介紹一款使用 C# 與 WPF 開發的音頻播放器,其界面簡潔大方,操作體驗流暢。該播放器支持多種音頻格式(如 MP4、WMA、OGG、FLAC 等),並具備標記、實時歌詞顯示等功能。 另外,還支持換膚及多語言(中英文)切換。核心音頻處理採用 FFmpeg 組件,獲得了廣泛認可,目前 Git ...
  • OAuth2.0授權驗證-gitee授權碼模式 本文主要介紹如何筆者自己是如何使用gitee提供的OAuth2.0協議完成授權驗證並登錄到自己的系統,完整模式如圖 1、創建應用 打開gitee個人中心->第三方應用->創建應用 創建應用後在我的應用界面,查看已創建應用的Client ID和Clien ...
  • 解決了這個問題:《winForm下,fastReport.net 從.net framework 升級到.net5遇到的錯誤“Operation is not supported on this platform.”》 本文內容轉載自:https://www.fcnsoft.com/Home/Sho ...
  • 國內文章 WPF 從裸 Win 32 的 WM_Pointer 消息獲取觸摸點繪製筆跡 https://www.cnblogs.com/lindexi/p/18390983 本文將告訴大家如何在 WPF 裡面,接收裸 Win 32 的 WM_Pointer 消息,從消息裡面獲取觸摸點信息,使用觸摸點 ...
  • 前言 給大家推薦一個專為新零售快消行業打造了一套高效的進銷存管理系統。 系統不僅具備強大的庫存管理功能,還集成了高性能的輕量級 POS 解決方案,確保頁面載入速度極快,提供良好的用戶體驗。 項目介紹 Dorisoy.POS 是一款基於 .NET 7 和 Angular 4 開發的新零售快消進銷存管理 ...
  • ABP CLI常用的代碼分享 一、確保環境配置正確 安裝.NET CLI: ABP CLI是基於.NET Core或.NET 5/6/7等更高版本構建的,因此首先需要在你的開發環境中安裝.NET CLI。這可以通過訪問Microsoft官網下載並安裝相應版本的.NET SDK來實現。 安裝ABP ...
  • 問題 問題是這樣的:第三方的webapi,需要先調用登陸介面獲取Cookie,訪問其它介面時攜帶Cookie信息。 但使用HttpClient類調用登陸介面,返回的Headers中沒有找到Cookie信息。 分析 首先,使用Postman測試該登陸介面,正常返回Cookie信息,說明是HttpCli ...
  • 國內文章 關於.NET在中國為什麼工資低的分析 https://www.cnblogs.com/thinkingmore/p/18406244 .NET在中國開發者的薪資偏低,主要因市場需求、技術棧選擇和企業文化等因素所致。歷史上,.NET曾因微軟的閉源策略發展受限,儘管後來推出了跨平臺的.NET ...
  • 在WPF開發應用中,動畫不僅可以引起用戶的註意與興趣,而且還使軟體更加便於使用。前面幾篇文章講解了畫筆(Brush),形狀(Shape),幾何圖形(Geometry),變換(Transform)等相關內容,今天繼續講解動畫相關內容和知識點,僅供學習分享使用,如有不足之處,還請指正。 ...
  • 什麼是委托? 委托可以說是把一個方法代入另一個方法執行,相當於指向函數的指針;事件就相當於保存委托的數組; 1.實例化委托的方式: 方式1:通過new創建實例: public delegate void ShowDelegate(); 或者 public delegate string ShowDe ...