sql >> Databasteknik >  >> RDS >> Mysql

Ögonblicksbild av EBS-volymen som används för replikering

Även om det är en bra idé att låsa databasen och frysa filsystemet när du initierar ögonblicksbilden, tar själva API-anropet för att initiera ögonblicksbilden en bråkdel av en sekund, så din databas och filsystem är inte låsta/frysta länge.

Som sagt, det finns ett par andra överväganden som du inte nämnde:

  1. När du försöker skapa låset på databasen kan det behöva vänta tills andra uttalanden är klara innan låset beviljas. Under den här tiden kan ditt väntande lås ytterligare uttalanden vänta tills du får och släpper låset. Detta kan orsaka avbrott i flödet av uttalanden i din produktionsdatabas.

  2. Efter att du initierat skapandet av ögonblicksbilden är din applikation/databas fri att använda filsystemet på volymen, men om du har många skrivningar kan du uppleva hög iowait, ibland tillräckligt för att skapa en märkbar nedgång i din applikation. Anledningen till detta är att bakgrundsögonblicksbildprocessen måste kopiera ett block till S3 innan det tillåter en skrivning till det blocket på den aktiva volymen.

Jag löser det första problemet genom att begära ett lås och timeout om det inte beviljas snabbt. Jag väntar sedan lite och fortsätter försöka igen tills jag får låset. Lämpliga tidsgränser och fördröjning av ett nytt försök kan variera för olika databasbelastningar.

Jag löser det andra problemet genom att utföra de frekventa, konsekventa ögonblicksbilderna på slaven istället för mastern, precis som du föreslog. Jag rekommenderar fortfarande att du gör enstaka ögonblicksbilder mot mastern helt enkelt för att förbättra dess inneboende hållbarhet (en djup EBS-egenskap) men dessa ögonblicksbilder behöver inte utföras med låsning eller frysning eftersom du inte kommer att använda dem för säkerhetskopiering.

Jag rekommenderar också att du använder ett filsystem som stöder spolning och frysning (XFS). Annars tar du ögonblicksbilder av låsta tabeller i MySQL som kanske ännu inte ens har alla sina block på EBS-volymen ännu eller så kan andra delar av filsystemet vara modifierade och inkonsekventa i ögonblicksbilden.

Om du är intresserad har jag publicerat programvara med öppen källkod som utför de bästa metoderna jag har samlat in för att skapa konsekventa EBS-ögonblicksbilder med MySQL och XFS (båda valfria).

För att svara på din sista fråga, låsning av tabeller i mastern kommer inte att bryta replikeringen. I min ögonblicksbildprogramvara spolar jag också tabellerna med läslås för att se till att allt finns på skivan som snapshotas och jag lägger till nyckelordet "LOCAL" så att spolningen inte replikeras till några potentiella slavar.



  1. Ansluter du till flera CloudSQL-instanser med Cloud sql-proxy?

  2. org.hibernate.HibernateException:spara är inte giltigt utan aktiv transaktion

  3. Hämtar SQLEXCEPTION-meddelande i MySQL-procedurer

  4. Sekvenser som inte påverkas av transaktioner?