iT邦幫忙

2017 iT 邦幫忙鐵人賽
DAY 18
0

筆者在 SQL Server 與 Oracle DB 都有一個 Daily Check Scripts 來讓筆者在上班開始的時候作一些自主檢查,並且產出報告,這個對於管理多台機器較為方便。

在 SQL Server 上筆者採用這個 Scripts, Oracle DB 的部份採用這個,十分方便,很多東西都能顯示,大部分的問題都能夠馬上發現。

到了 MariaDB 希望能夠 Porting 這個來方便管理。

接下來幾天針對這個 Porting 來說明過程

  • PowerShell 基礎架構
  • Uptime and Version
  • Disk Drive Status
  • Backup Status
  • Event Status
  • Fail Events Status
  • Database File Status
  • Session List
  • Replication Status

PowerShell 基礎架構

在作這個 Porting 之前,筆者先到 Google 找有沒有人有不錯的類似 Solution,大部分都是走 Shell Scripts,因為在 Windows 上用 PowerShell 比較方便,就決定用 PowerShell 來兜 Solution 了。

大致上的架構是這樣

  • 變數設定
  • Html 的頭(CSS, JS...)
    • mysql 執行各項的子 SQL
    • 將結果放到 out.html
    • Html = Html + out.html
    • 執行各項作業
  • 全部都執行完畢後,整理一下寄信給相關人員

Uptime and Version

Uptime 部份,從 information_schema.GLOBAL_STATUS 可以得到資料,接下來整理一下,化成需要的輸出。

SELECT CONCAT(CASE WHEN CAST(VARIABLE_VALUE as unsigned integer) < @UptimeCritical * 60 THEN '<span class="Critical">'
                   WHEN CAST(VARIABLE_VALUE as unsigned integer) < @UptimeWarning * 60 THEN '<span class="Warning">'
           ELSE '<span class="Healthy">' END,
FLOOR(HOUR(SEC_TO_TIME(VARIABLE_VALUE)) / 24), ' day(s), ',
MOD(HOUR(SEC_TO_TIME(VARIABLE_VALUE)), 24), ' hour(s), ',
MINUTE(SEC_TO_TIME(VARIABLE_VALUE)), ' minute(s)</span>')
from information_schema.GLOBAL_STATUS where VARIABLE_NAME='UPTIME';

Version 部份,從系統參數就能知道了。

SELECT @@version from dual;

上一篇
User-defined Functions 與擴增 Event 功能
下一篇
DBA Daily Check Report 的製作 [2]
系列文
MariaDB 的使用與管理30

尚未有邦友留言

立即登入留言