Skip to content

Generating MySQL dumps

shopware-cli has built-in support for generating MySQL dumps. The dump command is native implementation and does not use existing tools like mysqldump.

Creating a MySQL dump is as simple as running the following command:

shopware-cli project dump sw6 --host 127.0.0.1 --username root --password root

It's possible to use --skip-lock-tables to skip the lock tables command. This is useful for large databases.

Anonymizing data

The --anonymize flag will anonymize known user data tables. The following tables are anonymized:

See here for the complete list

It's possible to customize the anonymization process by using the dump.rewrite configuration in the shopware-cli.yml file.

# .shopware-project.yml
dump:
  rewrite:
    <table-name>:
      # Rewrite column content new value
      <column-name>: "'new-value'"
      # Use go-faker to generate data
      <column-name>: "faker.Internet().Email()" # See https://github.com/jaswdr/faker

Ignoreing table content

Some tables are not relevant for dumps, like log tables. To ignore some default tables, use the --clean flag. This will ignore the content of the following tables:

  • cart
  • customer_recovery
  • dead_message
  • enqueue
  • increment
  • elasticsearch_index_task
  • log_entry
  • message_queue_stats
  • notification
  • payment_token
  • refresh_token
  • version
  • version_commit
  • version_commit_data
  • webhook_event_log

To ignore additional tables, use the dump.ignore configuration in the shopware-cli.yml file.

# .shopware-project.yml
dump:
  nodata:
    - <table-name>

Ignoring entire tables

It's also possible to completely ignore a table not only the content.

# .shopware-project.yml
dump:
  ignore:
    - <table-name>

Adding a where clause

It's possible to add a where clause to the export of a table. So only rows matching the where clause will be exported.

# .shopware-project.yml
dump:
  where:
    <table-name>: 'id > 5'