Existují různé důvody pro upgrade vašich databází. Může to být použití oprav zabezpečení, používání nových funkcí, řešení problémů s kompatibilitou nebo jen udržování vašeho systému v aktuálním stavu. Tento upgrade může být větší nebo menší a v závislosti na technologii existují různé přístupy, jak tuto práci provést, ale pokud potřebujete, aby vaše systémy běžely po celou dobu s nulovými prostoji, může být provedení průběžného upgradu tou nejlepší volbou. .
V tomto blogu uvidíme některé úvahy, které je třeba vzít v úvahu před upgradem, a jak provést postupný upgrade na MySQL.
Drobné vs. velké upgrady
Obecně platí, že menší upgrady jsou bezpečné tak, že je můžete snadno downgradovat nebo vrátit zpět a měly by být kompatibilní s předchozími balíčky a funkcemi.
Upgrade hlavní verze zahrnuje určitá rizika, jako je odstranění databázového balíčku, kompatibilita konfigurace a konektorů, zastaralé funkce a další.
I když je testování důležité pro oba scénáře, v případě velkých upgradů je nutností, pokud se chcete vyhnout vážným problémům pro vaši firmu.
Před upgradem
Nyní se podívejme na některé úvahy před upgradem, abychom se vyhnuli budoucím problémům.
Zálohy
Zálohy jsou vždy důležité a ještě důležitější, pokud chcete upgradovat databázi. Pokud se něco pokazí a další možnosti obnovy po havárii selžou, budete k obnovení databáze potřebovat zálohu. Před zahájením úlohy si tedy udělejte úplnou zálohu (fyzickou nebo/a logickou) své aktuální databáze a uchovávejte ji v bezpečí, dokud se několik dní/týdnů neujistíte, že vše funguje správně.
Zkontrolujte nepodporované funkce
Pokud používáte funkci, která je v nové verzi zastaralá, vaše aplikace může selhat a budete se muset vrátit zpět, abyste obnovili své systémy, což způsobí prostoje (závisí na přístupu) a ztráta času. Kontrola zastaralé funkce a její porovnání s těmi, které používáte, zabrání tomuto neúspěšnému pokusu o upgrade.
Testování
To je důležité nejen pro upgrady, ale také pro jakékoli změny ve vaší databázi nebo aplikaci. Testovací prostředí, které replikuje produkční prostředí, vám může ušetřit čas a vyhnout se neočekávaným problémům během upgradu nebo změny databáze.
Vrácení zpět
Při každém upgradu je důležité mít připravený návrat k použití, pokud bude potřeba, aby byla databáze co nejdříve uvedena do provozu. V opačném případě by to mohlo ovlivnit váš cíl RTO (obnovení času) v případě, že potřebujete znovu vytvořit cluster ze zálohy nebo jiného plánu obnovy.
Mějte na paměti, že přechod na nižší verzi někdy není možný, takže byste měli mít sekundární plán pro případ, že byste potřebovali vrátit změny.
Kontroly dodavatele
V závislosti na výrobci a verzi můžete použít příkaz mysqlcheck k provedení předběžné kontroly vaší aktuální instalace a potvrzení, že jste připraveni jít.
$ mysqlcheck -u root -p --all-databases --check-upgrade
Enter password:
mysql.columns_priv OK
mysql.db OK
mysql.engine_cost OK
mysql.event OK
mysql.func OK
mysql.general_log OK
mysql.gtid_executed OK
mysql.help_category OK
mysql.help_keyword OK
mysql.help_relation OK
mysql.help_topic OK
mysql.innodb_index_stats OK
mysql.innodb_table_stats OK
mysql.ndb_binlog_index OK
mysql.plugin OK
mysql.proc OK
mysql.procs_priv OK
mysql.proxies_priv OK
mysql.server_cost OK
mysql.servers OK
mysql.slave_master_info OK
mysql.slave_relay_log_info OK
mysql.slave_worker_info OK
mysql.slow_log OK
mysql.tables_priv OK
mysql.time_zone OK
mysql.time_zone_leap_second OK
mysql.time_zone_name OK
mysql.time_zone_transition OK
mysql.time_zone_transition_type OK
mysql.user OK
sys.sys_config OK
Toto je první kontrola, kterou je třeba provést před upgradem, a zkontroluje, zda zde není:
- Tabulky používající zastaralé datové typy nebo funkce
- Opuštěné soubory frm
- Spouštěče s chybějícím nebo prázdným definicím nebo neplatným kontextem vytváření
Je potřeba zkontrolovat ještě několik věcí, ale abyste se vyhnuli rozsáhlému blogovému příspěvku, můžete se podívat na oficiální dokumentaci MySQL.
Ruční průběžné upgrady pro MySQL
Existují různé přístupy k provádění průběžného upgradu. Mohlo by to být na místě, používat replikaci nebo dokonce jejich kombinaci. V každém případě, pokud se chcete vyhnout prostojům, neměli byste během upgradu provádět změny v aplikaci. Za tímto účelem můžete před své databáze přidat Load Balancer. Vaše aplikace se připojí k vašemu Load Balancer a ten přesměruje provoz na dostupné uzly.
Řekněme, že máte replikaci MySQL s 1 hlavním a 2 podřízenými uzly a 1 HAProxy uzlem před nimi:
Zjednodušený způsob, jak provést ruční postupný upgrade v tomto prostředí, může být:
- Deaktivujte jeden podřízený uzel z vašeho HAProxy
- Ujistěte se, že na tomto podřízeném uzlu není provoz
- Upgradujte podřízený uzel ručně
- Zkontrolujte stav replikace a ujistěte se, že je aktuální
- Deaktivujte hlavní uzel ve vašem HAProxy
- Ujistěte se, že na hlavním uzlu nemáte provoz
- Propagujte upgradovaný podřízený uzel
- Povolte to ve svém HAProxy
- Potvrďte, že nový hlavní server přijímá provoz
- Překonfigurujte svého druhého otroka, aby se replikoval z nového hlavního serveru
- Deaktivujte druhého slave ze svého HAProxy
- Ujistěte se, že na tomto podřízeném uzlu není provoz
- Upgradujte podřízený uzel ručně
- Zkontrolujte stav replikace a ujistěte se, že je aktuální
- Povolte to ve svém HAProxy
- Potvrďte, že podřízený uzel přijímá provoz (v případě potřeby)
- Překonfigurujte starou předlohu tak, aby se replikovala z nové předlohy
- Upgradujte starý hlavní uzel ručně
- Zkontrolujte stav replikace a ujistěte se, že je aktuální
- Povolte to ve svém HAProxy
- Potvrďte, že starý master (nyní slave) přijímá provoz (je-li to nutné)
Jak můžete vidět, i když je to zjednodušené, tento úkol vyžaduje mnoho kroků a znamená více možností, že se něco pokazí.
Klouzavé upgrady ClusterControl pro MySQL
Nejlepší způsob, jak snížit možnost selhání, je automatizovat všechny (nebo téměř všechny) tyto kroky. Pomocí ClusterControl můžete provést menší postupný upgrade vašeho MySQL clusteru pomocí pouhých několika kliknutí.
Chcete-li to provést, přejděte do ClusterControl -> Vyberte Cluster -> Spravovat -> Upgrady, kde uvidíte možnost Upgrade.
Upgrady jsou online a provádějí se vždy na jednom uzlu. Uzel bude zastaven, software bude aktualizován a poté bude uzel znovu spuštěn. Pokud se upgradu uzlu nepodaří, proces se přeruší.
Pokud zvolíte možnost Upgradovat, zobrazí se potvrzení o verzi, která bude upgradována:
A pro potvrzení této úlohy stačí stisknout tlačítko Upgradovat. Poté můžete sledovat proces upgradu v sekci ClusterControl Activity:
Současně ClusterControl překonfiguruje vaše nástroje pro vyrovnávání zatížení tak, aby odeslaly provoz na dostupné uzly.
ClusterControl podporuje pouze menší upgrady, protože, jak jsme již zmínili, velký upgrade je riskantní úkol, který vyžaduje testování a výzkum, abyste se ujistili, že vaše aplikace bude v nové hlavní verzi fungovat správně.
P>Závěr
Upgrade je důležitým úkolem ve všech společnostech a může být riskantní, pokud neučiníte určitá opatření a neprovedete správně všechny kroky upgradu.
V tomto blogu jsme zmínili některé úvahy, které je třeba vzít v úvahu před upgradem databáze, a ukázali jsme rozdíl mezi ručním prováděním tohoto úkolu a používáním ClusterControl, který vám pomáhá minimalizovat možnost selhání.