Hoe twee systemen syncen? (incl. databases + files)

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

  • HollowGamer
  • Registratie: Februari 2009
  • Niet online
Mijn vraag
Ik zou graag mijn databases willen syncen over mijn LAN, maar ik twijfel of een master/slave-setup de juiste is.

Wat is precies de bedoeling:
- Op mijn main PC houd ik een database bij + de bijbehorende (media) bestanden.
- Vanaf mijn PC wil ik een sync starten naar mijn NAS, zodat deze weer gelijk is aan mijn PC.

De bedoeling is dat IDs, UUIDs, etc. allemaal hetzelfde zijn. Hierbij fungeert de NAS als productie omgeving.

Relevante software en hardware die ik gebruik
Arch Linux (beide) + ZFS
802.11ax (desktop) + 1Gb/s (LAN voor o.a. NAS)

Wat ik al gevonden of geprobeerd heb
- MariaDB master/slave setup guides opgezocht, die lijken erg ingewikkeld?
- Script bouwen die database leegmaakt van de NAS + elke keer (vers) importeert vanaf de desktop + rsync naar NAS.

De NAS wil ik niet meer de hele dag aan hebben staan. Die gebruik ik vooral als HTPC en streaming.
Het is de bedoeling om de NAS na elke sync in read-only te zetten, dat zou moeten kunnen met ZFS.

Hopelijk hebben jullie tips om dit het beste en makkelijkst aan te pakken. :)
Ik zie er een beetje tegenop, vooral de MariaDB master/slave guides hebben verschillende mogelijkheden en opvattingen.

Heel erg bedankt!

Beste antwoord (via HollowGamer op 06-10-2021 10:50)


  • The Eagle
  • Registratie: Januari 2002
  • Laatst online: 21:44

The Eagle

I wear my sunglasses at night

Je probleem zit hem in de WAL van MariaDB en de wijze waarop de db naar zijn datafiles schrijft. Je wilt een consistente staat overbrengen naar je NAS. Nou weet ik niet exact wanneer MariaDB naar zijn DB files schrijft, maar wel dat je na een goede shutdown een consistente staat overhoudt.

Aantal vragen:
- je geeft aan je NAS is productieomgeving. Moet daar ten alle tijden van gelezen kunnen worden?
- moet de boel op je PC online blijven tijdens de kopieeracties?
- al eens naar een simpele online backup en restore gekeken? Als je dat incremental plus wekelijks doet ben je er wellicht ook.

UUID's wordt een dingetje. Die verschillen per OS. Je DB user zal het zelfde UUID moeten hebben op beide machines, anders gaat dat sowieso mis.

Optie waar ik aan zit te denken mocht het spul aan beide zijden tijdelijk plat mogen:
- rsync op bitniveau van pc DB files dir naar temp folder nas. Dat is de grootste heap en je basis.
- op syncmoment, sync stoppen, db op je pc stoppen, sync starten tot ie klaar is. Dat zou vrij snel moeten zijn, is namelijk bitniveau dus kan nooit veel zijn.
- db op je nas stoppen
- mv temp folder naar je datafiles folder op je nas
- start nas db
- start PC db
- start sync naar temp

Als je beiden of een van beiden permanent online wilt hebben, dan ontkom je bijna niet aan een master / slave setup (nas als slave, read only) of een multimaster met galera cluster. Die laatste heb ik zelf geen ervaring mee moet ik bekennen.

Ander alternatief kan zijn meerdere schema's hanteren in de master, en vanaf je pc in een het tweede (temp) schema importeren. En dan vanaf je temp schema naar het master schema.

Al is het nieuws nog zo slecht, het wordt leuker als je het op zijn Brabants zegt :)

Alle reacties


Acties:
  • +2 Henk 'm!

  • DukeBox
  • Registratie: April 2000
  • Laatst online: 22:22

DukeBox

loves wheat smoothies

HollowGamer schreef op dinsdag 5 oktober 2021 @ 16:34:
Wat ik al gevonden of geprobeerd heb
- MariaDB master/slave setup guides opgezocht, die lijken erg ingewikkeld?
- Script bouwen die database leegmaakt van de NAS + elke keer (vers) importeert vanaf de desktop + rsync naar NAS.
En waarom werkte dat dan niet voor je ? Met name mysqldump + load en rsync voor data is in de meeste gevallen een prima oplossing.

Ik weet ook niet om hoeveel data het gaat maar je zou ook een versioning tool kunnen gebruiken zoals git.

[ Voor 10% gewijzigd door DukeBox op 05-10-2021 16:54 ]

Duct tape can't fix stupid, but it can muffle the sound.


Acties:
  • +1 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
HollowGamer schreef op dinsdag 5 oktober 2021 @ 16:34:
- MariaDB master/slave setup guides opgezocht, die lijken erg ingewikkeld?
Geef dan even aan wat er zo ingewikkeld is of wat er dan niet werkt? Heb je het al geprobeerd?
HollowGamer schreef op dinsdag 5 oktober 2021 @ 16:34:
- Script bouwen die database leegmaakt van de NAS + elke keer (vers) importeert vanaf de desktop + rsync naar NAS.
Hmmm, dat kan, maar is een beetje van dik hout zaagt men planken :P
HollowGamer schreef op dinsdag 5 oktober 2021 @ 16:34:
Hopelijk hebben jullie tips om dit het beste en makkelijkst aan te pakken. :)
Ik zou een master/slave setup doen, maar die lijk je al afgeschreven te hebben. Alleen op, voor mij, onduidelijke en weinig onderbouwde redenen. Zoals je in onze Quickstart zult lezen zien we graag een beetje meer wat je zélf al ondernomen hebt.
HollowGamer schreef op dinsdag 5 oktober 2021 @ 16:34:
Ik zie er een beetje tegenop, vooral de MariaDB master/slave guides hebben verschillende mogelijkheden en opvattingen.
Ook hier weer: wat zijn dan de verschillende mogelijkheden / opvattingen en wat zijn jouw afwegingen dan? Waar twijfel je over?

Verder vraag ik me af of je in Softwareontwikkeling wel aan 't juiste adres bent; dit lijkt me meer iets voor Serversoftware en Windows Servers maar laten we even kijken waar dit naar toe gaat...

[ Voor 13% gewijzigd door RobIII op 05-10-2021 16:45 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • HollowGamer
  • Registratie: Februari 2009
  • Niet online
DukeBox schreef op dinsdag 5 oktober 2021 @ 16:42:
[...]

En waarom werkte dat dan niet voor je ? Met name mysqldump + load en rsync voor data is in de meeste gevallen een prima oplossing.
Dat voelt een beetje storinggevoelig. In theorie zou een import halverwege kunnen stoppen en het zou lang kunnen duren.
Een rsync werkt wel prima, alleen de database kan dus vooruit lopen op de bestanden, dat duurt wel langer om die te kopiëren over WLAN.
RobIII schreef op dinsdag 5 oktober 2021 @ 16:42:
Geef dan even aan wat er zo ingewikkeld is of wat er dan niet werkt? Heb je het al geprobeerd?
De meeste guides gaan uit van MySQL, maar ik draai MariaDB. Nu ik het nogmaals bekijk valt de guide eigenlijk wel mee: https://mariadb.com/kb/en/setting-up-replication/
Ik zou een master/slave setup doen, maar die lijk je al afgeschreven te hebben. Alleen op, voor mij, onduidelijke en weinig onderbouwde redenen. Zoals je in onze Quickstart zult lezen zien we graag een beetje meer wat je zélf al ondernomen hebt.

Ook hier weer: wat zijn dan de verschillende mogelijkheden / opvattingen en wat zijn jouw afwegingen dan? Waar twijfel je over?
Ik twijfel over de gehele opzet, bijvoorbeeld of dit wel goed werkt en de nadelen ervan. Ik heb dit nog nooit gedaan met MariaDB en zou graag ervaringen willen horen. Zijn er bijvoorbeeld betere (open-source) alternatieven die ook aan master/slave doen en echt bedoeld zijn voor het synchroniseren van projecten?
Verder vraag ik me af of je in Softwareontwikkeling wel aan 't juiste adres bent; dit lijkt me meer iets voor Serversoftware en Windows Servers maar laten we even kijken waar dit naar toe gaat...
Waar ik bijvoorbeeld aan denk is een deployment tool, nu doe ik in feite twee acties los:
- Databases sync
- Rsync

Maar ik mis dan nog zaken die je bijvoorbeeld op een deployment doet zoals het flushen van caches. Alleen is dit niet echt een deployment, het is meer syncen.
In theorie zou ik daarvoor een bash script kunnen schrijven, maar hoe minder eigen scripts hoe beter. :)

Je hebt overigens helemaal gelijk, dit staat in het verkeerde topic, sorry. :/

Acties:
  • +1 Henk 'm!

  • DukeBox
  • Registratie: April 2000
  • Laatst online: 22:22

DukeBox

loves wheat smoothies

HollowGamer schreef op dinsdag 5 oktober 2021 @ 17:10:
Dat voelt een beetje storinggevoelig. In theorie zou een import halverwege kunnen stoppen en het zou lang kunnen duren.
Dat hangt nogal af van hoe groot de database is en vaak hoe(veel) efficient/inefficient de indexen zijn.
Hoe dan ook is het een van de meest gebruikte backup/restore methodes dus 'storingsgevoelig' valt echt wel mee.
Een rsync werkt wel prima, alleen de database kan dus vooruit lopen op de bestanden, dat duurt wel langer om die te kopiëren over WLAN.
Wij kunnen natuurlijk niet ruiken wat jouw eisen zijn, als er dit sort factoren meespelen moet je dat ook vermelden in je TS.
De meeste guides gaan uit van MySQL, maar ik draai MariaDB.
Dat is voor 99,9% gelijk. De databases zijn binnen het zelfde db level zelfs binary compatible.

Duct tape can't fix stupid, but it can muffle the sound.


Acties:
  • +1 Henk 'm!

  • Kalentum
  • Registratie: Juni 2004
  • Laatst online: 21:21
HollowGamer schreef op dinsdag 5 oktober 2021 @ 16:34:
Wat is precies de bedoeling:
- Op mijn main PC houd ik een database bij + de bijbehorende (media) bestanden.
- Vanaf mijn PC wil ik een sync starten naar mijn NAS, zodat deze weer gelijk is aan mijn PC.

De bedoeling is dat IDs, UUIDs, etc. allemaal hetzelfde zijn. Hierbij fungeert de NAS als productie omgeving.
Wat je ook kan doen is niet je database op je main PC gebruiken maar die op de NAS. Ik neem aan dat je wat scriptjes ofzo hebt om mediabestanden in een database op te slaan, in plaats van te verbinden met localhost verbindt je met je NAS.

Dit onder de aanname dat de gegevens niet kritisch zijn en opnieuw opgebouwd kunnen worden mocht er iets mis gaan.

Acties:
  • Beste antwoord
  • +1 Henk 'm!

  • The Eagle
  • Registratie: Januari 2002
  • Laatst online: 21:44

The Eagle

I wear my sunglasses at night

Je probleem zit hem in de WAL van MariaDB en de wijze waarop de db naar zijn datafiles schrijft. Je wilt een consistente staat overbrengen naar je NAS. Nou weet ik niet exact wanneer MariaDB naar zijn DB files schrijft, maar wel dat je na een goede shutdown een consistente staat overhoudt.

Aantal vragen:
- je geeft aan je NAS is productieomgeving. Moet daar ten alle tijden van gelezen kunnen worden?
- moet de boel op je PC online blijven tijdens de kopieeracties?
- al eens naar een simpele online backup en restore gekeken? Als je dat incremental plus wekelijks doet ben je er wellicht ook.

UUID's wordt een dingetje. Die verschillen per OS. Je DB user zal het zelfde UUID moeten hebben op beide machines, anders gaat dat sowieso mis.

Optie waar ik aan zit te denken mocht het spul aan beide zijden tijdelijk plat mogen:
- rsync op bitniveau van pc DB files dir naar temp folder nas. Dat is de grootste heap en je basis.
- op syncmoment, sync stoppen, db op je pc stoppen, sync starten tot ie klaar is. Dat zou vrij snel moeten zijn, is namelijk bitniveau dus kan nooit veel zijn.
- db op je nas stoppen
- mv temp folder naar je datafiles folder op je nas
- start nas db
- start PC db
- start sync naar temp

Als je beiden of een van beiden permanent online wilt hebben, dan ontkom je bijna niet aan een master / slave setup (nas als slave, read only) of een multimaster met galera cluster. Die laatste heb ik zelf geen ervaring mee moet ik bekennen.

Ander alternatief kan zijn meerdere schema's hanteren in de master, en vanaf je pc in een het tweede (temp) schema importeren. En dan vanaf je temp schema naar het master schema.

Al is het nieuws nog zo slecht, het wordt leuker als je het op zijn Brabants zegt :)


Acties:
  • 0 Henk 'm!

  • HollowGamer
  • Registratie: Februari 2009
  • Niet online
@The Eagle Dit was het antwoord waar ik naar opzoek was. :)

Zo te zien wordt het inderdaad allemaal ingewikkeld, het is voor hobby/persoonlijk usage, dan lijkt me tijd investering en mits-maren toch iets te groot. De NAS wil ik bijvoorbeeld vaak in slaapstand zetten en de backups maak ik nu incidenteel offline. Dan ben ik beter af om het gewoon aparte omgevingen te houden zoals nu.

Thanks voor de uitgebreide uitleg.

Acties:
  • +1 Henk 'm!

  • The Eagle
  • Registratie: Januari 2002
  • Laatst online: 21:44

The Eagle

I wear my sunglasses at night

Yw :)

Een jaar of 5 geleden zat ik als DB engineer op een project om ca 500 db's (oract, mssql, MySQL) te migreren van het ene DC naar het andere. Dan steek je nog wel eens wat op ;)

Al is het nieuws nog zo slecht, het wordt leuker als je het op zijn Brabants zegt :)


Acties:
  • +1 Henk 'm!

  • mbe81
  • Registratie: Juni 2008
  • Laatst online: 17:36
Ik zou voor de Master/Slave setup gaan. Redelijk eenvoudig (als in binnen een uur te regelen), knetterstabiel en altijd up-to-date.

Hier nog een guide/howto met de stappen beknopt beschreven: https://hbayraktar.medium...ion-in-mysql-860f3f55823c

(Op termijn zou je ook nog Master/Master kunnen doen zodat wijzigingen op beide hosts gerepliceerd worden)

Acties:
  • +1 Henk 'm!

  • BCC
  • Registratie: Juli 2000
  • Laatst online: 20:37

BCC

Master master is niet triviaal :) Maar ik weet niet wat er voor data in de database zit, maar is een mysqldump elke dag die je vervolgens backuped niet voldoende? Die is mogelijk niet 100% transactioneel consistent, maar zolang je geen bank draait op je NAS vaak meer dan voldoende :)

code:
1
mysqldump --all-databases --compact -u username -p password  > dump.sql


Je kan zelfs via ssh je dump direct naar een andere mysql server pushen als je wil

[ Voor 23% gewijzigd door BCC op 07-10-2021 08:50 ]

Na betaling van een licentievergoeding van €1.000 verkrijgen bedrijven het recht om deze post te gebruiken voor het trainen van artificiële intelligentiesystemen.


Acties:
  • 0 Henk 'm!

  • DukeBox
  • Registratie: April 2000
  • Laatst online: 22:22

DukeBox

loves wheat smoothies

BCC schreef op donderdag 7 oktober 2021 @ 08:47:
Die is mogelijk niet 100% transactioneel consistent..
als je '--single-transaction' toevoegt (uitgaande van innodb) wel.

Duct tape can't fix stupid, but it can muffle the sound.

Pagina: 1