Vraag


Acties:
  • 0 Henk 'm!

  • c-nan
  • Registratie: Juni 2008
  • Laatst online: 22:45
Ik heb een enkele (dus geen master-master, of master-slave) MySQL (InnoDB) server welke redelijk groot is en zwaar wordt belast. Ik heb de resources niet om een server ernaast te plaatsen om te clusteren. Ik kan hooguit een klein server ernaast draaien en dan in master-slave mode, echter zal de slave de master niet kunnen bijbenen.

Om een backup te maken wordt de database nu dagelijks gestopt, backup gemaakt en weer gestart. Dat is geen ideale situatie. Het liefst maak ik een backup zonder dat de gebruikers daar iets van merken.

Als ik een 2e server er naast zet (met veel minder resources, maar wel voldoende storage) en in master-slave draai. Hoe werkt het dan met inserts/updates? Moet de insert eerst op de slave klaar zijn voordat er een 'ack' terug gaat? Of vind de ack al plaats als de insert op de master heeft plaatsgevonden? En de gebruikers dus geen performance verlies zullen merken?

Indien er geen performance verlies zal zijn door een 2e server als slave te draaien, dan wordt dat mijn keuze en zal ik de backup vanuit de slave draaien.

Echter, als de master vertraagd gaat worden omdat de slave niet snel genoeg is, dacht ik aan:
- Slave koppelen aan master, backup maken op de slave, slave ontkoppelen van master.
- 24 uur later bovenstaande herhalen. Is dit aan/af te raden?

Of zijn er nog andere veel betere opties?

EU DNS: 86.54.11.100

Alle reacties


Acties:
  • +1 Henk 'm!

  • Merethil
  • Registratie: December 2008
  • Laatst online: 21:40
c-nan schreef op donderdag 11 maart 2021 @ 15:59:
Ik heb een enkele (dus geen master-master, of master-slave) MySQL (InnoDB) server welke redelijk groot is en zwaar wordt belast. Ik heb de resources niet om een server ernaast te plaatsen om te clusteren. Ik kan hooguit een klein server ernaast draaien en dan in master-slave mode, echter zal de slave de master niet kunnen bijbenen.

Om een backup te maken wordt de database nu dagelijks gestopt, backup gemaakt en weer gestart. Dat is geen ideale situatie. Het liefst maak ik een backup zonder dat de gebruikers daar iets van merken.

Als ik een 2e server er naast zet (met veel minder resources, maar wel voldoende storage) en in master-slave draai. Hoe werkt het dan met inserts/updates? Moet de insert eerst op de slave klaar zijn voordat er een 'ack' terug gaat? Of vind de ack al plaats als de insert op de master heeft plaatsgevonden? En de gebruikers dus geen performance verlies zullen merken?

Indien er geen performance verlies zal zijn door een 2e server als slave te draaien, dan wordt dat mijn keuze en zal ik de backup vanuit de slave draaien.

Echter, als de master vertraagd gaat worden omdat de slave niet snel genoeg is, dacht ik aan:
- Slave koppelen aan master, backup maken op de slave, slave ontkoppelen van master.
- 24 uur later bovenstaande herhalen. Is dit aan/af te raden?

Of zijn er nog andere veel betere opties?
toon volledige bericht
https://serversforhackers.com/c/mysqldump-with-modern-mysql hier wordt uitgelegd dat je gewoon een backup kan maken van een draaiende server (alleen met InnoDB engine) door
code:
1
--single-transaction
toe te voegen aan je mysqldump.
Dan hoef je geen gekke dingen te doen om je backup te draaien terwijl je server aanstaat, en heb je dáár die slave dus niet voor nodig.

Deze manier locked geen tabellen en daardoor zouden je gebruikers er geen last van mogen hebben.

Acties:
  • 0 Henk 'm!

  • Hero of Time
  • Registratie: Oktober 2004
  • Laatst online: 21:39

Hero of Time

Moderator LNX

There is only one Legend

Clusters kan je ook opzetten middels transactielogs/binlogs. Hiervoor moet je wel de extra storage hebben en zorgen dat de secundary de transacties snel genoeg oppakt en uitvoert.

Commandline FTW | Tweakt met mate


Acties:
  • 0 Henk 'm!

  • syl765
  • Registratie: Juni 2004
  • Laatst online: 21-07 20:35
Kijk eens naar Xtrabackup, hiermee kun je van een live database een backup maken naar een andere server.

https://www.percona.com/d...in/creating_a_backup.html

Je kan dit ook pipen naar ssh of nc zodat je dit naar een andere server kan sturen.

[ Voor 42% gewijzigd door syl765 op 13-03-2021 18:50 ]