sql >> Databáze >  >> RDS >> PostgreSQL

Automatizované testování procesu upgradu pro PostgreSQL

Testování je časově náročný úkol, ale je nezbytností před jakýmkoli procesem upgradu jakékoli technologie. V závislosti na typu upgradu to může být těžší nebo jednodušší, ale je vždy nutné, pokud chcete mít jistotu, že vaše data budou v bezpečí. Existují různé přístupy k upgradu v závislosti na podniku a toleranci prostojů. Proces může například testovat vaši aplikaci v samostatném prostředí s novou verzí, takže k tomu budete muset vytvořit nový cluster. Další možností je naklonovat vaše aktuální produkční prostředí a upgradovat ho, což může být užitečné, protože můžete emulovat celý proces upgradu a vyhnout se překvapením v budoucnu.

Při ručním provádění celého tohoto testovacího procesu existuje velká šance na lidskou chybu a proces bude pomalý, což by mohlo ovlivnit cíl doby zotavení (RTO). V tomto blogu uvidíme, jak automatizovat testování upgradu vašich PostgreSQL databází pomocí ClusterControl.

Typ upgradů databáze

Existují dva typy upgradů:Drobné upgrady a Velké upgrady.

Drobné upgrady

Je to nejběžnější a nejbezpečnější upgrade a ve většině případů se provádí na místě. Protože nic není 100% bezpečné, musíte mít vždy zálohy a pohotovostní uzly, takže v případě, že se s upgradem něco pokazí, můžete v předchozí verzi propagovat pohotovostní uzel a vaše systémy mohou stále fungovat bez přerušení.

Tento druh upgradu můžete provést pomocí ClusterControl. Za tímto účelem přejděte do ClusterControl -> Vyberte svůj PostgreSQL Cluster -> Spravovat -> Upgrady.

Procedura upgradu na každém vybraném uzlu:

  • Uzel zastavení

  • Upgradovat uzel

  • Počáteční uzel

Hlavní uzel v topologii PostgreSQL nebude upgradován. Chcete-li upgradovat Master, musí být nejprve povýšen jiný uzel, aby se stal novým Masterem.

Hlavní upgrady

U hlavních upgradů se nedoporučuje upgrade na místě, protože riziko, že se něco pokazí, je pro produkční prostředí příliš vysoké. Místo toho existují různé přístupy k provádění upgradů.

Můžete naklonovat svůj aktuální databázový cluster, upgradovat jej a otestovat tam aplikaci, a když skončíte, pokud vše proběhlo v pořádku, můžete jej znovu vytvořit a proces zopakovat a provést skutečný upgrade , nebo můžete také vytvořit nový cluster v nové verzi, otestovat svou aplikaci a přepnout provoz, až bude připravena, a existuje více možností... Použití Load Balancers je zde užitečné pro zlepšení High Availability. Nejlepší přístup závisí na toleranci prostojů a cíli doby zotavení (RTO).

S ClusterControl nemůžete provádět hlavní upgrady přímo, protože, jak jsme zmínili, musíte nejprve vše otestovat, abyste se ujistili, že je upgrade bezpečný, ale můžete použít různé funkce ClusterControl tento úkol jednodušší. Pojďme se tedy podívat na některé z těchto funkcí.

Nasazení testovacího prostředí

Za tímto účelem nemusíte vytvářet vše od začátku. Místo toho můžete použít ClusterControl, abyste to udělali ručně nebo automaticky.

Obnovit zálohu na samostatném hostiteli

V části Záloha vyberte zálohu a zobrazí se možnost „Obnovit a ověřit na samostatném hostiteli“ pro obnovení zálohy v samostatném uzlu.

Zde můžete určit, zda chcete, aby ClusterControl nainstaloval software do nového uzel a deaktivujte firewall nebo AppArmor/SELinux (v závislosti na OS). K tomu potřebujete vyhrazeného hostitele (nebo VM), který není součástí clusteru.

Uzel můžete ponechat v provozu nebo může ClusterControl vypnout databázi službu až do další úlohy obnovení. Po dokončení uvidíte obnovenou/ověřenou zálohu v seznamu záloh označenou zaškrtnutím.

Pokud tento úkol nechcete provádět ručně, můžete naplánovat tento proces pomocí funkce Verify Backup Feature k pravidelnému opakování této úlohy v úloze zálohování. V další části uvidíme, jak to udělat.

Automatické ověření zálohy ClusterControl

Chcete-li tuto úlohu zautomatizovat, přejděte na ClusterControl -> Vyberte svůj klastr PostgreSQL -> Záloha -> Vytvořit zálohu a vyberte možnost Plánované zálohování. Funkce automatického ověření zálohy je k dispozici pouze pro plánované zálohy.

Ve druhém kroku se ujistěte, že jste povolili možnost Ověřit zálohu, a vyplňte požadované informace.

Po dokončení úlohy se v ClusterControl zobrazí ikona ověření Sekce zálohování, stejná, jakou získáte ručním ověřením, s tím rozdílem, že se nemusíte starat o úlohu obnovy. ClusterControl zálohu pokaždé automaticky obnoví a svou aplikaci můžete otestovat s nejnovějšími daty.

Vytvořit cluster ze zálohy

Dalším způsobem vytvoření testovacího prostředí je vytvoření nového clusteru ze zálohy primárního clusteru. Chcete-li to provést, přejděte na ClusterControl -> Vyberte svůj cluster PostgreSQL -> Záloha. Zde vyberte ze seznamu zálohu, kterou chcete obnovit, a vyberte Obnovit -> Vytvořit cluster ze zálohy.

Tato možnost vytvoří z vybrané zálohy nový cluster PostgreSQL.

Musíte přidat pověření operačního systému a databáze a informace k nasazení nový cluster. Po dokončení této úlohy uvidíte nový cluster v uživatelském rozhraní ClusterControl.

Replikace mezi clustery

Od ClusterControl 1.7.4 existuje funkce nazvaná Cluster-to-Cluster Replication. Umožňuje vám mít spuštěnou replikaci mezi dvěma autonomními clustery.

Vytvoření replikace mezi clustery

Přejděte do ClusterControl -> Vyberte svůj PostgreSQL Cluster -> Akce clusteru -> Vytvořit Slave Cluster.

Podřízený klastr bude vytvořen streamováním dat z aktuálního primárního klastru.

Musíte zadat přihlašovací údaje SSH a port, což je název pro váš Slave Cluster, a pokud chcete, aby ClusterControl nainstaloval odpovídající software a konfigurace za vás.

Po nastavení přístupových informací SSH musíte definovat verzi databáze, datadir, port a přihlašovací údaje správce. Protože bude používat streamingovou replikaci, ujistěte se, že používáte stejnou verzi databáze a přihlašovací údaje musí být stejné, jaké používá primární klastr.

V tomto kroku je třeba přidat server do nového Slave Clusteru . Pro tento úkol můžete zadat IP adresu nebo název hostitele uzlu databáze.

Stav úlohy můžete sledovat na monitoru aktivity ClusterControl. Po dokončení úlohy můžete vidět cluster na hlavní obrazovce ClusterControl.

Automatické obnovení a převzetí služeb při selhání

Pokud je povolena funkce automatického obnovení, v případě selhání ClusterControl povýší nejpokročilejší pohotovostní uzel na primární a také vás upozorní na problém. Také selže přes zbytek pohotovostních uzlů pro replikaci z nového primárního serveru.

Pokud jsou v topologii Load Balancers, ClusterControl je překonfiguruje tak, aby aplikovaly změny topologie.

V případě potřeby můžete také spustit převzetí služeb při selhání ručně. Přejděte na ClusterControl -> Vyberte svůj klastr PostgreSQL -> Nodes -> Vyberte uzel, který chcete povýšit -> Akce uzlů -> Promote Slave.

Pokud se během upgradu něco pokazí, můžete to pomocí ClusterControl co nejdříve opravit.

Automatizace věcí pomocí ClusterControl CLI

ClusterControl CLI, také známý jako s9s, je nástroj příkazového řádku představený ve verzi ClusterControl 1.4.1 pro interakci, ovládání a správu databázových clusterů pomocí systému ClusterControl. ClusterControl CLI otevírá dveře pro automatizaci clusteru, kde ji můžete snadno integrovat se stávajícími nástroji pro automatizaci nasazení, jako je Ansible, Puppet, Chef atd. Podívejme se nyní na několik příkladů tohoto nástroje.

Upgrade

$ s9s cluster --cluster-id=9 \
--check-pkg-upgrades \
--log
$ s9s cluster --cluster-id=9 \
--available-upgrades \
--nodes=10.10.10.122 \
--log \
--print-json
$ s9s cluster --cluster-id=9 \
--upgrade-cluster \
--nodes=10.10.10.122 \
--log

Ověřit zálohy

$ s9s backup --verify \
--backup-id=2 \
--test-server=10.10.10.124 \
--cluster-id=9 \
--log

Replikace mezi clustery

$ s9s cluster --create \
--cluster-name=PostgreSQL-c2c \
--cluster-type=postgresql \
--provider-version=13 \
--nodes=10.10.10.125 \
--os-user=root \
--os-key-file=/root/.ssh/id_rsa \
--db-admin=admin \
--db-admin-passwd=********* \
--vendor=postgres \
--remote-cluster-id=9 \
--log

Propagovat podřízený uzel

$ s9s cluster --promote-slave \
--cluster-id=9 \
--nodes='10.10.10.122' \
--log

Závěr

Upgrady jsou nezbytné, ale časově náročné úkoly, protože musíte aplikaci otestovat, abyste se vyhnuli problémům během procesu. Nasazení testovacího prostředí pokaždé, když potřebujete upgradovat a udržovat toto aktuální, bez jakéhokoli automatizačního nástroje může být obtížné.

ClusterControl vám umožňuje provádět drobné upgrady z uživatelského rozhraní ClusterControl nebo CLI, nebo dokonce nasadit testovací prostředí, aby byl upgrade jednodušší a bezpečnější. Můžete jej také integrovat s různými automatizačními nástroji, jako je Ansible, Puppet a další.


  1. Zkontrolujte zdroj ovládání všech ovládacích prvků ve vašem projektu MS Access

  2. Jak vložit více záznamů a získat hodnotu identity?

  3. Jaký typ dat použít pro pole hashovaného hesla a jakou délku?

  4. Použití korelační funkce PostgreSQL