Databases: PostgreSQL, MySQL and Valkey.

Managed databases for your project: connection variables, restoring to any minute of the last 7 days, disk alerts, access from outside, the Data tab with tables, queries, import and export, and read replicas.

7 MIN READ

Add a database to a project and your application is connected to it by itself — no passwords to copy. Backups, restoring and disk alerts are taken care of.

Overview → Services → Add a service, then choose:

EngineFor
PostgreSQL 17most applications
MySQL 8.4applications built for MySQL
Valkey 8a Redis-compatible store for queues, cache and sessions — Horizon, Celery, BullMQ, Sidekiq

Give it a name (e.g. db) and choose its resources. A new database starts with 1 GB of memory, 1 CPU core and 10 GB of disk — $10 a month. It is priced like any service: $6 per GB of memory, $4 per core, 10 GB of disk included per GB of memory, then $0.15 per GB.

Connection: nothing to set up

The project's services reach the database inside the project's private network, by its name. They already have the details as variables:

  • PostgreSQL / MySQL: DATABASE_URL, DB_CONNECTION, DB_HOST, DB_PORT, DB_DATABASE, DB_USERNAME, DB_PASSWORD; PostgreSQL also PGHOST, PGPORT, PGDATABASE, PGUSER, PGPASSWORD.
  • Valkey: REDIS_URL, REDIS_HOST, REDIS_PORT, REDIS_PASSWORD, REDIS_CLIENT.
  • Every database also gives RIVERVO_<NAME>_URL — for a database called db, RIVERVO_DB_URL.

The database's Overview → Connection shows the host, port, database and user, and the list of Variables the project gets. The application picks the variables up with its next deploy.

A second database. Only the first database of each kind gets the usual names. If the project already has one, the new database adds only its own RIVERVO_<NAME>_URL and the application keeps using the first one. To switch, set DATABASE_URL and DB_* on the Variables tab to the new database's values.

Backups and restoring to any minute

PostgreSQL and MySQL are backed up continuously: every change is saved as it happens, so the database can go back to any minute of the last 7 days. A full copy is also made every day. Everything is stored encrypted, separately from the database.

To restore: the database's Backups tab → Restore to a moment, pick the date and time (any minute from the start of the period up to a couple of minutes ago), then Restore to this moment. The list below it holds the daily copies (and any made with Back up now); each can be restored too.

Before any restore we back up the current state first, so a restore can always be undone. The database is unavailable for a short time while it is restored; the panel shows the progress.

Valkey is backed up every day; we keep the last 7 days and 4 weeks.

Restoring is available to the account owner and the application's Administrators.

Backups of the application itself

The main application has a Backups tab of its own for the files it keeps on its disk (for example uploads, or a Laravel SQLite database). They are backed up every day and stored encrypted; we keep the last 7 days and 4 weeks. Back up now makes an extra copy at any time.

Disk: a firm limit, with warnings

A database's disk is exactly the size you chose. We let you know by email (and Telegram, if you have connected it) when it reaches 80% and 90%, and again if it fills up. A full disk does not stop the database: it keeps answering, but it cannot save new data until the disk is larger.

To add disk: the database's Settings → Resources, move the Disk slider and Apply. It takes a moment and needs no restart.

Access from outside

By default only the project's services reach a database. To connect from your computer, a BI tool or another server, open the database's Overview → Access from outside → Open access:

  1. Add the addresses that may connect — a single IP (203.0.113.7) or a network (198.51.100.0/24). Add my address adds the one you are using now.
  2. Save addresses. The panel shows the external host, port and a Connection string.

Connections from outside are encrypted with a certificate for the database's own address:

  • PostgreSQL accepts connections from outside only encrypted.
  • Valkey accepts them only over TLS.
  • MySQL offers encryption — turn it on in your client (SSL mode «required»).

Close access stops outside connections at once; the project's services keep working as before. Opening and closing access is available to the account owner and the application's Administrators.

The Data tab

Every database has a Data tab, so you can look at and work with your data without installing anything.

Tables and queries (PostgreSQL, MySQL)

  • Tables — browse any table, 50 rows per page, read only. Find a table filters the list.
  • SQL editor — run queries with the database's own user. Reading queries run at once; statements that change data ask for confirmation. Up to 30 seconds and 1,000 rows per query.

Keys and commands (Valkey)

Browse keys by pattern (e.g. user:*) and see their values; run one command at a time in the usual Valkey syntax. Commands that change data ask for confirmation. FLUSHALL, FLUSHDB, CONFIG, SHUTDOWN, DEBUG and scripts are not available here.

Import

Data → Import and export → Import data, from one of three sources:

  • From a file — .sql or .sql.gz; for PostgreSQL also a pg_dump -Fc archive (.dump). Up to 2 GB (and no more than the database's disk); keep the page open until the upload finishes.
  • From a link — a link to the dump file that opens without signing in, such as a temporary link from your storage. Large dumps are streamed, so any size that fits the disk works.
  • From another database — another database of the same kind reachable from the internet: PostgreSQL into PostgreSQL, MySQL or MariaDB into MySQL. We check the connection first, then copy its data straight in. The password is used only for this copy and is not kept.

Before every import we save a backup of the current data, so it can always be restored from the Backups tab. Tables and other objects from the import replace those with the same names; everything else stays. The database keeps working meanwhile, and you can leave the page.

Export

Export → Create a copy prepares a fresh copy: a PostgreSQL archive (.dump, restore it with pg_restore) or a compressed SQL file (.sql.gz) for MySQL. The download link appears when the copy is ready and works for 24 hours.

Who can do what

The Data tab — looking at data, changing it in the editor, importing and exporting — is available to the account owner and to people with the Developer or Administrator role in the application. The Viewer role does not see the data. See Access to an application.

Read replicas (PostgreSQL, MySQL)

A read replica is a copy of the database that follows every change within seconds. Send reports, analytics, exports and other heavy reading to it, and the primary database stays fast for writes.

Overview of the database → Read replicas → Add a read replica. Up to 2 replicas per database.

  • The replica holds a full copy of the data, so its disk is at least as large as the primary's.
  • The project gets the replica's own variable RIVERVO_<NAME>_URL (by the replica's name); DATABASE_URL stays on the primary.
  • The first copy takes a few minutes, depending on the size of the data; the primary keeps working meanwhile.
  • The replica accepts reading queries only. Backups and restoring to a moment stay with the primary.
  • The panel shows how far behind it is (Up to date, or the delay in seconds). If it stays more than a minute behind for 5 minutes, we let you know and look into it ourselves.

A replica is billed like any service, by its own resources.

Promoting a replica

Settings of the replica → Promote. It stops following the primary for good, starts accepting writes and gets its own backups. This takes about a minute. The project keeps DATABASE_URL on the original database; to move the application to the promoted one, change DATABASE_URL and DB_* on the Variables tab.

Still stuck?

Chat with a real engineer — median response under 3 minutes, any time of day.

Contact support