Backup Database with batch file and Task Scheduler

Backup Database with batch file and Task Scheduler

Apa itu Task Scheduler?

Task Scheduler adalah komponen Microsoft Windows yang menyediakan kemampuan untuk menjadwalkan launch program atau skrip pada waktu yang ditentukan sebelumnya atau setelah interval waktu yang ditentukan. Komponen ini pertama kali diperkenalkan di Microsoft Plus! untuk Windows 95 sebagai Agen Sistem tetapi diubah namanya menjadi Task Scheduler di Internet Explorer 4.0 dan Windows 98.

Sumber : https://en.wikipedia.org

Kali ini admin akan membuat cara Backup Database dan Penjadwalan dengan Task Scheduler.

Persiapan

  1. Siapkan file dengan nama script.bat (bisa dengan nama lain)
  2. buat folder misakan C:\Source\Backup\data\

Tulis script dibawah ini dan save dengan nama script.bat

@echo off

set host="localhost"
set dbUser=root
set dbPassword=""
set backupDir="C:\Source\Backup\data\"
set mysqldump="C:\wamp64\bin\mariadb\mariadb10.4.10\bin\mysqldump.exe"
set mysqlDataDir="C:\wamp64\bin\mariadb\mariadb10.4.10\data"

:: get date
for /f "delims=" %%a in ('wmic OS Get localdatetime ^| find "."') do set dt=%%a
set year=%dt:~0,4%
set mm=%dt:~4,2%
set day=%dt:~6,2%

:: echo %dt%
:: cek for date type eg. 20200824

if %mm%==01 set Month=Jan
if %mm%==02 set Month=Feb
if %mm%==03 set Month=Mar
if %mm%==04 set Month=Apr
if %mm%==05 set Month=May
if %mm%==06 set Month=Jun
if %mm%==07 set Month=Jul
if %mm%==08 set Month=Aug
if %mm%==09 set Month=Sep
if %mm%==10 set Month=Oct
if %mm%==11 set Month=Nov
if %mm%==12 set Month=Dec

set dirName=%day%-%Month%-%year%

:: remove echo here if you like
echo Save to path %backupDir%\%dirName%

:: switch to the "data" folder
pushd "%mysqlDataDir%"

:: create backup folder if it doesn't exist
if not exist %backupDir%\%dirName%\   mkdir %backupDir%\%dirName%

:: iterate over the folder structure in the "data" folder to get the databases
for /d %%f in (*) do (
	:: remove echo here if you like
	echo processing folder "%%f"

	%mysqldump% --host=%host% --user=%dbUser% --password=%dbPassword% --single-transaction --add-drop-table --databases --routines %%f > %backupDir%\%dirName%\%%f.sql
)
popd

Penjelasan:

set host="localhost"
set dbUser=root
set dbPassword=""
set backupDir="C:\Source\Backup\data\"
set mysqldump="C:\wamp64\bin\mariadb\mariadb10.4.10\bin\mysqldump.exe"
set mysqlDataDir="C:\wamp64\bin\mariadb\mariadb10.4.10\data"

Sesuaikan dengan path file di komputer kamu yak, contoh diatas menggunakan mariadb untuk dump databasenya. Sesuaikan path file mysql jika menggunakan mysql sebagai penyimpanan databasenya.

:: get date
for /f "delims=" %%a in ('wmic OS Get localdatetime ^| find "."') do set dt=%%a
set year=%dt:~0,4%
set mm=%dt:~4,2%
set day=%dt:~6,2%

:: echo %dt%
:: cek for date type eg. 20200824

if %mm%==01 set Month=Jan
if %mm%==02 set Month=Feb
if %mm%==03 set Month=Mar
if %mm%==04 set Month=Apr
if %mm%==05 set Month=May
if %mm%==06 set Month=Jun
if %mm%==07 set Month=Jul
if %mm%==08 set Month=Aug
if %mm%==09 set Month=Sep
if %mm%==10 set Month=Oct
if %mm%==11 set Month=Nov
if %mm%==12 set Month=Dec

Kode diatas untuk parsing penamaan database yang di dump misal (24-Aug-2020) jika fungsi echo %dt% di aktifkan maka akan menampilkan 20200824

if not exist %backupDir%\%dirName%\   mkdir %backupDir%\%dirName%

fungsi diatas untuk mengecek folder yang masih tersedia, jika tidak ada maka akan dibuatkan folder mkdir %backupDir%\%dirName%

%mysqldump% --host=%host% --user=%dbUser% --password=%dbPassword% --single-transaction --add-drop-table --databases --routines --log-error=%errorLogPath% mydatabase > %backupDir%\%dirName%\mydatabase.sql

Gunakan kode diatas untuk dump dengan database yang di pilih. Hilangkan fungsi for /d %%f in (*) do ( :: )

Kemudian save untuk menyimpan file script.bat dan persiapkan Task Scheduler

Setting Task Scheduler

Tekan windows + R keys pada keyboard untuk membuka run, kemudian input dengan taskschd.msc seperti gambar berikut.

Klik OK sehingga tampil windows Task Scheduler

task scheduler

Untuk menambah penjadwalan klik Create Basic Task.. pada navigasi Action sebelah kanan.

task scheduler

Masukan Name: dan Description: misalnya di contoh admin masukan name Backup Local, kemudian Next> untuk melanjutkan

task scheduler

Silakan ditentukan interval backup sebagai Trigger penjadwalan backupnya, klik Next> untuk melanjutkan.

task scheduler

Tentukan juga jam dan waktu untuk memulai backup. Kemudian Next>

task scheduler

Pilih jenis tugas atau source programnya. Next> untuk melanjutkan

task scheduler

Browse file script.bat yang sebelumnya sudah dibuat, kemudian Next>

task scheduler

Klik Finish untuk memulai penjadwalan di waktu yang sudah di tentukan diatas.

Atau secara manual dengan mengklik 2xpada file script.bat

Demikian tulisan kali ini, semoga bermanfaat. Salam Barbar!

Author Profile

Ricki K
Hi my name is Ricki, I am a blogger from Indonesia. Founder of erkamoo.com, Besides creating Web Applications, I also write about Blogging Tips and Tutorials on Programming, Databases, HTML.