PHP istifadə edərək MySQL məlumat bazasının nüsxəsini çıxarmaq

Məlumat bazalarının nüsxəsini çıxarmaq, hər proqramçı üçün mütləq sayılan prosesslərdəndir. Mütəmadi olaraq məlumat bazalarını kopyalamaq, data itkisinin qarşısını alır və hər hansı bir problem yarandıqda məlumat bazasını geriyə yükləməyə şərait yaradır. Bu səbəbdən də, mümkündürsə tez-tez məlumat bazalarının nüsxəsini çıxarmaq ağıllı bir addım sayılır.

Əslində mySQL məlumat bazasını bir fayla köçürməyin bir çox yolu var. Adətən hostinq provayderlərinin idarə panellərində bunun üçün müəyyən bir bölmə mövcud olur və siz sadəcə bir kliklə məlumat bazasının klonunu çıxara bilərsiniz. Lakin aşağıda qeyd edəcəyimiz metodla siz PHP istifadə edərək də mySQL məlumat bazasının nüsxəsini asanlıqla yarada bilərsiniz.

Bəs hazır panel vasitəsilə yox, PHP vasitəsilə məlumat bazasının nüsxəsini çıxarmaq bizə nə kimi üstünlüklər verir?

Yuxarıda qeyd etdiyim idarəetmə panellərində mövcud olan nüsxələmə prosessi sizə hər dəfə ayrı bir iş yükü yaradacaq. Məsələn nüsxə çıxarmağı unutduğunuz vaxtlar ola bilər. Bu vaxtlarda yaşayacağınız hər hansısa bir problem zamanı məlumatları geri qaytarmaq kimi şansınız olmayacaq. Ancaq məlumat bazasını aşağıda göstərəcəyimiz üsuldan istifadə edərək, bu işi görəcək PHP faylı da bir cron-a əlavə edərək (məsələn: hər gün saat 24:00-da avtomatik fayl işə düşsün) bu proseduru avtomatikləşdirə bilərsiniz. Kodları birdəfə əlavə etdikdən sonra hər gün avtomatik olaraq nüsxələr əldə etmiş olacaqsınız.

PHP istifadə edərək MySQL məlumat bazasının nüsxəsini çıxarmaq

Bu yazımızda yuxarıda qeyd etdiyimiz prosess üçün lazım olan bütün PHP kodları backupDatabaseTables() funksiyasında bir araya gətirəcəyik. backupDatabaseTables() funksiyasını istifadə edərək müəyyən table-ları və ya bütün table-ları bir məlumat bazasının nüsxəsini asanlıqla SQL faylına yaza bilərsiniz. Hər hansı bir MySQL məlumat bazasını PHP istifadə edərək kopyalamaq üçün sizə aşağıdakı parametrlər lazımdır.

edekleme için gerekli tüm PHP kodlarımı backupDatabaseTables() fonksiyonunda birlikte toplayacağım. backupDatabaseTables() fonksiyonunu kullanarak belirli tabloları veya tüm tabloları bir veritabanından kolayca yedekleyebilirsiniz. MySQL veritabanını PHP kullanarak yedeklemek için aşağıdaki parametreler gereklidir.

  • $dbHost – Mütləq. Məlumat bazasının serverini bildirir.

  • $dbUsername – Mütləq. Məlumat bazasının istifadəçi adını bildirir.

  • $dbPassword – Mütləq. Məlumat bazasının şifrəsini bildirir.

  • $dbName – Mütləq. Nüsxəsini çıxarmaq istədiyiniz məlumat bazasının adını bildirir.

  • $tables– İstəyə bağlıdır. Sadəcə vergül ilə ayrılmış table adlarının nüsxəsini çıxarmaq üçün istifadə edilir. Bütün məlumat bazasının nüsxəsini çıxarmaq üçün bu parametrdən istifadə etməyin.

<?php

/**

* @function    backupDatabaseTables

* @author      itcity.academy

* @link        https://itcity.academy

* @usage    PHP istifadə edərək MySQL Məlumat bazasını kopyalamaq

*/

function backupDatabaseTables($dbHost,$dbUsername,$dbPassword,$dbName,$tables = '*') {

   //database məlumatları

   $db = new mysqli($dbHost, $dbUsername, $dbPassword, $dbName);

   //bütün table-ları alaq

   if($tables == '*') {

       $tables = array();

       $result = $db->query("SHOW TABLES");

       while($row = $result->fetch_row()) {

           $tables[] = $row[0];

       }

   } else {

       $tables = is_array($tables)?$tables:explode(',',$tables);

   }

   //table-lar daxilinə baxaq

   foreach($tables as $table){

       $result = $db->query("SELECT * FROM $table");

       $numColumns = $result->field_count;

       $return .= "DROP TABLE $table;";

       $result2 = $db->query("SHOW CREATE TABLE $table");

       $row2 = $result2->fetch_row();

       $return .= "\n\n".$row2[1].";\n\n";

       for($i = 0; $i < $numColumns; $i++){

           while($row = $result->fetch_row()){

               $return .= "INSERT INTO $table VALUES(";

               for($j=0; $j < $numColumns; $j++){

                   $row[$j] = addslashes($row[$j]);

                   $row[$j] = ereg_replace("\n","\\n",$row[$j]);

                   if (isset($row[$j])) { $return .= '"'.$row[$j].'"' ; } else { $return .= '""'; }

                   if ($j < ($numColumns-1)) { $return.= ','; }

               }

               $return .= ");\n";

           }

       }

       $return .= "\n\n\n";

   }

   //faylı yaddaşa verək

   $handle = fopen('db-backup-'.time().'.sql','w+');

   fwrite($handle,$return);

   fclose($handle);

}

?>

 

İstifadəsi:

MySQL məlumat bazasının nüsxəsini yaratmaq və bir SQL faylı olaraq yadda saxlamaq üçün  backupDatabaseTables() funksiyasını istifadə etmək kifayətdir.

 
backupDatabaseTables('localhost','root','*****','dbname);

 

Sual, fikir və təkliflərinizi Facebook səhifəmizdən bizə ünvanlaya bilərsiniz.