Skip to content

MySQL 8 fails on older/virtual CPUs (x86-64-v1) — proposing MariaDB as a fallback #7

Description

@fo0n2h

Summary

When deploying Tella Web on a VPS with an older or generic virtual CPU, the db container (MySQL 8) crashes immediately at startup with:

Fatal glibc error: CPU does not support x86-64-v2

This prevents the API from connecting to the database and blocks the entire deployment.

Environment

  • OS: Debian 12 (any recent distro is affected)
  • Docker: 27.x
  • Tella Web version: 1.4.2 (also confirmed with previous versions)
  • Host CPU: QEMU Virtual CPU version 2.5+ (common on budget VPS providers using older KVM hosts)

Root cause

Recent MySQL 8 images are built on Oracle Linux 9 with glibc 2.34+, which requires CPU instructions from the x86-64-v2 microarchitecture level (introduced ~2009 with Nehalem/Bulldozer). Many virtualized/cloud CPUs emulate only the base x86-64-v1 level, so MySQL crashes before it can even initialize.

You can check your CPU level with:

/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2 --help | grep -A2 "x86-64"

Workaround

Replacing MySQL with MariaDB works as a drop-in. Tella's TypeORM driver speaks the MySQL protocol, which MariaDB implements natively — no code change required.

In docker-compose.yml, replace the db service with:

db:
  image: mariadb:10.11
  restart: unless-stopped
  environment:
    MARIADB_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
    MARIADB_DATABASE: ${MYSQL_DATABASE}
    MARIADB_USER: ${MYSQL_USER}
    MARIADB_PASSWORD: ${MYSQL_PASSWORD}
  volumes:
    - db-data:/var/lib/mysql
  networks:
    - net

Important: if you've already attempted a deploy with MySQL 8, wipe the db-data volume before switching (incomplete init files are not compatible):

docker compose down
docker volume rm _db-data
docker compose up -d

Then run the migrations as usual:

docker compose exec api npm run typeorm migration:run

Everything else (API, admin, file uploads, login flow) works identically. Confirmed on Tella Web 1.4.2 with MariaDB 10.11.

BTW great job <3 from Nothing2hide.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions