Membuat Backup dan Restore SQL Database Codeigniter



Membuat Backup dan Restore SQL Database Codeigniter

Hai semua kali ini kami akan membahas bagaimana cara membuat backup dan restore SQL Database dengan Codeigniter terdiri dari Controller, Model View. Bagi temen-temen yang sedang ada project aplikasi dan dituntut untuk menggunakan web base (bukan desktop) tentulah dibutuhkan fitur tambahan yaitu backup dan restore.
Artikel kali ini dibuat berdasarkan pengalaman, awalnya mencari-cari di mbah Google namun masih sulit untuk menyelesaikan masalah kebutuhan yang saya inginkan. Seringkali ditemukan error seperti error MIME karena gagal upload file format .sql dll. Maka dari situ saya rangkun hasil eksperimen yang sudah saya coba sendiri dan cukup berhasil menyesuaikan kebutuhan aplikasi.

Berikut ini script atau coding lengkapnya

CONTROLLER :

public function menubackuprestore()
    {
        $this->load->model('nama_model');
        $data['tabel'] = $this->nama_model->tampiltabel(); //AMBIL DATA TABEL-TABEL
        $this->load->view('nama_view',$data);
    }

public function backup()
    {

      $tabel = $this->input->post('tabel');
      $this->load->dbutil();
      $prefs = array(    
              'tables'      => array($tabel),
                    'format'      => 'zip',            
                    'filename'    => 'my_db_backup.sql'
                  );
      $backup =& $this->dbutil->backup($prefs);
      $db_name = 'backup-on-'. $tabel . '-' . date("d-m-Y") .'.zip'; //NAMAFILENYA
      $save = 'pathtobkfolder/'.$db_name;
      $this->load->helper('file');
      write_file($save, $backup);
      $this->load->helper('download');
      force_download($db_name, $backup);
    }
public function restore()   
    {

        $this->load->helper('file');
        $this->load->model('sismas_m');
        $config['upload_path']="./assets/database/";
        $config['allowed_types']="jpg|png|gif|jpeg|bmp|sql|x-sql";
        $this->load->library('upload',$config);
        $this->upload->initialize($config);

        if(!$this->upload->do_upload("datafile")){
         $error = array('error' => $this->upload->display_errors());
         echo "GAGAL UPLOAD";
         var_dump($error);
         exit();
        }

        $file = $this->upload->data();  //DIUPLOAD DULU KE DIREKTORI assets/database/
        $fotoupload=$file['file_name'];
                   
          $isi_file = file_get_contents('./assets/database/' . $fotoupload); //PANGGIL FILE YANG TERUPLOAD
          $string_query = rtrim( $isi_file, "\n;" );
          $array_query = explode(";", $string_query);   //JALANKAN QUERY MERESTORE KEDATABASE
              foreach($array_query as $query)
              {
                    $this->db->query($query);
              }

          $path_to_file = './assets/database/' . $fotoupload;
            if(unlink($path_to_file)) {   // HAPUS FILE YANG TERUPLOAD
                 redirect('home/setting');
            }
            else {
                 echo 'errors occured';
            }
       
    }


Cara kerja controller diatas berikut penjelasannya :

* Fungsi menubackuprestore, untuk menampilkan view dimana didalam view tersebut terdapat option tabel yang akan di backup dan ada browse file yang akan direstore
* Fungsi backup, akan mengambil data tabel yang dipilih (akan dibackup) kemudian set format dan namafile lalu lakukan download file tersebut kedalam format .zip
* Fungsi restore, mengupload file berformat .sql terlebih dahulu ke direktori /assets/database. Kemudian panggile file tersebut untuk dibaca isinya dan jalankan query untuk merestore sesuai dengan isi file tersebut. Setelah selesai file tersebut dihapus.


MODEL :

public function tampiltabel()
    {
       return $this->db->query("show tables")->result();
    }

Fungsi tampiltabel, untuk menampilkan semua nama tabel yang telah dibuat didatabase


VIEW :

<form action="<?php echo base_url();?>home/backup" method="post">
    <select required="" name="tabel">
        <?php
           foreach ($tabel as $baris) {  ?>
            <option value="<?php echo $baris->Tables_in_db_sismas; ?>"><?php echo $baris->Tables_in_db_sismas; ?></option>
        <?php } ?>
    </select>
    <button type="submit" >Backup Database</button>
</form>


<?php echo form_open_multipart('home/restore');?>
    <input type="file" name="datafile" id="datafile" />
    <button type="submit" >Upload Database</button>
</form>


PENTING! !
Langkah terakhir adalah menambah MIMES agar saat mengupload file berformat .sql tidak error
Buka Config > mimes.php

dibawah return array(
tambah code :
'sql'   =>  array('application/octet-stream', 'text/sql', 'text/plain','text/x-sql'),



Nah demikian cara mudah membuat fitur backup dan restore database sql di Codeigniter, semoga bisa bermanfaat bagi temen-temen yang sedang menyelesaikan tugas, project dll.
Salam Sukses

- Original artikel by PiiZaa (Rafi Orilya)

4 komentar

  1. liat model di sismas_m karna saat restore querynya failed

    BalasHapus
  2. Mudah2an di bales kebetulan saya menggunakan format zip om dalam backup gimana cara upload zip ke database? kalo di php admin langsung kan bisa

    BalasHapus
    Balasan
    1. Bisa menggunakan cara ini https://www.rafi-orilya.com/2022/01/auto-backup-database-mysql-phpmyadmin.html

      Hapus

Komentar anda sangat dibutuhkan bagi kemajuan kami untuk terus berkarya.
Diharapkan :
* Berkomentarlah dengan bahasa yang baik
* Tidak ada unsur SARA, SPAM, PORNO
* Tidak merugikan orang lain
* Menunjukkan identitas yang jelas bukan Anonim

Diperkenankan :
* Komentar promosi link web anda
* Kritik & Saran

[Protected] by DMCA Protection Pro™
EmoticonEmoticon