Česky na konci článku.
There is a dangerous culture in database operations.
A production problem appears.
Everyone calls the DBA.
The DBA connects to the server, analyzes the situation, finds the problem, executes a few commands and brings the service back.
Everyone is relieved.
The DBA becomes the hero.
And then, a few weeks later, the same thing happens again.
The same DBA is called.
The same pressure.
The same emergency.
The same solution.
This may look like excellent database administration.
It is not.
If the same person has to repeatedly save the system, the system has a reliability problem.
Heroic Operations Are Not Reliable Operations
A highly experienced DBA can sometimes compensate for weaknesses in architecture.
They know which log to check.
They remember an obscure parameter.
They know which process can be restarted.
They understand the application’s strange behavior.
They know which command should never be executed during an incident.
This expertise is extremely valuable.
But there is a problem.
What happens when that person is:
- on vacation?
- sick?
- asleep?
- working on another incident?
- no longer with the company?
If the answer is:
“We don’t know.”
then the company has a serious operational dependency.
The Goal Is to Make Expertise Repeatable
A mature database organization does not try to eliminate expert knowledge.
It tries to turn expert knowledge into systems and processes that other people and machines can reliably use.
For example:
Instead of:
“Tomas knows how to recover this database.”
Create:
Documented recovery procedure
Then:
Instead of:
“Tomas performs the recovery.”
Create:
Automated recovery
Then:
Instead of:
“We hope recovery works.”
Create:
Regular recovery testing
The progression looks like this:
That is how organizations become less dependent on individual heroes.
A DBA Should Be Able to Take a Day Off
This sounds trivial.
It isn’t.
If a critical database cannot survive one senior DBA taking a week off, the architecture is not resilient enough.
The same principle applies to operations.
A good database environment should allow another qualified engineer to:
- understand the architecture
- identify the primary database
- understand replication
- check backups
- perform standard recovery
- follow escalation procedures
- understand monitoring
- safely execute documented operations
The system should not depend on one person’s memory.
The Bus Factor Is a Reliability Metric
Consider two teams.
Team A
Five DBAs.
But only one understands the production HA environment.
Bus factor: 1
Team B
Five DBAs.
Four can operate and recover the critical environment.
Bus factor: 4
The number of employees is the same.
The reliability is not.
This is why knowledge distribution should be treated as part of operational risk.
Documentation Should Answer “What Do I Do Next?”
Many database documents are written like architecture reports.
They explain:
- server names
- database versions
- IP addresses
- configuration parameters
- storage layouts
Useful information.
But during an incident, the most important question is usually:
“What do I do next?”
A good operational document should answer that.
For example:
Primary database unavailable
1. Confirm the alert
Is the database actually unavailable?
2. Check the current primary
Is another node already serving the application?
3. Check replication
Is the standby current enough?
4. Check quorum
Can a safe failover decision be made?
5. Execute the approved recovery procedure
Do not improvise.
6. Validate the application
The database being online is not enough.
7. Record the incident
Capture what happened and what should change.
That is much more useful than a 50-page architecture document during an outage.
Runbooks Turn Stress Into Process
A runbook is not just documentation.
It is a way to reduce decision-making under pressure.
During a serious incident, cognitive load is high.
People make mistakes.
They forget steps.
They execute commands too quickly.
A good runbook provides structure.
For example:
The objective is not to remove human judgment.
It is to reserve human judgment for the decisions that actually require it.
Automation Should Follow Understanding
There is another common mistake.
A team discovers a repetitive operation and immediately automates it.
That can be dangerous.
If the process is poorly understood, automation simply makes the wrong process faster.
The better sequence is:
Understand → Document → Standardize → Automate → Test
For example:
If restarting a database is sometimes necessary, first understand:
- why it needs restarting
- what conditions require it
- what can go wrong
- what dependencies exist
- how success is verified
Only then should the process be automated.
The Best Automation Includes Validation
One of the weakest forms of automation is:
Real operational automation should look more like:
The system should not simply tell you:
“Command completed successfully.”
It should tell you:
“The service is actually healthy again.”
That is a much higher standard.
Incidents Should Make the System Better
Imagine an outage caused by replication failure.
A weak response is:
“We fixed replication.”
A stronger response asks:
Why did monitoring not detect the problem earlier?
Why did the replica fall behind?
Why was failover not triggered?
Why did the application not reconnect?
Why did the team need manual intervention?
Can the same failure happen again?
The incident is not finished when the database comes back.
It is finished when the organization has learned something from it.
The Right Metric Is Not “How Fast Did the DBA Fix It?”
Suppose a DBA restores a database in ten minutes.
That sounds excellent.
But what if the same problem happens every month?
Now compare that with a team that takes 30 minutes to resolve an incident once, then spends time eliminating the underlying cause.
The second team may look slower.
Over a year, it may be dramatically more reliable.
This is why reliability teams should measure more than MTTR.
Useful questions include:
- How often does the problem happen?
- Was it detected automatically?
- Was recovery automated?
- Did the runbook work?
- Was customer impact reduced?
- Did we eliminate the root cause?
- Can the failure happen again?
Reliability Engineering Is About Removing Repeated Work
A DBA who performs the same recovery procedure ten times is not necessarily demonstrating productivity.
It may be demonstrating an automation opportunity.
Imagine:
The objective is to make the third incident fundamentally different from the first.
That is engineering.
Don’t Automate the Hero — Replace the Heroic Moment
This is an important distinction.
The goal is not to replace DBAs.
The goal is to remove unnecessary emergency work from their jobs.
A senior DBA should spend more time on:
- architecture
- capacity planning
- performance engineering
- resilience
- automation
- disaster recovery
- security
- strategic improvements
and less time on:
- restarting services manually
- checking the same dashboards
- copying the same commands
- performing repetitive failovers
- explaining the same incident every month
The value of an experienced DBA increases when their knowledge improves the system, not just the current incident.
What a Mature Database Team Looks Like
A mature team does not look like a group of people constantly fighting fires.
It looks surprisingly calm.
They know:
- what is running
- what is critical
- what can fail
- how failure is detected
- how recovery works
- who owns each decision
- where the runbooks are
- what is automated
- what has been tested
- what still represents risk
There will still be incidents.
But fewer of them become emergencies.
And fewer emergencies require heroics.
The Database Team Should Become Less Important During Incidents
This sounds strange.
But it is one of the strongest signs of maturity.
The more reliable the system becomes:
- the more the platform detects problems automatically
- the more recovery is automated
- the more procedures are documented
- the more knowledge is distributed
- the more predictable incidents become
The DBA is still important.
But the DBA no longer has to be the person who manually saves everything.
Instead, they become the person who designed the system so that it can save itself safely.
Final Takeaway
A database team should not be measured by how many times its DBAs have rescued production.
It should be measured by how many situations no longer require rescue.
The real progression is:
Hero → Process → Automation → Reliability
The best DBA is not the person who knows the most emergency commands.
It is the person who turns that knowledge into a system that does not need emergency commands very often.
Because the ultimate goal of Database Reliability Engineering is not to create better heroes.
It is to create systems that need fewer heroes.
About the Author
Tomas Solar
Principal Database Reliability Engineer
20+ years of experience with Oracle, PostgreSQL, SQL Server, MySQL and MongoDB.
Specialized in database reliability, high availability, disaster recovery, performance engineering, automation, migrations and database architecture.
15+ years working remotely with teams across EMEA.
The strongest DBA is not the one who saves the system every night. It is the one who makes sure the system doesn’t need saving.
Databázový tým by neměl být hrdina
V databázových operacích existuje nebezpečná kultura.
Objeví se problém v produkci.
Všichni volají DBA.
DBA se připojí na server, analyzuje situaci, najde problém, provede několik příkazů a službu obnoví.
Všichni si oddechnou.
DBA je hrdina.
A o několik týdnů později se stane úplně stejná věc.
Znovu volají stejného DBA.
Stejný tlak.
Stejná krizová situace.
Stejné řešení.
Může to vypadat jako skvělá práce databázového administrátora.
Není.
Pokud musí stejný člověk opakovaně zachraňovat systém, systém má problém se spolehlivostí.
Heroické operace nejsou spolehlivé operace
Velmi zkušený DBA dokáže někdy kompenzovat slabiny architektury.
Ví, který log zkontrolovat.
Pamatuje si neobvyklý parametr.
Ví, který proces lze restartovat.
Rozumí zvláštnímu chování aplikace.
Ví, který příkaz se během incidentu nikdy nesmí spustit.
Tyto zkušenosti jsou velmi cenné.
Ale je zde problém.
Co se stane, když je tento člověk:
- na dovolené?
- nemocný?
- spí?
- řeší jiný incident?
- už ve firmě nepracuje?
Pokud je odpověď:
„Nevíme.“
pak má firma vážný provozní problém.
Cílem je udělat z expertizy opakovatelný proces
Vyspělá databázová organizace se nesnaží odstranit expertní znalosti.
Snaží se převést expertní znalosti do systémů a procesů, které dokážou spolehlivě používat další lidé i automatizace.
Například:
Místo:
„Tomas ví, jak tuto databázi obnovit.“
vytvoříme:
Dokumentovaný recovery postup.
Potom:
Místo:
„Tomas provádí recovery.“
vytvoříme:
Automatizovaný recovery proces.
A nakonec:
Místo:
„Doufáme, že recovery funguje.“
vytvoříme:
Pravidelné testování obnovy.
Celý vývoj tedy vypadá:
Takto se organizace stává méně závislou na jednotlivých hrdinech.
DBA by měl být schopný vzít si den volna
Zní to jako banalita.
Není.
Pokud kritická databáze nedokáže přežít týdenní nepřítomnost seniorního DBA, není architektura dostatečně odolná.
Stejný princip platí pro provoz.
Jiný kvalifikovaný inženýr by měl být schopen:
- pochopit architekturu
- identifikovat primární databázi
- rozumět replikaci
- zkontrolovat zálohy
- provést standardní recovery
- postupovat podle eskalačních pravidel
- rozumět monitoringu
- bezpečně provádět dokumentované operace
Systém by neměl záviset na paměti jednoho člověka.
Bus factor je metrika spolehlivosti
Představme si dva týmy.
Tým A
Pět DBA.
Ale pouze jeden rozumí produkčnímu HA prostředí.
Bus factor: 1
Tým B
Pět DBA.
Čtyři dokážou provozovat a obnovit kritické prostředí.
Bus factor: 4
Počet zaměstnanců je stejný.
Spolehlivost není.
Proto by distribuce znalostí měla být považována za součást provozního rizika.
Dokumentace musí odpovědět na otázku „Co mám udělat dál?“
Mnoho databázových dokumentů je napsáno jako architektonické reporty.
Popisují:
- názvy serverů
- verze databází
- IP adresy
- konfigurační parametry
- storage layout
Užitečné informace.
Během incidentu je ale obvykle nejdůležitější otázka:
„Co mám udělat dál?“
Dobrá provozní dokumentace musí odpovědět právě na to.
Například:
Primární databáze není dostupná
1. Potvrďte alert
Je databáze skutečně nedostupná?
2. Zkontrolujte aktuální primary
Obsluhuje aplikaci už jiný node?
3. Zkontrolujte replikaci
Je standby dostatečně aktuální?
4. Zkontrolujte quorum
Lze bezpečně rozhodnout o failoveru?
5. Proveďte schválený recovery postup
Neimprovizujte.
6. Ověřte aplikaci
Nestačí, že databáze běží.
7. Zaznamenejte incident
Zapište, co se stalo a co je potřeba změnit.
To je během výpadku mnohem užitečnější než padesátistránkový architektonický dokument.
Runbook mění stres na proces
Runbook není jen dokumentace.
Je to způsob, jak snížit počet rozhodnutí, která musí člověk dělat pod tlakem.
Během vážného incidentu je kognitivní zátěž vysoká.
Lidé dělají chyby.
Zapomínají kroky.
Spouštějí příkazy příliš rychle.
Dobrý runbook poskytuje strukturu:
Cílem není odstranit lidský úsudek.
Cílem je ponechat lidský úsudek pouze tam, kde je skutečně potřeba.
Automatizace musí následovat pochopení
Existuje další častá chyba.
Tým objeví opakující se operaci a okamžitě ji automatizuje.
To může být nebezpečné.
Pokud procesu dobře nerozumíme, automatizace pouze umožní provádět špatný proces rychleji.
Lepší postup je:
Pochopit → Dokumentovat → Standardizovat → Automatizovat → Testovat
Například:
Pokud je někdy nutné restartovat databázi, nejdříve zjistěte:
- proč je restart nutný
- za jakých podmínek se má provést
- co se může pokazit
- jaké existují závislosti
- jak ověřit úspěšnost
Teprve potom má smysl proces automatizovat.
Dobrá automatizace zahrnuje i ověření výsledku
Jedna z nejslabších forem automatizace vypadá:
Skutečná provozní automatizace by měla vypadat spíše takto:
Systém by neměl pouze říct:
„Příkaz byl úspěšně dokončen.“
Měl by říct:
„Služba je skutečně opět zdravá.“
To je mnohem vyšší standard.
Incidenty musí systém zlepšovat
Představme si incident způsobený selháním replikace.
Slabá reakce:
„Opravili jsme replikaci.“
Silnější přístup se ptá:
Proč monitoring problém nezachytil dříve?
Proč se replika začala opožďovat?
Proč se nespustil failover?
Proč se aplikace nepřipojila znovu?
Proč byl nutný manuální zásah?
Může se stejná chyba zopakovat?
Incident nekončí ve chvíli, kdy databáze znovu běží.
Končí až ve chvíli, kdy se organizace z incidentu něco naučila.
Správná metrika není „Jak rychle to DBA opravil?“
Představme si, že DBA obnoví databázi za deset minut.
Zní to skvěle.
Ale co když se stejný problém opakuje každý měsíc?
Nyní to porovnejme s týmem, kterému první incident trvá 30 minut, ale následně odstraní jeho skutečnou příčinu.
Druhý tým může vypadat pomaleji.
Za celý rok ale může být dramaticky spolehlivější.
Proto by reliability tým neměl měřit pouze MTTR.
Měl by se ptát také:
- Jak často se problém opakuje?
- Byl automaticky detekován?
- Byla obnova automatizovaná?
- Fungoval runbook?
- Byl dopad na zákazníky menší?
- Odstranili jsme root cause?
- Může se problém zopakovat?
Reliability Engineering odstraňuje opakující se práci
DBA, který desetkrát provede stejný recovery postup, nemusí být nutně produktivní.
Možná pouze ukazuje příležitost k automatizaci.
Například:
Cílem je, aby třetí incident byl zásadně jiný než první.
To je engineering.
Neautomatizujte hrdinu — odstraňte potřebu hrdinského zásahu
To je důležitý rozdíl.
Cílem není nahradit DBA.
Cílem je odstranit z jeho práce zbytečné krizové operace.
Seniorní DBA by měl trávit více času na:
- architektuře
- capacity planningu
- performance engineeringu
- odolnosti
- automatizaci
- disaster recovery
- bezpečnosti
- strategických zlepšeních
a méně času na:
- manuální restartování služeb
- kontrolu stejných dashboardů
- kopírování stejných příkazů
- opakované manuální failovery
- vysvětlování stejného incidentu každý měsíc
Hodnota zkušeného DBA roste ve chvíli, kdy jeho znalosti zlepšují celý systém, nejen aktuální incident.
Jak vypadá vyspělý databázový tým?
Vyspělý tým nevypadá jako skupina lidí, která neustále hasí požáry.
Naopak působí překvapivě klidně.
Ví:
- co běží
- co je kritické
- co může selhat
- jak se selhání detekuje
- jak funguje recovery
- kdo je vlastníkem jednotlivých rozhodnutí
- kde jsou runbooky
- co je automatizované
- co bylo otestováno
- co stále představuje riziko
Incidenty budou stále existovat.
Ale méně z nich se stane krizí.
A méně krizí bude vyžadovat hrdinské zásahy.
Databázový tým by měl být během incidentu méně důležitý
Zní to zvláštně.
Ale je to jeden z nejsilnějších znaků vyspělosti.
Čím spolehlivější je systém:
- tím více problémů detekuje automaticky
- tím více recovery je automatizováno
- tím více postupů je zdokumentováno
- tím více znalostí je distribuováno
- tím předvídatelnější jsou incidenty
DBA je stále důležitý.
Ale už nemusí být člověkem, který ručně zachraňuje úplně všechno.
Místo toho je člověkem, který navrhl systém tak, aby se dokázal bezpečně zachránit sám.
Závěr
Databázový tým by neměl být hodnocen podle toho, kolikrát jeho DBA zachránili produkci.
Měl by být hodnocen podle toho, kolik situací už záchranu nepotřebuje.
Skutečný vývoj vypadá:
Hrdina → Proces → Automatizace → Spolehlivost
Nejlepší DBA není člověk, který zná nejvíce krizových příkazů.
Je to člověk, který dokáže tyto znalosti převést do systému, který krizové příkazy potřebuje jen velmi zřídka.
Protože skutečným cílem Database Reliability Engineering není vytvářet lepší hrdiny.
Je jím vytvářet systémy, které potřebují méně hrdinů.
O autorovi
Tomas Solar
Principal Database Reliability Engineer
Více než 20 let zkušeností s Oracle, PostgreSQL, SQL Server, MySQL a MongoDB.
Specializace na databázovou spolehlivost, vysokou dostupnost, disaster recovery, performance engineering, automatizaci, migrace a databázovou architekturu.
Více než 15 let práce na dálku s týmy napříč EMEA.
Nejsilnější DBA není ten, kdo každou noc zachraňuje systém. Je to ten, kdo zajistí, aby systém záchranu vůbec nepotřeboval
