Overview
What is stored, the tables, sharing one database across servers, keeping one server apart, and moving off SQLite.
The database holds what a player has done: their record and their place on every board. Arenas and settings are files and are not in it, and neither is a reign in progress or the items of a player inside an arena.
| Backend | For |
|---|---|
| SQLite | One server. The default, a file with nothing to set up |
| MySQL and MariaDB | A network sharing records and boards |
| PostgreSQL | The same, on PostgreSQL |
The backend is set in the storage block of config.conf. It is opened once, so
a change needs a restart. The tables are created and moved forward on their own at the start.
The tables
Every table name starts with storage.table-prefix, uxmkotl_ by default.
| Table | Holds |
|---|---|
uxmkotl_stats | One row per player: name, time held, longest reign, crowns and kills |
uxmkotl_board | One row per player, board, period and window: the score and when it was reached |
uxmkotl_name | The name each player last played under, for the boards |
uxmkotl_schema_history | The version the tables are at |
/uxmkotl doctor names the backend, where the rows are, the prefix and the schema version.
A network
Point every server at the same MySQL, MariaDB or PostgreSQL database with the same table-prefix, and the servers
share each player's record and board standings. A player who holds a crown on one server reads the same record on
another.
sync-seconds(2 by default) is how often a server reads what the others changed for the players who are on it.0turns it off.- The boards are read from the database every
leaderboard.refresh-seconds, so every server shows the same board. - Write the same
leaderboard.time-zoneandweek-startson every server, or their weeks end at different times. - Copy the files of
arenas/to each server that runs the same arenas. A crown belongs to one server: two servers with the same arena have a king each.
Keeping one server apart
local-only = true on one server keeps its rows in its own SQLite file, whatever type says, under the same prefix.
Use it for a server of the network that should not touch the shared records, such as a build or test server. Keep
the rest of the storage block the same everywhere and set this on that one server alone.
Moving off SQLite
- Create the database and a user on the database server.
- Set
type,host,port,database,usernameandpassword, andcopy-from-file = true. - Restart once. The rows of the SQLite file are copied into the empty tables, and the console says how many.
- Leave
copy-from-fileon or turn it off: tables that already hold rows are never copied into again, so nothing is copied twice.
The SQLite file is left where it is, as a backup.
Erasing a player
/uxmkotl reset <player> deletes the player's record and every board row they hold, in every period and window, on
every server sharing the database.
Related: config.conf, SQLite, MySQL and MariaDB
Was this page helpful?