Nejprve budeme rozumět ukládání v RDS Aurora. V Auroře jsou 2 typy úložiště. Instantní obchod je místní úložiště, kde jsou uloženy dočasné objekty, a hlavní úložiště pro data. Proto, když spustíte ALTER na tabulce, vygeneruje dočasnou tabulku a RDS aurora použije úložiště instance k uložení dočasné tabulky. Pro vaši instanci, kterou je instance db.r3.large, má 1×32 GB místního úložiště, takže pokud budou vaše dočasné objekty v instanci větší než tato velikost, zobrazí se chyba „Tabulka je plná“. Limit místního úložiště se také liší od celkového objemu úložiště dostupné pro vaši instanci Aurora a na základě využití vaší databáze se objem vašeho úložiště Amazon Aurora automaticky zvětší až na 64 TB v krocích po 10 GB.Proč k tomuto problému došlo, i když objem úložiště Amazon Aurora automaticky naroste až na 64 TB.?
Upravit na velkém stole v RDS řešení k plnému stolu Chyba
- Chcete-li tento problém vyřešit, můžete škálovat instanci, abyste získali více místního úložiště pro spuštění ALTER, změnit tabulku a poté zmenšit typ instance. To má za následek určité prostoje při upgradu/downgradu typu instance.
- Můžete také použít:příkaz „pt-online-schema-change“, pokud použijete tento příkaz, bude původní tabulka stále dostupná pro použití bez prostojů nebo žádný zámek stolu.
Výsledky:
Pokud upravujete tabulku pomocí pt -online-schema-change příkaz na tabulka o velikosti 35-40 GB pak může trvat přibližně 30 hodin.pt-online-schema-change nezamyká stůl. Tento příkaz vytvoří spouštěče na původní tabulce. K tomu však potřebuje oprávnění superuživatele. při použití procedury store se zobrazí chyba:Proč používat příkaz pt-online-schema-change a proč jej povolit „log_bin_trust_function_creators“ ve skupině parametrů DB? ?
#1419 – Nemáte oprávnění SUPER a je povoleno binární protokolování (možná* budete chtít použít méně bezpečnou proměnnou log_bin_trust_function_creatorsDůvod: K této chybě dochází v instancích RDS, když se pokusíte použít „Uložené procedury“. Brzy zjistíte, že udělení super oprávnění pro uživatele nebude fungovat. Takže jediný způsob, jak zajistit, aby věci fungovaly, je nastavit log_bin_trust_function_creators na 1. Podle dokumentů Percona: Sečteno a podtrženo, vytváření spouštěčů na serveru s povolenými binárními protokoly vyžaduje uživatele s oprávněními SUPER (což v Amazon RDS není možné). Chybová zpráva určuje řešení. Musíme povolit proměnnou ve skupině parametrů DB „ log_bin_trust_function_creators“. Povolení je jako říci serveru: „Věřím spouštěčům a funkcím běžných uživatelů a že nezpůsobí problémy, takže dovolte mým uživatelům, aby je vytvořili.“ Vzhledem k tomu, že funkce databáze se nezmění, je třeba důvěřovat svým uživatelům. log_bin_trust_function_creators je globální proměnná, kterou lze dynamicky měnit. Pokuste se najít další podrobnosti o „Super_priv“, když zkontrolujete oprávnění uživatelů v uživatelské tabulce databáze MySQL. mohli jste vidět, že Super_priv není nastaven pro nikoho kromě uživatele rdsadmin.
MySQL> select User,Super_priv from user; +-----------+------------+ | User | Super_priv | +-----------+------------+ | rdsadmin | Y | | root | N | | dbuser | N | +-----------+------------+ 3 rows in set (0.00 sec)
Zde „root“ je hlavní uživatel a „dbuser“ je uživatel DB, tito uživatelé jsou vytvořeni námi a uživatel „rdsadmin“ je automaticky vytvořen AWS, ke kterému nemáme přístup k tomuto uživateli. rdsadmin MySQL uživatele používá Amazon pro údržbu a správu.
Toto je konec tutoriálu, jak změnit na velkém stole v řešení RDS tak, aby došlo k úplné chybě tabulky.