MusicBrainz database schema change release, 2026-05-11 (with upgrade instructions)

We’re happy to announce the release of our May 2026 database schema change now! Thanks to all who were patient during Monday’s downtime as we released everything to our production servers.

This is a fairly small database schema change release which mostly improves things behind the scenes. Of the schema change tickets, the only one that affects users directly is you are most likely to notice while you browse and edit in MusicBrainz is MBS-14092 (which allows adding series of series, for example for award series for podcasts).

Thanks to chaban, UltimateRiff and yyb987 for having reported bugs and suggested improvements, and thanks to jmrr83, salo.rock and wileyfoxyx for updating the translations.

A new release of MusicBrainz Docker is also available that matches this update of MusicBrainz Server. See the release notes for update instructions.

Database Schema Change Upgrade Instructions

Note: As mentioned previously, if you’re running MusicBrainz Docker, these instructions don’t apply. See the instructions in the MusicBrainz Docker release notes instead.

Note: Importing the latest data dump is always a valid alternative to running ./upgrade.sh on an existing database, if you’d prefer to also get new data in one go. Just follow the relevant instructions in INSTALL.md. The git tag is v-2026-05-11.1-schema-change. The rest of the instructions here assume an in-place upgrade.

  1. Make sure DB_SCHEMA_SEQUENCE is set to 30 in lib/DBDefs.pm.
  2. If you’re using the live data feed (your REPLICATION_TYPE is set to RT_MIRROR), ensure you’ve replicated up to the most recent replication packet available with the old schema. If you’re not sure, run ./admin/replication/LoadReplicationChanges and see what it tells you; if you’re ready to upgrade, it should say “This replication packet matches schema sequence #30, but the database is currently at #30.”
  3. Take down the web server running MusicBrainz, if you’re running a web server.
  4. Turn off cron jobs if you’re automatically updating the database via cron jobs.
  5. If you are running sir (for live search indexing), stop it and drop all existing sir functions and triggers via the Drop*.sql scripts found with v4.0.1 of sir:
    ./admin/psql < $SIR_PATH/sql/DropTriggers.sql and
    ./admin/psql < $SIR_PATH/sql/DropFunctions.sql. You should also drop the AMQP extension: echo 'DROP EXTENSION IF EXISTS amqp CASCADE;' | ./admin/psql --system.
  6. Upgrade your database cluster to PostgreSQL version 18. Packages for Debian and Ubuntu are available from the PGDB, as usual. Refer to the documentation for pg_upgradecluster or pg_upgrade, whichever method you are using.
  7. Rebuild database indexes using collations via ./admin/RebuildIndexesUsingCollations.pl --database SYSTEM_MAINTENANCE --noconcurrently.
  8. Install Perl 5.42 (perlbrew can be used if 5.42 isn’t packaged for your system).
  9. Switch to the new code with git fetch origin followed by git checkout v-2026-05-11.0-schema-change.
  10. Run cpanm --installdeps --notest . (note the dot at the end) to ensure your Perl-based dependencies are up to date.
  11. Edit lib/DBDefs.pm and replace all occurrences of (1) CacheWrapper::Redis with CacheWrapper::Valkey, and (2) DATASTORE_REDIS_ARGS with DATASTORE_VALKEY_ARGS.
  12. Run ./upgrade.sh (it may take a while to vacuum at the end).
  13. Set DB_SCHEMA_SEQUENCE to 31 in lib/DBDefs.pm as instructed by the output of ./upgrade.sh.
  14. Turn cron jobs back on, if applicable.
  15. Restart the MusicBrainz web server, if applicable. If you’re accessing your MusicBrainz server in a web browser, run ./script/compile_resources.sh.
  16. If you were previously running sir, you may update it to the latest v5 release tag and set it up again via python -m sir setup. Non-mirror standalone servers must additionally run python -m sir setup_standalone_only.

That’s all for the upgrade instructions. Here’s the list of resolved tickets:

Fixed Bug

  • [MBS-6551] – Database does not prevent a release from having duplicate label/catno pairs
  • [MBS-14272] – OTOTOY URL cleanup breaks interview links

New Feature

  • [MBS-14092] – Add support for series of series

Improvement

  • [MBS-14268] – Allow filtering ModBot notes on /edit/notes-received
  • [MBS-14271] – Warn if closing Event editor with changes made/pending

Task

  • [MBS-14243] – Upgrade the required version of Perl to 5.42
  • [MBS-14244] – Upgrade the required version of Node.js to 24
  • [MBS-14245] – Switch from Redis to Valkey
  • [MBS-14246] – Upgrade the required version of PostgreSQL to 18
  • [MBS-14252] – Drop “source” column from iswc and isrc tables
  • [MBS-14306] – Remove URL handling for Flattr

Leave a Reply

Your email address will not be published. Required fields are marked *