sql >> Databáze >  >> NoSQL >> MongoDB

Automatizujte kontrolu stavu databáze

Zajištění správného fungování databáze je jednou z kritických a důležitých věcí, které musí správce databáze udělat. Pokud zanedbáme údržbu databáze, je vyšší pravděpodobnost, že narazíme na problém; například problém s výkonem databáze způsobený pracovní zátěží, která se v průběhu času měnila, nebo nesprávná konfigurace, která vede k narušení dat.

Pravidelná kontrola konfigurace, využití zdrojů, procedur zálohování a obnovy, zabezpečení dat a výkonu dotazů může pomoci vyhnout se problémům s databází. Potřebujeme standardní kontrolu databáze pro naše databázové prostředí, abychom mohli sledovat, zda je databáze stále pod kontrolou.

Co je kontrola stavu databáze

Kontrola stavu databáze se skládá z řady úkolů ke kontrole stavu naší databáze. Proč potřebujeme provést zdravotní kontrolu? Potřebujeme identifikovat a opravit jakékoli problémy nebo anomálie v našem databázovém prostředí, ať už jde o problém s výkonem, konfigurací nebo něco, co může způsobit výpadek.

Kontrolu stavu můžeme rozdělit do několika kategorií:

  • Bezpečnostní kontrola, která uzamkne přístup k databázi a zajistí, že provoz pochází z důvěryhodné sítě s právem privilegia.

  • Kontrola konfigurace, aby se zajistilo, že konfigurace splňuje standardní kritéria, která byla definována organizací.

  • Kontrola výkonu, aby bylo zajištěno, že databáze využívá hardwarové prostředky a reaguje na aplikace.

  • Procedury zálohování a obnovy, aby bylo zajištěno, že zálohu, kterou jsme převzali z databáze, lze obnovit.

Z těchto kategorií můžeme udělat rozpis toho, co potřebujeme zkontrolovat v databázi. To je velmi důležité, takže můžeme podrobně zkontrolovat každý aspekt. Například:

  • Zabezpečení databáze

  • Porovnejte uživatele a oprávnění v databázi s přístupem k matici uživatelů, který máme

  • Zkontrolujte IP adresu na seznamu povolených v databázi,  zda provoz přichází z důvěryhodné sítě

  • Ujistěte se, že je povoleno protokolování auditu databáze

  • Kontrola konfigurace

  • Zkontrolujte, zda je SSL již zavedeno

  • Ujistěte se, že konfigurace databáze je správná (oprávnění i vlastnictví)

  • Kontrola výkonu

  • Zkontrolujte poměr přístupů mezipaměti databáze

  • Zajistěte, aby databázové připojení bylo stále dostatečné pro provoz

  • Postup zálohování a obnovení

  • Správný plán zálohování, který zajistí dohodnuté RPO

  • Ujistěte se, že testujeme zálohy, abychom věděli, že data lze obnovit

Na základě výše uvedeného seznamu můžeme vytvořit skript pro kontrolu těchto položek v každém typu databáze (např. MySQL, PostgreSQL, MongoDB). Každý typ databáze bude mít samozřejmě různé příkazy.

Automatizace kontrol stavu databáze

Nechceme spouštět opakovanou úlohu na týdenní nebo měsíční bázi, kontrola stavu databáze je časově náročná úloha. Skript spouštíme na každém databázovém uzlu, takže automatizace kontrol stavu nám ušetří poměrně dost času.

Na základě seznamu skriptů pro kontrolu stavu můžeme vytvořit bash skript pro spouštění úloh a naplánovat je pomocí cronu. Níže je pouze ukázka jednoduché zprávy o kontrole stavu databáze:

#!/bin/sh
# Simple database check report
username = "audit_user"
password = "pwd001"
hostname = "db01-payment"
mycnf = "/etc/mysql/my.cnf"
dt=$(date '+%d/%m/%Y %H:%M:%S');
audit_name = "MySQL_Healthcheck_audit_report_"$dt

# check the queries
/bin/mysql -h $hostname -u $username  -p $password --skip-column-names -B -e "SHOW STATUS LIKE 'Queries'" > $audit_name

# check open table cache hit ratio
/bin/mysql -h $hostname -u $username  -p $password --skip-column-names -B -e "SHOW STATUS LIKE 'Table_open_cache_hits'" >> $audit_name

# check the ssl session mode
/bin/mysql -h $hostname -u $username  -p $password --skip-column-names -B -e "SHOW STATUS LIKE 'Ssl_session_cache_mode'" >> $audit_name

# check the buffer pool size
cat $mycnf | grep "innodb_buffer_pool_size" >> $audit_name

#check ssl key in my.cnf
cat $mycnf | grep "ssl_key" >> $audit_name

# check permission of my.conf
ls -ltr $mycnf >> $audit_name

Zdravotní kontroly lze také automatizovat pomocí nástrojů pro správu konfigurace, jako je Ansible, Salt, Chef nebo Puppet.

Automatizace kontroly stavu databáze pomocí ClusterControl

ClusterControl je operační platforma pro databáze, která zobrazuje problémy se stavem, výkonem nebo dostupností serveru v jejich databázovém prostředí, to vše z centrální konzoly. Podporuje automatizaci kontrol stavu databáze prostřednictvím provozních zpráv. Můžete generovat nebo plánovat provozní zprávy i zprávy o incidentech. Níže je uvedeno několik typů přehledů:

Denní systémová zpráva vám poskytuje přehled o vašem aktuálním databázovém clusteru s různé informace, jako je stav služby uzlu, stav zálohy, doba provozu uzlů, souhrn nejčastějších dotazů.

Zpráva o aktualizaci balíčku obsahuje souhrn dostupných balíčků pro aktualizaci z webu správce úložiště.

Přehled změn schématu porovnává změny databáze ve struktuře tabulky, ke kterým došlo mezi dvěma různými vygenerovanými sestavami.

Přehledy záloh vám poskytují informace o souhrnu záloh a podrobnosti, např. poslední vytvořená záloha, stav zálohy, stav ověření zálohy a doba uchování zálohy.

Kromě provozních zpráv jsou zde také poradci, kteří vám poskytnou přehled o CPU, disku, databázových připojeních atd., jak je uvedeno níže:

Oznámení prostřednictvím e-mailu a upozornění prostřednictvím nakonfigurovaných kanálů třetích stran poskytují přehled o věcech, které se pokazí (např. neúspěšné zálohy, neobnovitelné zálohy, selhání uzlů).

Schema Analyzer poskytuje informace o duplicitních/redundantních indexech, tabulkách bez primárních klíčů a tabulkách využívajících úložiště MyISAM. O redundantních indexech může být obzvláště dobré vědět, protože zatěžují velikost databáze (a záloh) a mohou zpomalit aktualizace na stole.


  1. Jak udělat základní WATCH s StackExchange.Redis

  2. Hromadná aktualizace dokumentů v MongoDB

  3. Schéma Mongoose:„unikátní“ není respektováno

  4. upgrade mongodb