Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save alexey-m-ukolov/2adcc815baa8d5a76f16bd68bc190236 to your computer and use it in GitHub Desktop.
Save alexey-m-ukolov/2adcc815baa8d5a76f16bd68bc190236 to your computer and use it in GitHub Desktop.
Mysqldump Kolhoz Edition
<?php
require_once("config.php");
date_default_timezone_set('Asia/Yekaterinburg');
file_put_contents($logFile, "[INFO]\t".date($dateFormat)."\tcтарт".PHP_EOL, FILE_APPEND | LOCK_EX);
file_put_contents($logFile, "[DEBUG]\t".date($dateFormat)."\tначало удаления артефактов предыдущего импорта".PHP_EOL, FILE_APPEND | LOCK_EX);
exec("rm -rf {$backupDir}");
exec("rm -rf {$archiveDir}");
exec("rm -f {$backupArchivePath}");
exec("rm -f ./zipper.log");
file_put_contents($logFile, "[DEBUG]\t".date($dateFormat)."\tконец удаления артефактов предыдущего импорта".PHP_EOL, FILE_APPEND | LOCK_EX);
@mkdir($backupDir, 0700, true);
@mkdir($archiveDir, 0700, true);
$arTables = array();
$pdo = new PDO("mysql:host=localhost;dbname=".$database, $user, $password);
foreach ($pdo->query("show tables;") as $table)
{
$arTables[] = trim($table[0]);
}
if (!empty($arTables))
{
foreach ($arTables as $table)
{
$sqlFilePath = "{$backupDir}/{$table}.sql";
$archiveFilePath = "{$archiveDir}/{$table}.tar.gz";
file_put_contents($logFile, "[DEBUG]\t".date($dateFormat)."\t/{$table}/ начало выгрузки".PHP_EOL, FILE_APPEND | LOCK_EX);
exec("mysqldump -h{$host} -u{$user} -p{$password} --default-character-set=UTF8 {$database} --tables {$table} > {$sqlFilePath}");
file_put_contents($logFile, "[DEBUG]\t".date($dateFormat)."\t/{$table}/ конец выгрузки".PHP_EOL, FILE_APPEND | LOCK_EX);
file_put_contents($logFile, "[DEBUG]\t".date($dateFormat)."\t/{$table}/ начало архивации".PHP_EOL, FILE_APPEND | LOCK_EX);
exec("sh ./zipper.sh {$archiveFilePath} {$sqlFilePath}");
file_put_contents($logFile, "[DEBUG]\t".date($dateFormat)."\t/{$table}/ конец архивации".PHP_EOL, FILE_APPEND | LOCK_EX);
file_put_contents($logFile, "[DEBUG]\t".date($dateFormat)."\t/{$table}/ начало удаления sql-файла".PHP_EOL, FILE_APPEND | LOCK_EX);
exec("rm -f {$sqlFilePath}");
file_put_contents($logFile, "[DEBUG]\t".date($dateFormat)."\t/{$table}/ конец удаления sql-файла".PHP_EOL, FILE_APPEND | LOCK_EX);
}
file_put_contents($logFile, "[DEBUG]\t".date($dateFormat)."\t начало финальной архивации".PHP_EOL, FILE_APPEND | LOCK_EX);
exec("sh ./zipper.sh {$backupArchivePath} {$archiveDir}");
file_put_contents($logFile, "[DEBUG]\t".date($dateFormat)."\t конец финальной архивации".PHP_EOL, FILE_APPEND | LOCK_EX);
}
else
{
file_put_contents($logFile, "[WARNING]\t".date($dateFormat)."\tне найдены таблицы для выгрузки".PHP_EOL, FILE_APPEND | LOCK_EX);
}
file_put_contents($logFile, "[INFO]\t".date($dateFormat)."\tфиниш".PHP_EOL, FILE_APPEND | LOCK_EX);
file_put_contents($logFile, PHP_EOL."***".PHP_EOL.PHP_EOL, FILE_APPEND | LOCK_EX);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment