Kaynağa Gözat

db dump job

feature-profilechilds
Daniel 3 yıl önce
ebeveyn
işleme
1788e8ddd7
3 değiştirilmiş dosya ile 86 ekleme ve 2 silme
  1. +5
    -1
      .docker/Dockerfile
  2. +1
    -1
      src/server/server/config/boot_local.php
  3. +80
    -0
      src/server/server/job/TB_Server_Job_DailyDbBackup.php

+ 5
- 1
.docker/Dockerfile Dosyayı Görüntüle

@@ -12,13 +12,17 @@ RUN apt-get install -y \
libjpeg62-turbo-dev \
libpng-dev \
libicu-dev \
libzip-dev \
zip \
&& docker-php-ext-install -j$(nproc) iconv \
&& docker-php-ext-configure gd --with-jpeg=/usr/include/ --with-freetype=/usr/include/ \
&& docker-php-ext-install -j$(nproc) gd \
&& docker-php-ext-install -j$(nproc) intl \
&& docker-php-ext-install -j$(nproc) pdo_mysql
&& docker-php-ext-install -j$(nproc) pdo_mysql \
&& docker-php-ext-install zip

RUN apt-get install -y git zip
RUN apt-get install mariadb-client -y

RUN apt install nano



+ 1
- 1
src/server/server/config/boot_local.php Dosyayı Görüntüle

@@ -21,7 +21,7 @@ Francis_Utils_Config::set( 'db.tbteamdata.pass', 'root' );
// Paths
Francis_Utils_Config::set( 'path.logfile', '/var/www/html/logs/tbserver-log.txt' );
Francis_Utils_Config::set( 'path.cron_logfile', '/var/www/html/logs/tbserver-cron-log.txt' );
Francis_Utils_Config::set( 'path.backup_folder', '/temp' );
Francis_Utils_Config::set( 'path.backup_folder', '/var/www/html/temp' );
Francis_Utils_Config::set( 'path.root', realpath( dirname( __FILE__ ) . '/../../../..' ) );
Francis_Core_Autoloader::attachLocator( new Francis_Core_Locator( 'TB', Francis_Utils_Config::get( 'path.root' ) . '/src/server' ) );
Francis_Utils_Config::set( 'path.server.controller', Francis_Utils_Config::get( 'path.root' ) . '/src/server/server/control' );


+ 80
- 0
src/server/server/job/TB_Server_Job_DailyDbBackup.php Dosyayı Görüntüle

@@ -0,0 +1,80 @@
<?php
/********************************************************************************
* (c)1337 aheadware.com - All rights reserved
********************************************************************************/
class TB_Server_Job_DailyDbBackup extends TB_Server_Job_Base
{
public function __construct( TB_Shared_Ent_TeamData_Job $jobEntity )
{
$this->entity = $jobEntity;
}
public function execute()
{
// Remove old DB dumps
$dayInSeconds = 60 * 60 * 24;
$pastDays = 7;
$dumpFile = Francis_Utils_Config::get( 'path.backup_folder' ) . '/dbdump';
while ( file_exists( $dumpFile . date( 'Y-m-d', ( time() - ( $pastDays * $dayInSeconds ) ) ) . '.zip' ) ) {
unlink( $dumpFile . date( 'Y-m-d', ( time() - ( $pastDays * $dayInSeconds ) ) ) . '.zip' );
$pastDays++;
}
// DB Core
$db_host = Francis_Utils_Config::get( 'db.tbcore.host' );
$db_user = Francis_Utils_Config::get( 'db.tbcore.user' );
$db_name = Francis_Utils_Config::get( 'db.tbcore.name' );
$db_passwd = Francis_Utils_Config::get( 'db.tbcore.pass' );
$sql_file = Francis_Utils_Config::get( 'path.backup_folder' ) . "/tbcore.sql";
//exec("mysql -u $db_name -p'$db_passwd' --allow-keywords --add-drop-table --complete-insert --quote-names --routines $db_name > $sql_file");
exec("mysqldump -h $db_host -u $db_user -p'$db_passwd' $db_name > $sql_file");
// DB Teamdata
$db_host = Francis_Utils_Config::get( 'db.tbteamdata.host' );
$db_user = Francis_Utils_Config::get( 'db.tbteamdata.user' );
$db_name = Francis_Utils_Config::get( 'db.tbteamdata.name' );
$db_passwd = Francis_Utils_Config::get( 'db.tbteamdata.pass' );
$sql_file = Francis_Utils_Config::get( 'path.backup_folder' ) . "/tbteamdata.sql";
exec("mysqldump -h $db_host -u $db_user -p'$db_passwd' $db_name > $sql_file");
//exec("mysql -u $db_name -p'$db_passwd' --allow-keywords --add-drop-table --complete-insert --quote-names --routines $db_name > $sql_file");
// Zip
$zipFilename = Francis_Utils_Config::get( 'path.backup_folder' ) . '/dbdump' . date( 'Y-m-d' ) . '.zip';
$zip = new ZipArchive();
if ( !$zip->open( $zipFilename, ZipArchive::CREATE ) ) {
TB_Server_Utils_Log::get()->log( "Cannot zip db dump." );
return;
}
$zip->addFile( Francis_Utils_Config::get( 'path.backup_folder' ) . '/tbcore.sql' , 'tbcore.sql' );
$zip->addFile( Francis_Utils_Config::get( 'path.backup_folder' ) . '/tbteamdata.sql' , 'tbteamdata.sql' );
$zip->close();
// Cleanup
$sql_file = Francis_Utils_Config::get( 'path.backup_folder' ) . "/tbcore.sql";
unlink( $sql_file );
$sql_file = Francis_Utils_Config::get( 'path.backup_folder' ) . "/tbteamdata.sql";
unlink( $sql_file );
echo 'bla';
}
public function onDone()
{
// Reset event to start the next day
$nowDt = new DateTime( 'now', new \DateTimeZone( "UTC" ) );
$nowDt->setTime( 2, 0, 0 );
$nowDt->modify( '+1 day' );
$this->entity->trigger_dt = $nowDt;
$this->entity->job_status = TB_Shared_Ent_TeamData_Job::JOB_STATUS_READY;
$this->entity->touch( 'job_status' );
$this->entity->save();
}
public static function getRefId()
{
return 'system-daily-db-backup';
}
}

Yükleniyor…
İptal
Kaydet