【YashanDB知識庫】單機升級典型問題及應急措施

来源:https://www.cnblogs.com/YashanDB/p/18414378
-Advertisement-
Play Games

升級典型問題 官網升級操作指引 離線升級,一般線上操作之前需要照著做一遍,但是由於數據量少、monit進程在測試環境沒有啟動等原因,一些操作、配置問題在測試過程中不會暴露,在生成操作的時候才暴露,下麵3項是比較常見的容易遺漏的: 1、monit進程沒停止引起升級失敗 monit進程是什麼 monit ...


升級典型問題

官網升級操作指引 離線升級,一般線上操作之前需要照著做一遍,但是由於數據量少、monit進程在測試環境沒有啟動等原因,一些操作、配置問題在測試過程中不會暴露,在生成操作的時候才暴露,下麵3項是比較常見的容易遺漏的:

1、monit進程沒停止引起升級失敗

monit進程是什麼

monit進程會對yasdb/yasagent/yasom3個進程做監控,如果出現異常重新拉起(註意不止yasdb,yasagent、yasom進程也會被拉起,如下演示殺死yasom、yasagent被重新拉起)。

monit進程沒有停止的後果

monit進程沒有停止的後果

如果升級過程沒有停止monit進程,在停止老的yasdb進程的時候會被自動拉起,升級程式識別到db在OPEN狀態,中止升級。

關鍵日誌:

處理方式

停止monit進程,重新執行yasdb升級命令。

停止方式

■ 使用yasboot(yasboot monit stop --cluster debug)

■ 使用kill -9

2、升級前沒預留足夠的空間做備份

為什麼需要備份空間

升級前需要整庫做backup,作為升級過程的終極回退手段。處理需要預留backup的空間外,升級過程還會做數據轉換,還需要預留下麵的空間:

離線升級中會創建一個臨時目錄(${舊版本的安裝目錄}/upgrade_tmp/backup)作為備份目錄,備份當前資料庫ctrl/system/undo/redo等文件的備份(主備環境中各節點分別備份至本機),需要確保擁有足夠的存儲空間。

官網說明:

沒有預留空間的後果

空間不足後果

升級過程,由於空間不足,資料庫會變為readonly狀態,導致升級中斷。

案例:22.2.4.1版本升級到22.2.8.105版本由於空間不足,導致升級失敗。

關鍵日誌:

處理方式

清理空間,保證空間足夠,執行rollback,rollback成功之後重新升級。

3、配置文件目錄錯誤

哪些目錄容易錯

集群托管toml文件註意使用舊版本的$YASDB_HOME、$YASDB_DATA,需要特別註意:

配置錯誤的後果

路徑配置錯誤後果

升級過程,會自動對monit進程做停止,但是如果路徑配置錯誤,會使得兜底的停止動作沒執行成功,進而引發上述monit進程沒停止的問題。

案例:在22.2.11.100升級到22.2.14.100的時候,錯誤將yasdb_home目錄設置為新的目錄,導致自動停止monit進程失敗。

關鍵日誌

處理方式

檢查升級結果,如果出現already started and status is OPEN, not nomount的錯誤, 執行下麵步驟:

■ 確認yasdb進程沒有升級, 還是老版本的

■ 停止monit進程

■ 執行yasdb升級

升級失敗應急處理

根據日誌快速定位根因

shell命令yasboot的命令,會通過調用yasom,再通過yasom調用各個節點yasagent(主備、集群、分散式每個節點上都有yasagent),最終轉換成各個節點內部各個介面的調用。

因此,如果需要查看升級失敗的日誌,需要查看yasagent.log,路徑是$YASDB_HOME/om/{cluster-name}/log/yasagent.log(每天一個日誌文件,如果需要查看歷史日誌可以根據需要查找)

在yasagent.log查找錯誤日誌,如上述典型問題的關鍵日誌,yasagent.log可查找到。

根據錯誤原因判斷執行rollback

崖山DB的升級,實際是分為獨立的兩步:

■ 托管的升級(即yasom/yasagent)

■ 資料庫的升級(即yasdb)

官網上提供的升級rollback是針對資料庫升級的rollback,對升級過程中存在的數據轉換使用備份的數據做回退(ctrl/redo/undo),前提是資料庫升級之前的操作都沒有問題。因此我們遇到失敗的情況,有時候直接回退是沒有用的,如上面空間不足、路徑錯誤問題,直接rollback會有其他錯誤產生。

使用備份數據做restore

升級之後可能yasagent/yasom/yasdb都已經換了版本,在不能使用yasboot rollback的情況下,需要逐一做回退,使用備份數據做恢復。以下使用22.2.11.100升級到22.2.13.100(集群名稱為debug)為例,展示如何回退。

停止yasom/yasagent/yasdb

修改yasboot環境變數

yasboot命令執行的時候,執行的具體路徑配置是在~/.yasboot/{cluster-name}.env里配置的:

修改~/.yasboot/{cluster-name}.env,指到原來目錄

使用yasboot 重啟yasom/yasagent,重啟yasdb到nomount狀態

主要yasdb使用nomount狀態啟動:

使用備份文件恢復

參考命令:


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 在Linux系統中,磁碟大小和文件系統大小是兩個不同的概念,它們之間存在明顯的區別。以下是對這兩個概念的詳細解析: 磁碟大小 定義: 磁碟大小指的是物理存儲設備的總容量,即硬碟或固態硬碟(SSD)等存儲介質上能夠存儲數據的總空間。這個大小是固定的,由磁碟的製造工藝和規格決定。 特點: 固定性:磁碟一 ...
  • 前面我們介紹了 802.11 b/g/n 的一些核心技術和基礎概念,本章將介紹目前比較新的 WiFi5 和 WiFi6,以及在今年會發佈的 WiFi7。 ...
  • 本章將和大家分享Docker中如何實現數據的持久化。廢話不多說,下麵我們直接進入主題。 一、什麼是數據捲 我們都知道在Docker中,容器的數據讀寫預設發生在容器的存儲層,當容器被刪除時其上的數據將會丟失。如果想實現數據的持久化,就需要將容器和宿主機建立聯繫(將數據從宿主機掛載到容器內),通俗的說, ...
  • MySQL 是一種廣泛使用的關係型資料庫管理系統(RDBMS),它基於結構化查詢語言(SQL)。瞭解 MySQL 的語法對資料庫管理和操作非常重要。以下是 MySQL 語法的詳細完整解釋,涵蓋基本概念、創建表、查詢、修改數據等內容。 1. 基礎概念 資料庫 (Database): 資料庫是存儲數據的 ...
  • 概述 Redis 是基於請求/響應協議的 TCP 服務。在客戶端向伺服器發送一個查詢請求後,需要監聽 Socket 的返回結果,該監聽過程一直阻塞,直到伺服器有結果返回。如果一次請求延遲20ms,則多次請求的網路延遲會不斷累加。也就是說,Redis 的性能瓶頸主要體現在網路延遲上 Redis 的管道 ...
  • 概述 在實際工作中,在關係資料庫(MySQL、PostgreSQL)的單表數據量上億後,往往會出現查詢和分析變慢甚至無法執行統計分析的情況。這時就需要將大表拆分為多個小表,將小表分佈在多個資料庫上,形成一個資料庫集群。這樣的話,一條 SQL 統計語句就可以在多台伺服器上併發執行,然後將執行結果彙總, ...
  • 在比較Elasticsearch和向量資料庫之前,讓我們簡要解釋它們是什麼:什麼是Elasticsearch?Elasticsearch是一個流行的開源搜索和分析引擎,建立在Apache Lucene之上。它專為全文搜索、分析和日誌分析用例而設計。主要特點:文檔導向的NoSQL資料庫 分散式和可擴展 ...
  • 1、打開MySQL Workbench 2、進行資料庫連接配置 如果之前連過,會有歷史記錄,直接點擊需要備份的連接即可 3、進入主界面後,選擇左側的Administration選項卡,然後點擊Data Export;或者點擊工具欄的Server——Data Export 4、選擇要備份的資料庫,預設 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...