> ## Documentation Index
> Fetch the complete documentation index at: https://villagesql.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Percona Build

> VillageSQL built on Percona Server for MySQL 8.4.

VillageSQL also builds on **Percona Server**, a source-compatible fork of
MySQL that adds its own storage, performance, and observability features.

## What this is

A VillageSQL server built against the Percona 8.4 codebase instead of upstream
MySQL 8.4. The VillageSQL Extension Framework, its SQL commands, and its
extensions work the same way on both — a Percona build is a different
foundation underneath the same VillageSQL surface.

VillageSQL does not document Percona's own features. For anything about
Percona Server itself — its storage engines, tuning options, or configuration
— see [Percona's own documentation](https://docs.percona.com/percona-server/8.4/).

## What is not included

This build leaves out three of Percona's features.

**MyRocks.** The RocksDB storage engine is not built, so `SHOW ENGINES` does not
list `ROCKSDB` and no `rocksdb_*` system variable exists. A table that asks for
the engine fails:

```sql theme={null}
CREATE TABLE t (i INT) ENGINE=ROCKSDB;
-- ERROR 1286 (42000): Unknown storage engine 'ROCKSDB'
```

Restoring a dump from a Percona server stops at the first table that names the
engine, so tables created before that point stay and the rest are skipped.

**The KMIP keyring component.** `component_keyring_file`,
`component_keyring_kms`, and `component_keyring_vault` all ship and install.
`component_keyring_kmip` is not built, and installing it fails with
`ERROR 1126`.

**Percona's coredumper.** The `--coredumper` option is still accepted, because
the server registers it whether or not the library is built, and the library is
not built here.

Percona's other additions work normally, including the `percona_udf` component,
the audit log plugin, and the `USER_STATISTICS` and `TABLE_STATISTICS` views.

## Identifying a Percona build

A Percona build reports a different codebase in its version string:

```sql theme={null}
SELECT @@villagesql_server_version;
-- Example output: percona-8.4_0.0.6
```

See [System Reference](https://villagesql.com/docs/mysql-8.4/0.0.6/reference.md#villagesql_server_version) for
what this variable means. VillageSQL refuses to upgrade a datadir from one
codebase (for example `mysql-8.4`) onto a server running a different one (for
example `percona-8.4`).

## Installing

The Percona build ships alongside the MySQL 8.4 build, and all three install
methods offer it.

**Install script.** Answer **Percona 8.4** at the first question, or name it
outright where there is no terminal:

```bash theme={null}
curl -fsSL https://install.villagesql.com | \
  VSQL_CODEBASE=percona-8.4 INSTALL_METHOD=prebuilt bash
```

**Docker.** Images are published for each codebase and architecture:

```bash theme={null}
docker run -d --name vsql -e MYSQL_ALLOW_EMPTY_PASSWORD=yes -p 3306:3306 villagesql/server:percona-8.4_latest
```

**Release download.** The `villagesql-dev-server-percona-8.4_0.0.6-<os>-<arch>.tar.gz`
files on the
[0.0.6 release](https://github.com/villagesql/villagesql-server/releases/tag/release/0.0.6)
cover Linux on x86\_64 and aarch64, and macOS on arm64.

**Source.** Build the `percona-8.4` branch, or the `publish/percona-8.4_0.0.6`
tag for the exact code the release shipped — see
[Build from Source](https://villagesql.com/docs/mysql-8.4/0.0.6/source.md) for the build steps themselves.

A data directory belongs to the codebase that created it. VillageSQL refuses to
open a `mysql-8.4` data directory with a `percona-8.4` server, so install this
build into its own directory rather than pointing it at an existing one.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.