2011/07/08

අද කියන්න හදන්නේ windows වල mysql backup එකක් කොහොමද ස්වයංක්‍රීයව සිදු කරන්නේ කියල. Linux වල කරන හැටි තව ටික දවසකින් දාන්නම්. මමත් මේ ක්‍රමය හොයාගන්න කලින් කලේ backup එකක් ගහලා ඒක zip කරලා (ඒ අදාල දිනේ නමින්) ෆෝල්ඩරයක් හදලා ඒකට දාන එක. ඒත් ඒක හැමදාම කරන එක කරදරයක් නිසා තමා මේ ගැන හොයන්න ගත්තේ. ඇත්තටම මේක කරන්න මම යොදාගන්නේ bat file එකක්.
mysql backup එකක් අපිට phpmyadmin මගින් හෝ වෙනත් මෘදුකාංගයක් භාවිතා කරලා ගන්න පුළුවන්. උදාහරණයක් විදියට මම කලින් ලිපියක කියලා තිබුනා sqlyog මතක ඇතිනේ. තව මෘදුකාංග ගණනාවක් මේ සදහා සහය දක්වනවා. මම නම් සාමාන්‍යයෙන් mysql backup කරන්නේ mysql වලම එන mysqldump කියන command එකෙන්. Mysql ස්ථාපනය කරලා තියන ෆෝල්ඩරයේ තියනවා mysqldump.exe කියලා ෆයිල් එකක්. එක තියෙන්නේ bin කියන ෆෝල්ඩරයේ. ඒ කියන්නේ මෙන්න මේ path එකේ  "C:\Program Files\mysql\mysql5.0.51b\bin\mysqldump.exe"

 හරි දැන් බලමු කොහොමද මේ mysqldump.exe කියන ෆයිල් එකෙන් mysql dump එකක් ගහන්නේ කියලා.(ඒ කියන්නේ backup එකක්).‍ මේක command prompt එකෙන් කරන්නත් පුළුවන් ඒත් bat file එකක් ලියලා run කරන එක ලේසියි. bat file එකක් ලියන්න මුලින්ම notepad එක විවෘත කරගන්න, ඊට පස්සේ මේ text එක notepad එකේ type කරගන්න

mysqldump -uuser -ppassword dabname  >backup.sql

ඊට පස්සේ මේක Save කරගන්න filename.bat කියන විධියට. Filename කියන තැනම කැමති නමක් දාන්න පුළුවන්. Extention එක .bat වෙන්න විතරයි ඕන. හැබැයි මතක තියාගන්න මේකෙදි  මේ command එක පාවිච්චි කරද්දි තම තමන්ගේ database user name, password හැටියට මේ command එක වෙනස් වෙනවා.
උදාහරණයක් ගත්තොත්
Mysql User Name           – root
Mysql password              – 1234
Mysql Database name   – mydatabase
Mysql backup name        – myback.sql 
මේ උඩ තියෙන විදියට username, password, dbname තිබ්බොත් command එක වෙන්නේ මෙන්න මේ පහල තියන විදියට
mysqldump –uroot p1234 mydatabase >C:\myback.sql

හරි දැන් ඕකෙන් වෙන්නේ Mysql data base එක backup  වෙන එක. හැබැයි මතක තියාගන්න මේ bat file එක run කරන පාත් එකේම mysqldump.exe කියන file එක තියෙන්න ඕන. නැත්තම් මේ mysqldump කියන command එක වැඩ කරන්නේ නෑ. හැබැයි ඒකටත් විකල්පයක් තියනවා. කරන්න තියෙන්නේ mysqldump.exe කියන file එක C:\WINDOWS\system32 කියන තැනට කොපි කරන එකයි. එතකොට කොතන ඉදන් bat file එක run කෙරුවත් වැඩ කරනවා. දැන් backup එක ගහන හැටි දන්නවනේ. ඊට පස්සේ බලමු මේක zip කරන්නේ කොහොමද කියලා.

මේකත් bat file එකකින්ම කරන්න ඕන නිසා අපට අවශ්‍යය වෙනවා command line එකේදිම zip කරගන්න පුළුවන් tool එකක්. ඒකට මම යොදාගන්නේ 7za කියන Free Open Source tool එක. Command line Zip කරන්න පුලුවන් ඕනම software එකක් මේ වැඩේට යොදාගන්න පුළුවන්. මට හම්වුනේ මේක තමා. මේ 7za කියන command එක වැඩ කරන්නත් ඒ bat file තියන තැනම 7za.exe file එක තියෙන්න ඕන. ඉතින් ඒ අවුල මගහැරගන්න කරන්න තියෙන්නේ කලින් කීවා වගේම C:\WINDOWS\system32 වලට 7za.exe ෆයිල් එක කොපි කරන එක.

මේතියෙන්නේ මේ 7za කියන tool එකෙන් කොහොමද zip කරන්නේ කියලා සරල උදාහරණයක්.
7za a -tzip "C:\mybackup.zip" "c:\mydump.sql"
Command එක ලියන්න ඕන විදිය තමා මේ යටින් ලියලා තියෙන්නේ.
7za a -tzip "Destination path"  "Source Path"
 උදාහරණයක් විදියට අපි හිතමු මගේ backup එක save වෙන්නේ C:\mybackup.sql විදියට කියලා. මට ඕන ඒක zip කරලා C:\mybackup.zip කියන තැන save කරන්න. එතකොට command එක වෙන්නේ මෙහෙමයි
 
7za a -tzip "C:\mybackup.zip" "c:\ mybackup.sql"

හරි දැන් zip කරන්න පුළුවන් නිසා බලමු ඊලගට මොකද්ද කරන්න ඕන කියලා. දැන් sql එක backup කරලා zip කරන්න පුළුවන්, දැන් ඕන වෙන්නේ අද දවසේ නමින් ෆෝල්ඩර් එකක් හදාගන්න පුළුවන්  software එකක්  (ඒ කියන්නේ 2011-07-08 වගේ). ඒකට අමුතුවෙන් software ඕන නෑ ඒක  Windows වලම එක command එකකින් කරන්න පුලුවන්. දැන් කියන්නම් ඊලට මොකද කරන්නේ කියලා. මේ පහල තියෙන command එකෙන් පුළුවන් අද දවසේ නමින් ‍folder එකක් හදන්න.
 
%date:~10,4%-%date:~4,2%-%date:~7,2%
උදා- md %date:~10,4%-%date:~4,2%-%date:~7,2%

උඩ තියන විදියට command prompt එකේ ගැහුවොත් අද දවසේ නමට folder එකක් හදයි ‍”2011-07-08 ” මේ විදියේ නමකින්. හරි දැන් ඒකත් පැහැදිලියිනේ. දැන් මම කරන්න හදන්නේ මේ හැම command එකක්ම එකතු කරලා bat file එක හදාගන්න එක.

මම ‍මගේ sql backup එක c:\myback.sql තැනට හැමදාම සේව් කරගන්න ඕන කියලා හිතන්නකෝ. දැන් මට ‍ඕන‍ මේ backup එක මගේ D:\daily backup\ කියන folder එකේ දවස් පිළිවෙලට save වෙන්න. උදාහරණයක් ගත්තොත්
“D:\daily backup\2011-07-08\sql.zip”
“D:\daily backup\2011-07-09\sql.zip”
“D:\daily backup\2011-07-10\sql.zip”
“D:\daily backup\2011-07-11\sql.zip” මෙන්න මේ වගේ.

මම පහලින් ලියනවා මේක කරන්න හදන bat file එක මේ විදියට.
 
mysqldump -uroot -ppassword mydb  >c:/myback.sql
md “D:\daily backup\%date:~10,4%-%date:~4,2%-%date:~7,2%”
7za a -tzip "D:\daily backup\%date:~10,4%-%date:~4,2%-%date:~7,2%\SQL.zip" "c:\myback.sql"

ඔන්න ඔය විදියටයි තනි bat file එකක මේක ලියන්නේ. ඊට පස්සේ අවසාන වශයෙන් schedule task භාවිතා කරලා තමන්ට අවශ්‍යය වෙලාවට මේක schedule කරගන්න. පොස්ට් එක ගොඩක් ලොකුවුනාට කෙරෙන වැඩේ ගොඩක් සරලයි. පැහැදිලිව ලියන්න ඕන නිසයි මෙච්චර ලිපිය දික්වුනේ. තාමත් පැහැදිලි නැති තැනක් තියනවනම් comment එකක් දාන්නකෝ.

0 ප්‍රතිචාර :