Migrace místního MySQL do služby Azure Database for MySQL: Testovací plány
Vývoj komplexních testovacích plánů je zásadní pro migraci databází MySQL z místních prostředí do Služby Azure Database for MySQL. Tento článek obsahuje podrobný přehled základních součástí efektivních testovacích plánů a zajištění hladkého a úspěšného procesu migrace. Rizika můžete zmírnit tak, že vystičíte klíčové strategie testování, identifikujete potenciální problémy, určíte jasná kritéria ověření a zajistíte optimální výkon migrovaných databází v prostředí Azure. Ať už se zaměřujete na funkční testování, testování výkonu nebo testování zabezpečení, tato příručka vám poskytne znalosti a osvědčené postupy potřebné k vytvoření robustních testovacích plánů, které podporují bezproblémovou migraci.
Požadavky
Migrace místního MySQL do služby Azure Database for MySQL: Metody migrace
Přehled
WWI vytvořil testovací plán, který zahrnoval sadu IT a obchodních úkolů. Úspěšné migrace vyžadují spuštění všech testů.
Testy:
Ujistěte se, že migrovaná databáze má konzistenci (stejný počet záznamů a výsledky dotazů) s místními tabulkami.
Ujistěte se, že je výkon přijatelný (měl by odpovídat stejnému výkonu, jako kdyby běžel místně).
Ujistěte se, že výkon cílových dotazů splňuje stanovené požadavky.
Zajistěte přijatelné síťové připojení mezi místním prostředím a sítí Azure.
Zajistěte, aby se všechny identifikované aplikace a uživatelé mohli připojit k migrované instanci dat.
WWI identifikovala víkend migrace a časové období, které začalo v 10 hodin a skončilo v 2: Tichomoří. Pokud se migrace nedokončila před cílem 2 hodin (cíl výpadku 4 hodin) se všemi testy, které prošly, spustily se postupy vrácení zpět. Problémy byly zdokumentovány pro budoucí pokusy o migraci. Všechna okna migrace se odeslala dopředu a přeplánovala na základě přijatelných obchodních časových os.
Vzorové dotazy
Ve zdroji a cíli se spustila řada dotazů, aby se ověřil úspěch migrace databáze. Následující dotazy a skripty pomáhají určit, jestli akce migrace přesunuly všechny požadované databázové objekty ze zdroje do cíle.
Řádky tabulky
Tento dotaz můžete použít k získání všech tabulek a odhadovaného počtu řádků:
SELECT SUM(TABLE_ROWS)
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = '{SchemaName}';
Poznámka:
Tabulka INFORMATION_SCHEMA
poskytuje odhadovanou sadu hodnot v tabulkách. Pokud chcete získat přesnější zobrazení metrik, jako je velikost tabulky, zvyšte velikost vzorku stránky pomocí parametru innodb_stats_transient_sample_pages
serveru. Zvýšení hodnoty serveru vynutí analýzu více stránek a poskytuje přesnější výsledky.
Spusťte příkaz count(*)
SQL pro každou tabulku, abyste získali přesný počet řádků. Spuštění tohoto příkazu může u velkých tabulek trvat dlouhou dobu. Následující skript vygeneruje sadu příkazů SQL, které se dají spustit, aby získaly přesné počty:
SELECT CONCAT(
'SELECT "',
table_name,
'" AS table_name, COUNT(*) AS exact_row_count FROM `',
table_schema,
'`.`',
table_name,
'` UNION '
)
FROM INFORMATION_SCHEMA.TABLES
WHERE table_schema = '**my_schema**';
Fragmentace tabulek
Tabulky dat budou pravděpodobně i nadále růst s pokračujícím využitím aplikace. V některých případech nemusí data růst, ale neustále se mění prostřednictvím odstranění a aktualizací. Pokud ano, je možné, že v souborech databáze existuje mnoho fragmentací. Příkaz MySQL OPTIMIZE TABLE může snížit potřeby fyzického úložiště a zlepšit efektivitu vstupně-výstupních operací.
Tabulky MySQL můžete optimalizovat spuštěním následujících kroků :
optimize table TABLE_NAME
Databázové objekty
Pomocí následujícího dotazu se ujistěte, že jsou všechny ostatní databázové objekty započítány. I když tyto dotazy můžou počítat počty řádků tabulky, nemusí mít na výběr verzi konkrétního databázového objektu. I když například uložená procedura může existovat, mohla se mezi začátkem a koncem migrace změnit. Během migrace se doporučuje zamrznout vývoj databázových objektů.
Uživatelé
SELECT DISTINCT
USER
FROM
mysql.user
WHERE
user <> '' order by user
Indexy
SELECT DISTINCT
INDEX_NAME
FROM
information_schema.STATISTICS
WHERE
TABLE_SCHEMA = '{SchemaName}'
Omezení
SELECT DISTINCT
CONSTRAINT_NAME
FROM
information_schema.TABLE_CONSTRAINTS
WHERE
CONSTRAINT_SCHEMA = '{SchemaName}'
Zobrazení
SELECT
TABLE_NAME
FROM
information_schema.VIEWS
WHERE
TABLE_SCHEMA = '{SchemaName}'
Uložené procedury
SELECT
ROUTINE_NAME
FROM
information_schema.ROUTINES
WHERE
ROUTINE_TYPE = 'FUNCTION' and
ROUTINE_SCHEMA = '{SchemaName}'
Functions
SELECT
ROUTINE_NAME
FROM
information_schema.ROUTINES
WHERE
ROUTINE_TYPE = 'PROCEDURE' and
ROUTINE_SCHEMA = '{SchemaName}'
Události
SELECT
EVENT_NAME
FROM
INFORMATION_SCHEMA.EVENTS
WHERE
EVENT_SCHEMA = '{SchemaName}'
Strategie vrácení zpět
Výše uvedené dotazy poskytují seznam názvů a počtů objektů použitých při rozhodování o vrácení zpět. Uživatelé migrace můžou provést první krok ověření objektu kontrolou počtu zdrojových a cílových objektů. Nesrovnalosti v počtech objektů nemusí nutně znamenat, že je potřeba vrátit zpět. Provedení hloubkového vyhodnocení by mohlo upozornit na to, že rozdíl je mírný a snadno obnovitelný. Řešením může být ruční migrace několika neúspěšných objektů. Pokud se například migrovaly všechny tabulky a řádky dat, zmeškaly se jenom některé funkce, opravte tyto neúspěšné objekty a dokončete migraci. Pokud je databáze relativně malá, může být možné vymazat instanci Azure Database for MySQL a restartovat migraci. Velké databáze můžou k určení chybějících objektů potřebovat více času, než je k dispozici v okně migrace. Migrace se musí zastavit a vrátit zpět.
Identifikace chybějících databázových objektů musí během okna migrace rychle nastat. Každou minutu se počítá. Jednou z možností může být export názvů objektů prostředí do souboru a použití nástroje pro porovnání dat k rychlé identifikaci chybějících objektů. Další možností může být export názvů zdrojových databázových objektů a import dat do dočasné tabulky cílového prostředí databáze. Porovnejte data pomocí skriptu a otestovaného příkazu SQL. Rychlost a přesnost ověření dat jsou pro proces migrace zásadní. Během okna migrace nespoléhejte na ruční čtení a ověřování dlouhého seznamu databázových objektů. Možnost lidské chyby je příliš velká. Nejlepší by bylo, kdybyste je spravoval pomocí výjimek pomocí nástrojů.
Scénář WWI
ŘEDITELKA WWI obdržela potvrzovací zprávu, že všechny databázové objekty byly migrovány z místní databáze do instance Azure Database for MySQL. Databázový tým spustil výše uvedené dotazy na databázi před začátkem migrace a uložil všechny výsledky do tabulky.
Informace o schématu zdrojové databáze se použily k ověření věrnosti cílového objektu migrace.
Kontrolní seznam testovacích plánů
Nechte testovat, testovat a testovat dotazy, které jsou připravené ke spuštění.
Zjistěte, jak dlouho trvá spuštění testovacích dotazů, a nastavte je jako součást zdokumentované časové osy migrace.
Připravte strategii pro zmírnění rizik a vrácení zpět pro různé potenciální výsledky.
Máte dobře definovanou časovou osu událostí pro migraci.