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

Snímek svazku EBS použitého pro replikaci

I když je dobré zamknout databázi a zmrazit systém souborů, když inicializujete snímek, skutečné volání API k inicializaci snímku trvá zlomek sekundy, takže vaše databáze a souborový systém nejsou uzamčeny/zmraženy na dlouho.

To znamená, že existuje několik dalších aspektů, které jste nezmínili:

  1. Když se pokusíte vytvořit zámek databáze, může být nutné počkat na dokončení dalších příkazů, než bude zámek udělen. Během této doby může váš čekající zámek další příkazy počkat, až zámek získáte a uvolníte. To může způsobit přerušení toku příkazů ve vaší produkční databázi.

  2. Po zahájení vytváření snímku může vaše aplikace/databáze volně používat souborový systém na svazku, ale pokud máte hodně zápisů, můžete zaznamenat dlouhé čekání, někdy dost na to, aby způsobilo znatelné zpomalení vaší aplikace. Důvodem je, že proces snímku na pozadí potřebuje zkopírovat blok do S3, než umožní zápis do tohoto bloku na aktivním svazku.

První problém řeším žádostí o zámek a vypršení časového limitu, pokud není rychle uděleno. Pak chvíli počkám a zkusím to znovu, dokud nedostanu zámek. Vhodné časové limity a zpoždění opakování se mohou lišit pro různá zatížení databáze.

Druhý problém řeším prováděním častých a konzistentních snímků na podřízeném místo na hlavním, jak jste navrhoval. Stále doporučuji provádět příležitostné snímky proti masteru jednoduše pro zlepšení jeho vnitřní odolnosti (hluboká vlastnost EBS), ale tyto snímky není nutné provádět s uzamčením nebo zmrazením, protože je nebudete používat pro zálohování.

Doporučuji také použití souborového systému, který podporuje proplachování a zmrazování (XFS). V opačném případě vytváříte snímky zamčených tabulek v MySQL, které ještě nemusí mít všechny své bloky na svazku EBS nebo mohou být jiné části souborového systému ve snímku upraveny a nekonzistentní.

Pokud máte zájem, zveřejnil jsem software s otevřeným zdrojovým kódem, který provádí osvědčené postupy, které jsem shromáždil v souvislosti s vytvářením konzistentních snímků EBS s MySQL a XFS (obojí volitelné).

Chcete-li odpovědět na vaši poslední otázku, uzamčení tabulek v hlavním serveru nepřeruší replikaci. Ve svém snapshot softwaru také vyprázdním tabulky pomocí zámku čtení, abych se ujistil, že je vše na disku, který se snímek zaznamenává, a přidám klíčové slovo "LOCAL", aby se flush nereplikoval na žádné potenciální slave.



  1. Export dat MYSQL do Excelu/CSV přes php

  2. Spusťte, abyste zabránili vkládání duplicitních dat dvou sloupců

  3. Proč MySQL přidává komentář k tabulkám InnoDB?

  4. filtrovat replikaci mysql (ignore-db)