The restore drill that found a missing table

Four years of nightly backups, never restored, and the first restore produced a database missing one table.

$ mysql --version && zcat backup.sql.gz | grep -c 'CREATE TABLE'
41
$ mysql -e 'SHOW TABLES' production | wc -l
42

# the difference: sessions
# --ignore-table=app.sessions, added in 2021 because the
# table was large and "not important"

# it holds the OAuth refresh tokens.

The exclusion was reasonable when it was added and became wrong when the table’s contents changed, which nobody revisited because nobody was reading the backup script. A restore drill is the only thing that compares what is in the backup against what is in the database, and it took ninety minutes the first time and eleven the fourth.