Automatización de copias de seguridad de bases de datos con el Programador de tareas de Laravel y almacenarlas en la nube

  • Publicado el 21 agosto, 2024
  • Palabras: 388

Garantizar copias de seguridad periódicas de las bases de datos es fundamental para cualquier aplicación. El Programador de tareas de Laravel combinado con el almacenamiento en la nube proporciona una forma eficiente de automatizar este proceso. Exploremos cómo implementar copias de seguridad automatizadas de bases de datos con Laravel y su almacenamiento en la nube.

Automatización de copias de seguridad de bases de datos con el Programador de tareas de Laravel y almacenarlas en la nube

#Crear el Backup Command

 

Lo primero, será crear un Artisan command para el proceso de backup

 

php artisan make:command DatabaseBackup

 

En el archivo recién creado:

 

namespace App\Console\Commands;

use Illuminate\Console\Command;
use Illuminate\Support\Facades\Storage;

class DatabaseBackup extends Command
{
    protected $signature = 'db:backup';
    protected $description = 'Backup the database to cloud storage';

    public function handle()
    {
        $filename = "backup-" . now()->format('Y-m-d') . ".sql";
        $path = storage_path("app/backup/{$filename}");

        // Create the backup
        $command = "mysqldump --user=" . env('DB_USERNAME') ." --password=" . env('DB_PASSWORD') 
            . " --host=" . env('DB_HOST') . " " . env('DB_DATABASE') 
            . "  > " . $path;

        exec($command);

        // Upload to cloud storage (e.g., AWS S3)
        Storage::disk('s3')->put("backups/{$filename}", file_get_contents($path));
        unlink($path); // Remove local copy

        $this->info('Database backup uploaded to S3.');
    }
}

 

#Programación de la copia de seguridad

 

Programe el comando de copia de seguridad en app/Console/Kernel.php:

 

protected function schedule(Schedule $schedule)
{
    $schedule->command('db:backup')->daily()->at('01:00');
}

 

Esto programa la copia de seguridad para que se ejecute diariamente a la 1:00 a.m.

 

#Configuración de almacenamiento en la nube

 

Asegúrese de que su almacenamiento en la nube esté configurado en config/filesystems.php:

 

's3' => [
    'driver' => 's3',
    'key' => env('AWS_ACCESS_KEY_ID'),
    'secret' => env('AWS_SECRET_ACCESS_KEY'),
    'region' => env('AWS_DEFAULT_REGION'),
    'bucket' => env('AWS_BUCKET'),
    'url' => env('AWS_URL'),
    'endpoint' => env('AWS_ENDPOINT'),
],

 

No olvides configurar las variables de entorno correspondientes en tu archivo .env.

Al implementar esta configuración, te aseguras de que tu base de datos se respalde periódicamente y se almacene de forma segura en la nube. Este enfoque proporciona una capa adicional de protección de datos y hace que la recuperación ante desastres sea más manejable.

Recuerda probar tu proceso de respaldo a fondo y verificar periódicamente la integridad de tus copias de seguridad para asegurarte de que sean válidas y se puedan restaurar si es necesario.

Antonio Jenaro

Antonio Jenaro

Web Developer

Archivado en:

Fuente: Harris Raftopoulos

Inicia la conversación

Hazte miembro de Antonio Jenaro para comenzar a comentar.

Regístrate ahora

¿Ya estás registrado? Inicia sesión