A Symfony bundle that provides a command to easily backup databases.
Note: For now only MySQL is supported. It should also support MariaDB, but that has not been verified.
- See
composer.json
for most dependencies. - A Unix-like OS.
- The following commands:
mkfifo
mysqldump
bzip2
- For now the above commands have to be available globally in the current path configuration in the corresponding shell used by the
symfony/process
component, so they can be called without requiring the absolute path.
- Add
AndreasA\BackupDatabaseBundle\AndreasABackupDatabaseBundle::class => ['all' => true],
toconfig/bundles.php
, if it has not been added bysymfony/flex
already. - Add the file
config/packages/andreas_a_backup_database.yaml
with a content like (example configuration):andreas_a_backup_database: database_url: '%env(resolve:DATABASE_URL)%' target_directory: '%kernel.project_dir%/var/backup' mysql: ignored_tables: - 'cache_items' options: - 'default-character-set=utf8mb4' - 'hex-blob' - 'no-tablespaces' - 'opt' - 'routines' - 'triggers' platform_specific_options: - 'column-statistics=0' - 'skip-column-statistics'
database_url
: The URL to the database.target_directory
: The directory where the backups are placed. Those files include the current date and time in their filenames.mysql
: Specific options for MySQL backups.ignored_tables
: Tables to be ignored during backup. Can also be set to[]
, if no tables should be ignored.options
: These options are used during backup and provided using the MySQL configuration file syntax. Themysqldump
command has to support these options. Can also be set to[]
, if no additional options are necessary.platform_specific_options
: Basically the same asoptions
but here the bundle first checks if themysqldump
command supports these options. This is relevant, if you do not know the usedmysqldump
version. Can also be set to[]
, if no platform specific options are necessary.
The bundle provides the Symfony command andreas-a:backup:database
. It uses the configuration above to create a database backup and can e.g. be used during deployments.