mysql sync via ssh

Hello

Mi a hiba ebben?
A cél az volna, hogy a távoli szerveren lévő adatbázisokat le tudjam szinkronizálni a helyi szerverre.
ERROR 1064 (42000) hibával elszáll, mert a mysqldump syntax nem jó szerinte.


while read line
do
ssh -p 11111 root@remoteip \ 'mysqldump -u root -ppassword --databases $line' \ | mysql -u root -h localhost -ppassword $line
done < db_lista.txt

Próbáltam --databases -el meg anélkül is, de akkor sem tetszik neki.

Hozzászólások

A ' és a \ jelekre miért is van szükség?
Gabi

lehet en ertem felre
miert kell ssh?

GRANT SELECT, SHOW VIEW, RELOAD, REPLICATION CLIENT, EVENT, TRIGGER ON *.* TO 'backup'@'tavoliip' identified BY 'jelszo';

mysql -ubackup -p -h mysqlip

mert -ha jól emlékszem- vagy localhost-ra / bármi más ip-re bind-olod a mysql-t vagy "mindenen" ip-n figyel és tűzfalszabályokkal korlátozhatod le.
a te esetedre a második opció jön szóba, lehet hogy a kérdezőnél az első játszik jelenleg

persze szóba jöhet forward is mint opció..

bocs, nem értem, ezzel mit akarsz mondani.
A kérdező SSH-n keresztül kiadja a távoli gépnek a parancsot, ami nem akar működni úgy, mint szeretné.
Én pedig azt javasoltam, hogy SSH-val felépít egy kapcsolatot a távoli SQL szerverhez, és onnantól
már a távoli mysql servert "localként" tudja használni a scriptjeiben, az immár titkosított csatornán keresztül - úgy, hogy a mysql a túlvégen nincsen "kinyitva a világ felé".

A távoli gépen futtatott parancs vége így látszik: --databases $line, mert az egyszeres idézőjel miatt nem oldja fel a változót.
Próbáld meg kettes idézőjelek közé tenni ("távoli parancs"), jó eséllyel működni fog...

Esetleg adj neki terminált is (-tt opció az ssh-nak), hátha az a gondja...

Meg érdemes ilyen hiba esetén az ssh parancs előtt kiiratni az aktuális változót is:

do
echo "aktualis db: $line"
ssh ...
done < db_lista.txt

Ha a while ciklusba raktam akkor csak egy adatbázist volt hajlandó megcsinálni.
Átírtam most két lépésbe, először leszedi egy helyi sql file-ba, majd második lépésként beimportálom. Érdekes módon while ciklusban nem volt hajlandó megcsinálni de for-al igen.
Köszönöm azért a segítséget.

Replikacio nem lenne jobb inkabb erre, ha van allando kapcsolat?

---------------------------------------------------
Hell is empty and all the devils are here.
-- Wm. Shakespeare, "The Tempest"

Én inkább azt csinálnám, hogy a tvoli szerveren csinálnék egy uszert és megoldanám az ssh kulcsal bejelentkezést.

Aztán portforward ezzel a userrel:

ssh -AfN myuser@a.server.lan -L13306:localhost:3306

Ez bejelentkezik a serverre aztn elmegy a háttérbe és csinál egy portforwardot

A dump ugyan az mint ahogy csináltad, csak localhost:13306 -ról csinálod a betöltés természetesen ugyan az.

----
올드보이
http://molnaristvan.eu/