Skip to main content

Run a multi-node, scalable cluster

For highly-available and highly-scalable setups, SurrealDB can be run on top of a TiKV cluster, with the ability to horizontally scale to 100+ terabytes of data. In this example, we will start a local TiKV cluster with a single node, for development and testing purposes only. To install TiKV on your development machine, run the following command. This will install the tiup command-line tool, which enables deploying and managing TiKV clusters of any size.

curl -sSf | sh

Once installed we shall start up a simple single-node development cluster.

tiup playground --tag surrealdb --mode tikv-slim --pd 1 --kv 1

Once TiKV is up and running, we can start a SurrealDB server instance, specifying the TiKV cluster endpoint as the backing data store.

surreal start tikv://

The default logging level for the database server is info, resulting in any informational logs to be output to the standard output. To control the logging verbosity, specify the --log argument. The following command starts the database with trace level logging, resulting in most logs being output to the terminal.

surreal start --log trace tikv://

In order to keep SurrealDB secure, configure your initial root-level user by setting the --user and --pass command-line arguments. The following command starts the database with a top-level user named root with a password also set to root. The root user will be persisted in storage, which means you don't have to include the command line arguments next time you start SurrealDB.

surreal start --log trace --user root --pass root tikv://

In order to change the default port that SurrealDB uses for web connections and from database clients you can use the --bind argument. The following command starts the database on port 8080.

surreal start --log trace --user root --pass root --bind tikv://placement.driver.hostname.or.ip:2379

After running the above command, you should see the SurrealDB server startup successfully.

surreal start --user root --pass root --bind file:mydatabase.db
2023-08-30T15:06:34.788739Z INFO surreal::dbs: ✅🔒 Authentication is enabled 🔒✅
2023-08-30T15:06:34.788821Z INFO surrealdb::kvs::ds: Starting kvs store in file:mydatabase.db
2023-08-30T15:06:34.788859Z INFO surrealdb::kvs::ds: Started kvs store in file:mydatabase.db
2023-08-30T15:06:34.789222Z INFO surrealdb::kvs::ds: Initial credentials were provided and no existing root-level users were found: create the initial user 'root'.
2023-08-30T15:06:35.205123Z INFO surrealdb::node: Started node agent
2023-08-30T15:06:35.205827Z INFO surrealdb::net: Started web server on

For details on the different commands available, visit the CLI tool documentation.