Batch file maken voor backup SQL met autologon

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • millman
  • Registratie: November 2005
  • Laatst online: 05-09 00:12

millman

6708Mhz @ -185c

Topicstarter
Beste Mede tweakers,

Ik ben bezig met het automatiseren van de backup en upload procedure van MYSQL database, en ben er bijna, maar kom er niet helemaal uit. Eigenlijk is de enige issue de LOGON van MYSQL wat in de batch gedaan moet worden. Dit is mijn eerste batchscript, op of aanmerkingen hoor ik graag! De file ziet er inmiddels zo uit:
::
::sqlbackup.bat
::
c:
::
cd\
::
cd sqlbackup
::
set path="C:\Program Files\7-Zip\
::
7zG e z:\mysql-total-Fri.sql.gz
::
set path="C:\Program Files\MySQL\MySQL Server 5.5\bin\"
::
mysql.exe " --defaults-file=C:\Program Files\MySQL\MySQL Server 5.5\my.ini" "-uroot" "-p"
::
::-->TOT HIER GAAT HET GOED, VRAAGT HIER HANDMATIGE INLOG (PASSWORD), WAT IK GEAUTOMATSEERD WIL HEBBEN, MAAR HOE?<--
::
::
:: nu nog het upload commando voor de sql database zie: -> \. c:/sqlbackup/mysql-total-Fri.sql
Ik hoop dat er iemand is die hier even naar wil kijken, ALVAST BEDANKT! _/-\o_

'Heb ik eindelijk mn kamer opgeruimd, is de wereld een puinhoop'


Acties:
  • 0 Henk 'm!

  • CH4OS
  • Registratie: April 2002
  • Niet online

CH4OS

It's a kind of magic

Vervang
code:
1
mysql.exe " --defaults-file=C:\Program Files\MySQL\MySQL Server 5.5\my.ini" "-uroot" "-p"

voor
code:
1
mysql.exe " --defaults-file=C:\Program Files\MySQL\MySQL Server 5.5\my.ini" "-uroot" "-pJEWACHTWOORDAANDEZEpVAST"
en je bent klaar. :) Overigens is dit op veel plaatsen terug te vinden met Google.

EDIT:
De manual van MySQL schrijft het iets anders, principe is echter wel hetzelfde:
code:
1
mysql --user=user_name --password=your_password db_name

[ Voor 46% gewijzigd door CH4OS op 12-10-2012 15:01 ]


Acties:
  • 0 Henk 'm!

  • Raymond P
  • Registratie: September 2006
  • Laatst online: 11:28
De bedoeling is dat je de commands die je wilt uitvoeren direct meegeeft aan mysql.exe
Een voorbeeld vind je hier Mysql.com

Misschien is het ook handig voor je om gelijk even naar mysqldump te kijken.

- knip -


Acties:
  • 0 Henk 'm!

  • millman
  • Registratie: November 2005
  • Laatst online: 05-09 00:12

millman

6708Mhz @ -185c

Topicstarter
Beste Heren, alvast ebdankt voor de tips, de inlog was ik inmiddels al uitgekomen, volgens scriptje 3:

mysql --password=secret --user=username <- hiermee werkt alles prima.

Als laatst wilde ik de database ook automatisch uploaden, echter voert ie nu de laatste regel helemaal niet uit

\. c:/sqlbackup/mysql-total-Fri.sql

In ieder geval ziet het script er nu zo uit:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
::
::sqlbackup.bat
::
c:
::
cd\
::
cd sqlbackup
::
set path="C:\Program Files\7-Zip\
::
7zG e z:\mysql-total-Fri.sql.gz
::
set path="C:\Program Files\MySQL\MySQL Server 5.5\bin\"
::
mysql --password=xxxxxxxx --user=root 
::
mysql \. c:/sqlbackup/mysql-total-Fri.sql \g <- NU DEZE NOG


Even voor de situatieschets. Deze sql database is de niet-live dev omgeving, die we wel dagelijks up-to-date willen hebben. Op de fileserver komen de SQL dumps binnen als rar, die volgens het scriptje uitgepakt in de sql backupmap komen. Die moeten dus weer in de dev omgeving geupload worden.. :)

[ Voor 17% gewijzigd door millman op 12-10-2012 15:50 ]

'Heb ik eindelijk mn kamer opgeruimd, is de wereld een puinhoop'


Acties:
  • 0 Henk 'm!

  • CH4OS
  • Registratie: April 2002
  • Niet online

CH4OS

It's a kind of magic

Dan denk ik dat het verstandiger en makkelijker in te regelen is met mysqldump, die kan, zover ik weet zowel exporteren als importeren.

Acties:
  • 0 Henk 'm!

  • millman
  • Registratie: November 2005
  • Laatst online: 05-09 00:12

millman

6708Mhz @ -185c

Topicstarter
Bedankt voor je antwoord, echter is mij expliciet gevraagd er een batch-file van te maken. Ben nu al een aardig eind, alleen die laatste regel nog niet. Had gehoopt op een quickfix ;) Ben zelf nog verder aan het zoeken, maar mocht iemand voor die laatste regel een oplossing hebben, graag.

'Heb ik eindelijk mn kamer opgeruimd, is de wereld een puinhoop'


Acties:
  • 0 Henk 'm!

  • CH4OS
  • Registratie: April 2002
  • Niet online

CH4OS

It's a kind of magic

Ik bedoelde gebruik maken van mysqldump ín de batchfile, wat Raymond P ook suggereerde.

[ Voor 22% gewijzigd door CH4OS op 12-10-2012 17:03 ]


Acties:
  • 0 Henk 'm!

  • millman
  • Registratie: November 2005
  • Laatst online: 05-09 00:12

millman

6708Mhz @ -185c

Topicstarter
Het punt is dat de regel die ik heb aangemaakt handmatig wel werkt in de commandline van MYSQL

\. c:/sqlbackup/mysql-total-Fri.sql

Op deze manier upt ie m rechtstreeks naar de database, echter in het batchscript niet. Ik dacht dat het een kleine aanpassing zou zijn waardoor het wel zou werken. Helaas die aanpassing nog niet gevonden. Verder zal ik eens uitzoeken hoe dat gaat, sqldump in het batchscript opnemen. Ben al; aan t lezen geslagen. Overigens heb ik voor zeker 50% geen idee hoe sql in elkaar zit. Heb het werkend gekregen door trial and error..


oftewel, Noob-alert! :P

Edit:

Gevonden! Het werkt als je die laatste regel toevoegt aan de 'inlog regel', dan ziet het er zo uit:

code:
1
mysql --password=xxxxxxx --user=root  < c:/sqlbackup/mysql-total-Fri.sql

[ Voor 14% gewijzigd door millman op 12-10-2012 17:16 ]

'Heb ik eindelijk mn kamer opgeruimd, is de wereld een puinhoop'


Acties:
  • 0 Henk 'm!

  • Raymond P
  • Registratie: September 2006
  • Laatst online: 11:28
Ehm ja.
Niet voor het een of ander, maar beter lezen had je twee uur gescheeld.

- knip -


Acties:
  • 0 Henk 'm!

  • millman
  • Registratie: November 2005
  • Laatst online: 05-09 00:12

millman

6708Mhz @ -185c

Topicstarter
Hey Ramond,

Ik had het gelezen en uitgevoerd wat je zei, echter doordat ik niet wist hoe die toevoeging eruit moest komen te zien lukte het niet. Had in verschillende formats geprobeerd en nu lukte die.. Erg bedankt voor jullie hulp heren!

toppiejoppie!

'Heb ik eindelijk mn kamer opgeruimd, is de wereld een puinhoop'


Acties:
  • 0 Henk 'm!

  • TheVMaster
  • Registratie: Juli 2001
  • Laatst online: 11:15

TheVMaster

Moderator WOS
Ehh..sorry wat heeft dit met Windows Clients te maken? SQL = geen Windows XP, Vista, 7 of 8 dussuh...

MOVED!

Acties:
  • 0 Henk 'm!

  • millman
  • Registratie: November 2005
  • Laatst online: 05-09 00:12

millman

6708Mhz @ -185c

Topicstarter
Nou het ging niet zozeer om de sql in eerste instantie, maar om een batchfile in windows te maken.. Vandaar gekozen tussen serversoftware en windows client.. Lastige keuze..

'Heb ik eindelijk mn kamer opgeruimd, is de wereld een puinhoop'


Acties:
  • 0 Henk 'm!

  • The Eagle
  • Registratie: Januari 2002
  • Nu online

The Eagle

I wear my sunglasses at night

Daarnaast, mag ik even heel teleurgesteld zijn over het feit dat je SET PATH gebruikt om bijvoorbeeld je 7zip aan te roepen? Je weet hoe path variabelen kunnen reageren he? Als je de ene zet ben je soms al de rest kwijt ;)

Als je het commando cd /d gebruikt ipv dat "set path" sta je er meteen en heb je die hele path variabele niet nodig.

Overigens kan het geheel volgens mij zelfs in 1 regel gevat worden, maar aangezien het een leuke opdracht is voor werk / stage mag je dat lekker zelf uitzoeken ;)
Die dubbele in je script zijn iig alvast sowieso niet nodig ;)

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


Acties:
  • 0 Henk 'm!

  • millman
  • Registratie: November 2005
  • Laatst online: 05-09 00:12

millman

6708Mhz @ -185c

Topicstarter
The Eagle schreef op vrijdag 12 oktober 2012 @ 23:35:
Daarnaast, mag ik even heel teleurgesteld zijn over het feit dat je SET PATH gebruikt om bijvoorbeeld je 7zip aan te roepen? Je weet hoe path variabelen kunnen reageren he?
Uhh nee?
Als je de ene zet ben je soms al de rest kwijt ;)
Ik ben een absolute noob met programmeren, sterker nog, dit is mijn allereerste "frutsel" ooit.. Heb in een ver verleden op 8088 met dos gewerkt (lees, een spelletje starten), in 'word' een html site gefrutseld (ik bespaar je de detail) en heb verder alleen veel kennis over hardware. Dus "bij de ene zet ben je de rest kwijt?" doesn't cut it. :P
Als je het commando cd /d gebruikt ipv dat "set path" sta je er meteen en heb je die hele path variabele niet nodig.

Overigens kan het geheel volgens mij zelfs in 1 regel gevat worden, maar aangezien het een leuke opdracht is voor werk / stage mag je dat lekker zelf uitzoeken ;)
Die dubbele in je script zijn iig alvast sowieso niet nodig ;)
Ik heb echt lol gehad met zoeken en klooien, en bijna euforisch toen t werkte.. echt tof! ik ga proberen je hints te gebruiken om het scriptje op te schonen... thnx! ...enne, met 33jaartjes jong doe je geen stage meer hoor.. ;)

[ Voor 9% gewijzigd door millman op 13-10-2012 01:28 ]

'Heb ik eindelijk mn kamer opgeruimd, is de wereld een puinhoop'


Acties:
  • 0 Henk 'm!

  • millman
  • Registratie: November 2005
  • Laatst online: 05-09 00:12

millman

6708Mhz @ -185c

Topicstarter
Heren,

Het script werkt, echter kom ik tot een volgend probleem:

Als het script is uitgevoerd en de sql is geupload van 'live' naar 'dev' omgeving, dan is de user en wachtwoord overgenomen van de live omgeving. Hierdoor werken daarna de scripts niet meer, gezien het wachtwoord dus anders is. Heeft iemand al eerder met dit bijltje gehakt? (vast wel)

Het script ziet er nu als volgt uit:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
::
::sqlbackup.bat
::
c:
::
cd\
::
cd sqlbackup
::
set path="C:\Program Files\7-Zip\
::
7zG e z:\mysql-total-Fri.sql.gz
::
set path="C:\Program Files\MySQL\MySQL Server 5.5\bin\"
::
mysql --password=xxxxxxx --user=root  < c:/sqlbackup/mysql-total-Fri.sql
::
del mysql-total-Thu.sql


Ik hoop dat iemand mij kan assisteren.. wederom dank!

'Heb ik eindelijk mn kamer opgeruimd, is de wereld een puinhoop'


Acties:
  • 0 Henk 'm!

  • The Lord
  • Registratie: November 1999
  • Laatst online: 11:37
millman schreef op dinsdag 16 oktober 2012 @ 15:41:
mysql --password=xxxxxxx --user=root < c:/sqlbackup/mysql-total-Fri.sql
IMHO: Clear text password in een backup script = very, very, very, very evil.

geeft geen inhoudelijke reacties meer


Acties:
  • 0 Henk 'm!

  • millman
  • Registratie: November 2005
  • Laatst online: 05-09 00:12

millman

6708Mhz @ -185c

Topicstarter
Ik weet het, daarom kom ik ook tot dit probleem. Het password van de live omgeving willen wij daarom niet in het script opnemen. Voor lokaal hebben wij hier geen problemen mee en is dit een weloverwogen beslissing.

Als het voor ons geen probleem was, dan hadden we de user en password van de live omgeving wel verwerkt in het script! Maar bedankt voor je oplettendheid.

'Heb ik eindelijk mn kamer opgeruimd, is de wereld een puinhoop'


Acties:
  • 0 Henk 'm!

  • The Eagle
  • Registratie: Januari 2002
  • Nu online

The Eagle

I wear my sunglasses at night

Heb dan maar even voor je mijn google-fu aangeslingerd. Wat jij namelijk eigenlijk wilt is OS authenticatie. MYSQL ondersteunt dat middels een plugin: http://dev.mysql.com/doc/...uthentication-plugin.html
Voor zover ik er doorheen scrollde lijkt het me een kwestie van parameters zetten en een specifieke user aanmaken voor de backups, of desnoods een group er aanhangen. Hint: gebruik de specifieke OS user war je mysql onder draait, en trap daarmee via de Windows scheduler je script af, dan draait je shellscript meteen onder et juiste account - dat kun je namelijk meegeven ;)

Verder heb ik de vrijheid genomen om je scriptje dan maar even voor je in te korten naar die ene regel. Kijk eens op dit werkt:

code:
1
2
3
4
cd /d c:\sqlbackup
"C:\Program Files\7-Zip\7zG e z:\mysql-total-Fri.sql.gz"
"C:\Program Files\MySQL\MySQL Server 5.5\bin\mysql --password=xxxxxxx --user=root  < c:/sqlbackup/mysql-total-Fri.sql"
del mysql-total-Thu.sql


En volgens mij moet dit ook werken:
code:
1
2
3
4
5
set mysqloperpswd=xxxxxxx
cd /d c:\sqlbackup
"C:\Program Files\7-Zip\7zG e z:\mysql-total-Fri.sql.gz"
"C:\Program Files\MySQL\MySQL Server 5.5\bin\mysql --password=%xxxxxxx% --user=root  < c:/sqlbackup/mysql-total-Fri.sql"
del mysql-total-Thu.sql

Dan heb je een vrijwel generiek script voor je DB, moet je alleen idd het password nog aanpassen voor de betreffende omgeving. Maar als je toch die OS authenticated user aan gaat maken voor je backups kan ook dat ding weg, dat hoef je voor zover ik kan zien alleen nog maar de user mee te geven, of misschien zelfs dat niet eens :)

Overigens is het me nog steeds een raadsel waarom je die :: telkens gebruikt. Dit is simpelweg een .cmd scriptje toch :?

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


Acties:
  • 0 Henk 'm!

  • millman
  • Registratie: November 2005
  • Laatst online: 05-09 00:12

millman

6708Mhz @ -185c

Topicstarter
Wow.... Just, WOW! Bedankt voor je goede werk en uitleg! Ik ga vandaag een en ander van je uitleg testen, incluis de plugin! Uiteraard een report terug als en of het werkt. Veel dank!

Je wil aan het eind van de maand toch geen salaris hebben hoop ik ;)

Topper alvast!

Ohja,

Het is een batchfile, (.BAT), die dubbele punten had ik ergens gezien, en het zag er daardoor overzichtelijk uit. Ik had begrepen dat je na die dubbele punt een text kon neerzetten die als plain text in het script te lezen was. Ik begrijp dat die er uit kunnen?

[ Voor 33% gewijzigd door millman op 17-10-2012 13:57 ]

'Heb ik eindelijk mn kamer opgeruimd, is de wereld een puinhoop'


Acties:
  • 0 Henk 'm!

  • The Eagle
  • Registratie: Januari 2002
  • Nu online

The Eagle

I wear my sunglasses at night

Een dubbele punt gebruik je als een toekenning voor bijvoorbeeld een sectie, maar dat is in jouw geval totaal niet relevant. Die kunnen dus allemaal weg :)
Daarbij: ik ga er vanuit dat dit onder windows moet draaien, DOS servers bestaan namelijk niet meer ;) Dan moet je er een .cmd extensie van maken, geen .bat ;)

Als je een tekst wilt laten zien in een script dan gebruik je REM, of @echo
Maak van het onderstaande stukje code maar eens een cmd scriptje en start het:

code:
1
2
3
4
5
6
REM regel 1 dit is tekst
echo regel 2 dit is ook tekst
pause
@echo regel 3 en dit ook
@pause
pause

Dan zie je ook meteen hoe je evt een scriptje kunt pauzeren, is handig tijdens het bouwen, kun je mooi de output zien ;)

[ Voor 9% gewijzigd door The Eagle op 17-10-2012 16:14 ]

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

Pagina: 1