Backup/Restore Database MySQL Menggunakan Batch File

Disebabkan oleh semakin banyaknya data, backup dan restore database adalah komponen yang penting dalam pemrograman database. Berikut ini adalah sekedar ide, bagaimana membuat backup/restore database mysql menggunakan batch file dan mengeksekusinya dengan CreateProcess

Sebelum membuat programnya, kita akan tinjau terlebi h dahulu sintak-sintak yang diperlukan untuk backup dan restore database mysql.

Backup Database
Untuk backup database, ada dua sintak pilihan yang digunakan:
  1. Jika database memakai password:
    mysqldump -uUserName -pPassword DatabaseName >  "PathFileName"

    Sebagai contoh, jika anda mempunyai database bernama School dan mempunyai user: admin, password: 123, maka sintak backup dapat ditulis sebagai berikut:

    mysqldump -uadmin  -p123 School  >   "c:\BackupDatabase\School.sql"
  2. Jika database tidak memakai password:
    mysqldump -uUserName DatabaseName >   "PathFileName"

    Sebagai contoh, jika anda mempunyai database bernama School dan mempunyai user: admin, maka sintak backup dapat ditulis sebagai berikut:

    mysqldump -uadmin  School  >   "c:\BackupDatabase\School.sql"
Restore Database
  1. Jika database memakai password:
    mysql -uUserName -pPassword  DatabaseName <  "PathFileName"

    Sebagai contoh, jika anda mempunyai database bernama School dan mempunyai user: admin, password: 123, maka sintak backup dapat ditulis sebagai berikut:

    mysql -uadmin -p123  School <  "c:\BackupDatabase\School.sql"
  2. Jika database tidak memakai password:
    mysql -uUser DatabaseName <  "PathFileName"

    Sebagai contoh, jika anda mempunyai database bernama School dan mempunyai user: admin, maka sintak backup dapat ditulis sebagai berikut:

    mysql -uadmin DatabaseName <  "c:\BackupDatabase\School.sql"
Implementasi dengan Pemrograman Delphi  
Ada tiga prosedure yang akan dibuat untuk mengimplementasikan program backup, yaitu program utama, program CreateProcess, dan program pembuat file batch.
  1. Program pembuat file batch
    Digunakan untuk membuat file batch yang berisi perintah backup/restore

    procedure BuatBatch(NamaFile,PathFile,Isi: String);
    var
        OutputFile : TextFile;
    begin
        AssignFile (OutputFile, PathFile + NamaFile);

        if FileExists(PathFile + NamaFile) then
            //Kalau filenya sudah ada ditambahkan dibawahnya
            Append(OutPutFile)
        else
            //Kalau filenya belum ada dibuat dulu filenya
            Rewrite (OutputFile);
        try
            Writeln (OutputFile, Isi);
        finally
          CloseFile (OutputFile);
        end;
    end;
  2. Program CreateProcess
    Menjalankan file batch dan menunggunya sampai eksekusi selesai dijalankan, kemudian baru menjalankan program berikutnya.

    function DoExecute(FileName: String; Visibility:Integer): CARDINAL;
    var
        AName     : array[0..512] of char;
        CurrentDir  : array[0..512] of char;
        WorkDir     : String;
        StartUpInfo : TStartupInfo;
        ProcessInfo : TProcessInformation;
    begin
        StrPCopy(AName, FileName);
        GetDir(0,WorkDir);
        StrPCopy(CurrentDir, WorkDir);
        FillChar(StartupInfo, SizeOf(StartupInfo),#0);
        StartupInfo.cb := System.SizeOf(StartupInfo);
        StartupInfo.dwFlags := STARTF_USESHOWWINDOW;
        StartupInfo.wShowWindow := Visibility;

        if (not CreateProcess(nil,AName,nil,nil,false,CREATE_NEW_CONSOLE or
          NORMAL_PRIORITY_CLASS,nil,CurrentDir,StartupInfo,ProcessInfo)) then
        begin
            Result := $FFFFFFFF;
            MessageBox(
               Application.Handle,
               PCHAR('Kesalahan ExecuteAndWait ' + #13#10 +
               SysErrorMessage(GetLastError)),'Kesalahan',0)
        end else
        begin
            try
            WaitforSingleObject(ProcessInfo.hProcess, INFINITE);
            GetExitCodeProcess(ProcessInfo.hProcess,Result);
            CloseHandle(ProcessInfo.hProcess);
            CloseHandle(ProcessInfo.hThread);
            except
              On E:Exception do ShowMessage(E.Message);
            end;
        end;
    end;
  3. Program Utama
    Program di bawah ini bisa diletakkan dimana saja. Sebagai contoh, anda bisa meletakkan di Button.

    Program ExecBackupRestoreMySQL(Jenis,User,Pass: String);
    var
        Isi, Perintah : String;
    begin
           NamaFileBatch := 'school.bat';
           PathFile := 'c:\Backup';
           Tempat :=  PathFile + '\' + NamaFileBatch;

           if trim(pass) = EmptyStr then
           begin
                //without password
                if trim(jenis) = '>' then
                    isi := 'mysqldump -u' + user + ' ' + db + ' ' + jenis + ' "' +  Tempat + '"'
                else
                    isi := 'mysql -u' + user + ' ' + db + ' ' + jenis + ' "' +  Tempat  + '"'
           end else
           begin
                 //using password
                if trim(jenis) = '>' then
                      Isi := 'mysqldump -u' + user + ' -p' + pass + '  ' + db + '  ' + jenis +  ' "' +  Tempat + '"'
                else
                     Isi := 'mysql -u' + user + ' -p' + pass + '  ' + db + '  ' + jenis +  ' "' +  Tempat +'"'
        end;

           BuatBatch(NamaFileBatch, PathFile, Isi);

          Perintah := PathFile + NamaFileBatch;

          if Not DoExecute(Perintah,SW_HIDE) <> $FFFFFFFF then
           begin
                ShowMessage('Terjadi kesalahan proses');
          end;

    end;
Contoh Pemakaiannya adalah sebagai berikut:

ExecBackupRestoreMySQL('>','admin','123');

Backup/Restore Database MySQL Menggunakan Batch File Rating: 4.5 Diposkan Oleh: Good Dreamer

5 comments:

  1. kita juga punya nih jurnal mengenai Database Mysql silahkan dikunjungi dan dibaca , berikut linknya
    http://repository.gunadarma.ac.id/bitstream/123456789/1054/1/50406179.pdf

    BalasHapus
  2. mas komponen yang di gunakan apa aja di delphinya untuk backup dan restore database?salam

    BalasHapus
  3. Penjelasan saya di artikel ini tidak memakai komponen sama sekali. Sepenuhnya lewat program

    BalasHapus
  4. Bagaimana kalau di lazarus ko error mas

    BalasHapus
    Balasan
    1. Saya belum pernah memakai Lazarus. Saya bisa tahu pesan error-nya apa, mungkin nanti saya akan cari tahu penyelesaiannya

      Hapus

Diberdayakan oleh Blogger.