PDA

Bekijk Volledige Versie : rsync localhost sudo rechten



timmy
04/10/13, 14:38
Ik wil een rsync van de data van mysql automatisch lokaal uitvoeren.
Dus van folder 1 naar folder 2. Normaal doe ik dit handmatig en voer dan sudo in
om over de juiste rechten te beschikken.

Kan ik dit ook automatisch uitvoeren inclusief de sudo rechten?

hrodenburg
04/10/13, 15:06
Je kan het mysql user account rechten geven op het commando wat je wil laten uitvoeren. Eventueel zonder de vraag voor een password (NOPASSWD optie). Even precies de syntax opzoeken van /etc/sudoers, want die weet ik zo even niet uit m'n hoofd.

Je kan natuurlijk ook een cronjob maken en dit direct als root laten uitvoeren.

Is dit wat je zoekt?

timmy
04/10/13, 15:12
Je kan het mysql user account rechten geven op het commando wat je wil laten uitvoeren. Eventueel zonder de vraag voor een password (NOPASSWD optie). Even precies de syntax opzoeken van /etc/sudoers, want die weet ik zo even niet uit m'n hoofd.

Je kan natuurlijk ook een cronjob maken en dit direct als root laten uitvoeren.

Is dit wat je zoekt?

dat van sudoers heb ik ook iets over gelezen. Maar ik zag zo 123 niet wat er aangpast moest worden.

Cronjob (launchd in mijn geval) is wat ik maar zoek, maar wat is daarvoor het juiste commando?
Ik heb al zoiets geprobeert als:
rsync --rsh-path="sudo rsync" -aq...
rsync --rsh="ssh user@systeem sudo" -aq...

maar dat werkte niet

SmilieBG
04/10/13, 15:28
Wacht, je heb op je server 2 mappen:

map 1: default MySQL map waarin DB data staat;
map 2: soort van 'backup' map en je wilt hier alle data uit map 1 (m.b.t. rsync) hebben?

Indien zo, dan is dit enige wat je in cronjob dient in te stellen:



*/5 * * * * /usr/bin/rsync /var/lib/mysql/* /nieuwe/backup/map/.


Hierboven staat:

elke 5 minuten rsyncen alles van map /var/lib/mysql naar de map /nieuwe/backup/map

Indien je alleen bepaalde DB's wilt, dan moet je bovenstaande regel aanpassen.

Let op - niks getest, dit is het idee :)

systemdeveloper
04/10/13, 17:45
Een rsync is wel niet de meest veilige manier om een backup van mysql te maken (open bestanden en zo...). Consistentie... (Als mysqld tenminste draait tijdens de rsync).
Wellicht kun je beter een mysqldump doen en iets van history bijhouden van x dagen.
Een backup van je db's op dezelfde server is maar beperkt zinvol (zolang je geen echte crash van je vps hebt), zeker maar ook als je elke 5 minuten een backup maakt. Dan heb je bij een storing precies 0-5 minuten om in te loggen op je server en de cron uit te zetten, anders overschrijft ie je werkende backup :)

Ik zou een mysqldump maken en zorgen dat die minimaal dagelijks op een ander systeem komt te staan.
Dan kun je altijd nog je binaries rsyncen en hopen dat er niet heen geschreven werd tijdens de rsync, maar je hebt dat tenminste wel een sql script waarmee je de hele db opnieuw kunt opbouwen.

timmy
08/10/13, 12:18
Een rsync is wel niet de meest veilige manier om een backup van mysql te maken (open bestanden en zo...). Consistentie... (Als mysqld tenminste draait tijdens de rsync).
Wellicht kun je beter een mysqldump doen en iets van history bijhouden van x dagen.
Een backup van je db's op dezelfde server is maar beperkt zinvol (zolang je geen echte crash van je vps hebt), zeker maar ook als je elke 5 minuten een backup maakt. Dan heb je bij een storing precies 0-5 minuten om in te loggen op je server en de cron uit te zetten, anders overschrijft ie je werkende backup :)

Ik zou een mysqldump maken en zorgen dat die minimaal dagelijks op een ander systeem komt te staan.
Dan kun je altijd nog je binaries rsyncen en hopen dat er niet heen geschreven werd tijdens de rsync, maar je hebt dat tenminste wel een sql script waarmee je de hele db opnieuw kunt opbouwen.

mysqldump ja, daar zit inderdaad wel wat in. Was ik helemaal vergeten...
Wat betreft aantallen in x aantal dagen is in deze niet zo belangrijk.
Alles draait lokaal op mijn mac en daar veranderd niet zo heelveel. Bij de productie server is het dan wel anders uiteraard.

Maar de vraag blijft wel, hoe zit ik in dit geval met de rechten als ik een mysqldump doe...
En kan ik die mysqldump vanuit een tcsh file benaderen/uitvoeren?

systemdeveloper
08/10/13, 12:28
mysqldump ja, daar zit inderdaad wel wat in. Was ik helemaal vergeten...
Wat betreft aantallen in x aantal dagen is in deze niet zo belangrijk.
Alles draait lokaal op mijn mac en daar veranderd niet zo heelveel. Bij de productie server is het dan wel anders uiteraard.

Maar de vraag blijft wel, hoe zit ik in dit geval met de rechten als ik een mysqldump doe...
En kan ik die mysqldump vanuit een tcsh file benaderen/uitvoeren?

Een mysqldump is niet meer dan een tekstbestand met een zooi 'create table' en 'insert blabla' dingen om je db weer op te tuigen. Dit kun je, mits je het root mysql password hebt, gewoon via bash/tcsh weer opnieuw inlezen met: mysql -uroot -pblabla < dump.sql

Het kan overigens handiger zijn om een scriptje te maken dat elke tabel apart dumpt zodat je gemakkelijk 1 tabel of 1 database kunt restoren ipv. alles databases.

Edit: History van minimaal 1-2 dagen is nooit slecht. Anders heb je maar 1 (dagelijkse) backup en als je eventuele problemen niet direct dezelfde dag oplost (of merkt), dan is je backup deels waardeloos.