sql >> Databáze >  >> RDS >> Mysql

Jak provádět průběžné upgrady pro MySQL

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í.


  1. 2 Funkce, které vracejí sekundy z hodnoty Datetime v Oracle

  2. Plány prodejen sloupců

  3. Jak můžete spustit stejný dotaz vícekrát pomocí smyčky v PL/SQL?

  4. Heroku Rails 4 se nemohl připojit k serveru:připojení bylo odmítnuto