PHP

Backup Database MySQL dengan PHP

Melakukan backup database MySQL dapat juga dilakukan dengan menggunakan script PHP sehingga untuk melakukan backup secara otomatis lebih mudah dilakukan.

\

Script ini dapat di jalankan di dalam task scheduler windows dengan mengarahkan url website  atau membuat fungsi di dalam website ketika melakukan tindakan tertentu akan menjalankan script backup database tersebut.

\

 

\

Berikut cara melakukan backup database MySQL dengan menggunakan bahasa pemrograman PHP:
Pertama periksa dan pastikan terlebih dahulu data yang diperlukan seperti host name, user, password, nama database dan direktori yang akan meletakkan file backup database. Sebagai contoh seperti di bawah ini

\

 

\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \
Hostlocalhost
Userroot
Password123456
Databasedatabase_test
DirektoriD:\\\\backup
\

 

\

Setelah mengetahui data yang diperlukan, selanjutnya buat folder baru dan beri nama backup di dalam web server. Sebagai contoh saya menggunakan web server xampp  jadi saya buat di dalam folder C:\\\\xampp\\\\htdocs. dan buat satu file PHP didalam folder C:\\\\xampp\\\\htdocs\\\\backup dan beri nama index.php kemudian copy script di bawah ini

\

 

\
$dbhost = 'host_db';
$dbuser = 'user_db';
$dbpass = 'password_db';
// $dbname = 'name_db'; //One Database
$dbname = array('name_db1','name_db2'); //Many Database

// Create Folder Backup
$dirpath = 'directory folder for save database';
$mode = '0777';
is_dir($dirpath) || mkdir($dirpath, $mode, true);

for($i = 0; $i < count($dbname);$i++){
  $command = 'c:/xampp/mysql/bin/mysqldump -h $dbhost -u $dbuser
  -p$dbpass $dbname[$i]> '.$dirpath.$dbname[$i].'.sql';
  system($command);
  echo 'Backup database '.$dbname[$i].' successfully\ ';
} 
\

 

\

Dan selanjutnya ubah beberapa data sesuai dengan pengaturan di database anda. kemudian untuk menjalankan script ini, buka pada browser dengan mengetikkan url http://localhost/backup. Jika berhasil browser akan menampilkan keterangan bahwa backup database successfully.

\


Selamat mencoba, Terima kasih.

Kenapa Backup dengan PHP?

Backup database MySQL menggunakan PHP sangat berguna untuk:

  • Backup terjadwal - Jalankan backup otomatis via cron job
  • Backup dari web interface - Tambahkan fitur backup di panel admin website
  • Backup remote - Backup database dari server lain tanpa akses SSH

Script Backup Lengkap

<?php $host = 'localhost'; $user = 'root'; $pass = 'password'; $dbname = 'nama_database'; $backup_dir = 'backups/'; $filename = $backup_dir . 'backup_' . date('Y-m-d_H-i-s') . '.sql';  // Koneksi database $conn = new mysqli($host, $user, $pass, $dbname); if ($conn->connect_error) die("Koneksi gagal: " . $conn->connect_error);  // Export struktur dan data $tables = $conn->query("SHOW TABLES"); $sql_dump = "-- Backup Database: $dbname "; $sql_dump .= "-- Date: " . date('Y-m-d H:i:s') . "  ";  while ($table = $tables->fetch_row()) {     $table_name = $table[0];     $result = $conn->query("SELECT * FROM $table_name");     $fields = $conn->query("SHOW COLUMNS FROM $table_name");          $sql_dump .= "DROP TABLE IF EXISTS `$table_name`; ";     // ... (lanjutan kode untuk generate CREATE TABLE dan INSERT statements) }  file_put_contents($filename, $sql_dump); echo "Backup berhasil: $filename"; ?>

Best Practices

  • Kompresi dengan gzip untuk menghemat storage
  • Enkripsi file backup untuk keamanan
  • Verifikasi integritas backup secara berkala
  • Simpan backup di lokasi terpisah (offsite)

Backup dengan Kompresi dan Notifikasi

Script backup yang lebih lengkap dengan kompresi dan notifikasi email:

<?php
function backupDatabase($host, $user, $pass, $dbname) {
    $filename = 'backup_' . $dbname . '_' . date('Y-m-d_H-i-s') . '.sql.gz';
    $command = "mysqldump -h $host -u $user -p$pass $dbname | gzip > backups/$filename";
    exec($command, $output, $return);
    
    if ($return === 0) {
        // Kirim notifikasi email
        $to = '[email protected]';
        $subject = "Backup Database $dbname Berhasil";
        $message = "Backup tersimpan: $filename (" . filesize("backups/$filename") . " bytes)";
        mail($to, $subject, $message);
        return true;
    }
    return false;
}

// Jadwalkan via cron: 0 2 * * * php /path/to/backup.php
?>

Rotasi Backup Otomatis

<?php
// Hapus backup lebih dari 30 hari
$files = glob('backups/*.sql.gz');
foreach ($files as $file) {
    if (filemtime($file) < strtotime('-30 days')) {
        unlink($file);
    }
}
?>


0 Comments


Leave a Reply

Comments with links or spam keywords will be rejected.
Scroll to Top