Sziasztok!
Van egy Windows szerver amin éjjel lefut az MSSQL mentés, elkészül pár mentési fájl. Ezeket elteszem egy fájlszerverre minden nap 1 órával a mentés után. Előfordul, hogy a mentés nem készül el, mert leállt a backup szolgáltatás. Van erre valamilyen kis program vagy valami jó megoldás, hogy ha nem készülnek el a napi mentési állományok akkor e-mailben értesítsen egy program ? Akár windowson akár linuxon ?
Előre is köszönöm.
- 961 megtekintés
Hozzászólások
#!/bin/bash
FILE=/etc/resolv.conf
if [ -f "$FILE" ]; then
echo "$FILE exists."
else
echo "Szar van babám!" | mail -s "Ajjaj" user@domain.tld
fi
- A hozzászóláshoz be kell jelentkezni
Mivel "teszed el" fájlszerverre? Ha script, akkor nézheted a dátumát: ma készült-e? Ha igen, másolsz, ha nem, akkor e-mail. Ehhez nyilván kell SMTP szerver, viszont curl van windowsra is és a curl egy svájci bicska, tud levelet is küldeni.
Ami itt necces lehet: ha a mentés megszakad, akkor a fájl ugyan "elkészült", de hiányos/hibás - az ellen nem véd, azt máshogy kell ellenőrizni.
- A hozzászóláshoz be kell jelentkezni
Hát alapvetően a megközelítés szar. Mert pl. a visszatérési értékét kéne figyelned, ami általában 1 jól meghatározott érték esetén jó, minden más szar.
"Sose a gép a hülye."
- A hozzászóláshoz be kell jelentkezni
Éppenséggel pont hogy jó az irány. Lehetőség szerint a végeredményt érdemes monitorozni, h minél teljesebb képet kapj.
Valójában mind2-t, mivel így lehet kiküszöbölni mindkét megoldás esetén a problémát. Más kérdés, h nem a meglétét, hanem a helyességét érdemes ellenőrizni.
- A hozzászóláshoz be kell jelentkezni
Persze a végeredményt is, ezért kell egy komplett script a mentésre, de első körben arra kell figyelni, hogy a dump lefut-e.
"Sose a gép a hülye."
- A hozzászóláshoz be kell jelentkezni
Visszatérési értéket? A script végén? Főleg ha megdöglik a script aminek a visszatérést kéne ellenőriznie?
- A hozzászóláshoz be kell jelentkezni
Én a scripten belül ellenőrzöm részfeletonként. Már amelyik annyira fontos, és időt szántam rá, vagy tapasztalati okokból szükségét éreztem De kinek mi...
"A megoldásra kell koncentrálni nem a problémára."
- A hozzászóláshoz be kell jelentkezni
OMFG!!! A google-t nem tudod használni, de windows és MSSQL szervereket üzemeltetsz.
- A hozzászóláshoz be kell jelentkezni
dehat csak kattintgatni kell azt a hulye is tud!!!11!1
- A hozzászóláshoz be kell jelentkezni
Mi csinálja a mentést? Saját script vagy valamilyen mentőszoftver? Utóbbi 99%, hogy tud riportot generálni és küldeni. Egy scriptbe - akár PS, akár Bash - 10 perc max. belereszelni a levélküldést.
PS: Send-MailMessage
Ha elegáns megoldást akarsz, akkor feltelepíted Windowsra a helyi SMTP szolgáltatást, bekonfigurálod relaynek és azon keresztül küldöd ki a leveleket. Így még a szinkron működés se elvárás, késhetnek a levelek, de nem vesznek el (elvileg). IIS 6.0 Manager konzolon keresztül tudod konfigurálni.
- A hozzászóláshoz be kell jelentkezni
Alapvetően én is visszatérési értéket figyelek, de az nem minden esetben megbízható.
Kicsit továbbmenve: a backup önmagában kevés lehet. Kell néha egy szúrópróba szerű restore test. Láttam már olyat, hogy valahol évekig mentettek mysql DB-t, és mikor kellett a backup kiderült hogy a visszatöltés nem, vagy csak szopóágon működik (mariadb verzió, userek, jogosultságok stb. ...). Persze ehhez infrastruktúra is kell, mert drága dolog éles rendszerrel egyenértékű HW-t fenntartani csak azért, hogy néha restore test legyen.
De megeshet, hogy meghálálja magát. :)
Nehéz meghatározni a gazdasági és technikai szempontok között az optimális egyensúlyt.
"A megoldásra kell koncentrálni nem a problémára."
- A hozzászóláshoz be kell jelentkezni
Szerintem is a mentés meglétét kell ellenőrizni, illetve egy sanity checket érdemes lehet futtatni rá: például, hogy a mérete nem csökkent, nem változott sokat az előzőhöz képest, ilyesmit.
A monitorozást pedig úgy kell csinálni, hogy ne az a rendszer riasszon, amelyik nem működött. Mert simán lehet, hogy a riasztás sem fog működni. Hanem egy olyan rendszer kell, ami független attól amit mentesz meg amire mentesz és akkor riaszt, ha _nem_ jön meg a jelzés, hogy minden lefutott rendben.
Petersonnal is egyetértek.
Persze csak akkor, ha tényleg fontos amiről szó van.
- A hozzászóláshoz be kell jelentkezni
Miért ne csökkenhetne a mentés mérete?
Flusholtak valami óriási cache táblát, kitöröltek 5 évnél régebbi adatokat, stb...
"Sose a gép a hülye."
- A hozzászóláshoz be kell jelentkezni
Persze, de akkor csak lesz egy fals riasztás, amit le lehet okézni negyed óra alatt. Ez csak egy ötlet, hogy mi alapján lehet egyszerűen validálni a mentést. Helyzetre kell szabni.
- A hozzászóláshoz be kell jelentkezni
Azért azt gondoljuk át, hogy tényleg csak probléma esetén kell-e mail küldeni - ugyanis ha nem jön levél, annak nem csak az lehet az oka, hogy minden szép és jó, hanem az is, hogy valami annyira lerohadt, hogy már a riasztást sem tudja kiküldeni...
- A hozzászóláshoz be kell jelentkezni
Bizony.
Mindig megy mail, és ha szigorúan nézzük, még az sem feltétlen mindegy, hogy mikor.
"Sose a gép a hülye."
- A hozzászóláshoz be kell jelentkezni
Nem ismertek tökéletesen a körülmények, de én mindig azt mondom, hogy ilyen custom dolgoknál az ellenőrző script az teljesen külön legyen az eredetitől, ne legyenek egymás futására hatással. Plusz olyan daemon vagy service kell ami megbízható. Van erre vélhetően több is, de a legegyszerűbb egy cronjob.
Ha tudod, hogy a mentés elindul hajnal 1 órakor és legtöbbször 2 óráig végez, akkor belövöd a cront, hogy 2 óra 10 perckor csekkolja le a fájlt és szóljon ha nincs ott. Ennyi.
Finomhangolni valszeg kell, lehet állítgatni kellaz időkön.
Megjegyzem, ez csak a fájlt csekkolja, de annak tartalmi helyességét nem. Az külön sztori.
Az is lehet gond, ha a scripted túl gyorsan lefut.
- A hozzászóláshoz be kell jelentkezni
Egyébként ha nagyon gagyiztok, és rá tudtok szánni pár dodót, akkor betolhatjátok az ilyen mentős cron scriptekek cronitorba. Az figyel egy csomó dolgot, exit code-t, lehet bele tenni elvileg alerteket is, stb.
Bár én nagyon sajnálnám rá a pénzt, van akinek jól jöhet.
- A hozzászóláshoz be kell jelentkezni
(nem a kérdésedre válasz, de hátha segítség)
Ha osql-ből indítod az mssql mentést, és megadod a -b opciót, akkor az errorlevel értéket beállítja hibás futás esetén, ezt tudod csekkolni.
-b
Specifies that osql exits and returns a DOS ERRORLEVEL value when an error occurs. The value returned to the DOS ERRORLEVEL variable is 1 when the SQL Server error message has a severity of 11 or greater; otherwise, the value returned is 0. Microsoft MS-DOS batch files can test the value of DOS ERRORLEVEL and handle the error appropriately.
Előkerestem régi MSSQL backup scriptjeimet, küldök néhány részletet, ha esetleg saját backup scripteket akarsz írni.
Ez kilistázza az összes adatbázist (be kellett építenünk egy ilyet, mert a fejlesztők rendre elfelejtettek szólni, hogy új adatbázist hoztak létre, amihez kellett volna beállítanunk mentést):
OSQL.exe -E -Slocalhost -h-1 -Q"SET NOCOUNT ON;SELECT LTRIM(RTRIM(name)) FROM sysdatabases WHERE name NOT IN ('master','tempdb','model','msdb');"
Újabb mssql szerveren lehet simán TRIM(name).
Ez pedig végiggyalogol a fenti alapján listázott adatbázisokon, és lementi:
set BACKUP_DIR=D:\backup
set BACKUP_LAST_LOG=D:\backup\backup.last.txt
set BACKUP_FILE=sqlbackup_%date:~0,4%-%date:~5,2%-%date:~8,2%.bak
For /f %%G IN ('C:\tools\scripts\listdb.bat') do (
osql -b -E -Q "BACKUP DATABASE [%%~nG] TO DISK = N'%BACKUP_DIR%\%BACKUP_FILE%' WITH COMPRESSION" -w 120 -o %BACKUP_LAST_LOG%
)
Mivel mssql nem szeret hálózati meghajtóra menteni, lokális diszkről egyből mirrorozni kell egy hálózati meghajtóra is, onnan mehet pull backup rendes backup médiára.
Nyilván ettől függetlenül magát a script futását is ellenőrizni kell egy független eszközzel.
- A hozzászóláshoz be kell jelentkezni
Már, hogyne szeretne hálózatra menteni. Csak sokan képtelenek a service accountnak jogosultságot adni a share-en.
Egy fél évtizede Azure blobba is ment közvetlenül.
- A hozzászóláshoz be kell jelentkezni
Jól eldumálunk, de srác idejött, kérdezett, majd eltűnt. :) Lehet máskor nem kellene ilyen lelkesnek lennünk. Főleg, hogy 17 éves reggel kérdezte amit.
- A hozzászóláshoz be kell jelentkezni
A szkriptes mentéseket én elegedném ahogy van. Ha windows server és napi mentés kell róla, akkor pénzt keresnek vele, ha pénzt keresnek vele akkor legyen pénz egy megfelelő mentési megoldásra is.
Egy havi fizetős Azure Backup vagy egyéb felhős megoldás eleve offsite és online lenne. Ha helyileg kell tárolni akkor pedig valamilyen backup szoftverrel.
- A hozzászóláshoz be kell jelentkezni
Nem a script csinálja a mentést, sem a dumpolást. A szkript a folyamatot viszi végig.
"Sose a gép a hülye."
- A hozzászóláshoz be kell jelentkezni
Háát, Azure meg egyéb managed mentések is megérik a pénzüket :D
Nagy mysql-t mentettünk, de ugyebár a dumphoz nem juthattunk hozzá, csak a full db-t lehet visszahúzni belőle, ami töb TB-nél több óráig eltartott jó esetben, rossz esetben 1 napig is, és olyan 60% volt az esély rá, hogy elhasal 500-as hibával amire egy indiai se tudott válaszolni.
Plusz hosszútávú mentések se voltak támogatottak. Végül maradt a dump és blob -ba mentés.
Persze itt mssql-ről van szó, bár IaaS -ról, csak a lényeg, hogy fenntartásokkal kell kezelni a cloudos megoldásokat.
- A hozzászóláshoz be kell jelentkezni