Автоматическое резервное копирование базы данных MySQL с CodeIgniter - PullRequest
0 голосов
/ 23 сентября 2019

Я создал опцию резервного копирования в проекте Codeigniter.Теперь я хочу, чтобы резервная копия базы данных автоматически каждый день с фиксированным временем.

Вот мой резервный код:

function dbbackup(){
    $this->load->dbutil();
    $prefs = array(     
        'format'      => 'zip',             
        'filename'    => 'my_db_backup.sql'
        );

    $backup =& $this->dbutil->backup($prefs); 
    $db_name = "backup_on_" . date("d_m_Y_h_i_s_a") . ".zip";
    $save = 'uploads/dbbackup/'.$db_file_name;
    $this->load->helper('file');
    write_file($save, $backup); 
    $this->load->helper('download');
    force_download($db_name, $backup);
}

Есть ли какой-либо конкретный запрос для резервного копирования автоматически?

Ответы [ 2 ]

2 голосов
/ 23 сентября 2019

Почему бы вам просто не использовать crontab и mysqldump для резервного копирования в нужное время, на самом деле нет необходимости использовать dbutil класс, mysqldump будет быстрее и надежнее по сравнению с dbutil классом.

Если вы прочитаете исходный код mysqli_utility, _backup метод , вы поймете, как это влияет на производительность.

Скажите, например, чтобы каждый день выполнять резервное копирование в 14:30

crontab -e

Введите запись, как показано ниже

30 14 * * * /usr/bin/mysqldump --user=USER --password=PASSWORD --databases DBNAME1 DBNAME2 | gzip > /home/someuser/backup.$(date +"%d_%m_%Y_%H_%M_%S").sql.gz

Сохранить crontab

0 голосов
/ 23 сентября 2019

Если он установлен на работающем сервере, вы можете настроить задания cron для вызова php-файла.Если вы хотите установить его локально, вы можете использовать что-то вроде планировщика задач соответствующей операционной системы, чтобы вызвать скрипт php, а затем URL-адрес в качестве аргумента.Или вы можете создать файл bat и добавить его в планировщик, содержащий что-то вроде:

php 'path/to/project/index.php' dbbackup

Если вы используете живой сервер, вы можете открыть таблицу cron с помощью этой команды на терминале.:

crontab -e

Затем добавьте запись, чтобы составить расписание в соответствии с вашими потребностями,
каждая строка файла crontab принимает шесть аргументов в следующем порядке:

  • минуты (от 0 до 59)
  • часы (от 0 до 23)
  • день месяца (от 1 до 31)
  • месяц (от 1 до 12)
  • день недели (0 - 6)
  • команда (команда, которая будет выполнена)

Пример:

0 13 * * * php [application_path]/index.php dbbackup
...