Skip to main content

Migrating from SQLite to Postgres

Overview

If you started out using Yucca with SQLite and your resource needs have since grown, you can migrate the data from the SQLite database to Postgres. Migrating back is not supported.

Migration

  1. Deploy and prepare postgres in advance.

  2. Stop the Yucca server:

    sudo systemctl stop yucca
  3. Run the migration command, specifying the path to the source and destination databases:

    /opt/yucca/yucca admin migrate

    You can see the full list of parameters in the help output:

    /opt/yucca/yucca admin migrate --help
    Migrate state from SQLite to PostgreSQL

    Usage:
    yucca admin migrate [flags]

    Flags:
    --config string Path to configuration file (default "/opt/yucca/yucca.toml")
    --data-dir string The data directory used to store state and other persistent data (default "data")
    --database-busy-timeout int Timeout in seconds for waiting for an SQLite table to become unlocked (default 500)
    --database-ca-cert-path string The path to the CA certificate to use (default "/etc/ssl/certs")
    --database-cache-mode string Shared cache setting used for connecting to the database (private, shared) (default "shared")
    --database-client-cert-path string The path to the client cert
    --database-client-key-path string The path to the client key
    --database-conn-max-lifetime duration Sets the maximum amount of time a connection may be reused (default 0s)
    --database-host string Database host (not applicable for sqlite3) (default "127.0.0.1:5432")
    --database-max-idle-conn int The maximum number of connections in the idle connection pool (default 2)
    --database-max-open-conn int The maximum number of open connections to the database
    --database-name string The name of the Yucca database (default "yucca")
    --database-password string The database user's password (not applicable for sqlite3) (default "postgres")
    --database-path string SQLite database location
    --database-ssl-mode string SSL mode for Postgres (disable, require or verify-full) (default "disable")
    --database-user string The database user (not applicable for sqlite3) (default "postgres")
    -h, --help Help for migrate
    --state-dir string The directory used to store state and other persistent data (default "<data-dir>/state")
  4. In the configuration, specify the new database type postgres and the connection details.

  5. Start the Yucca server:

    sudo systemctl start yucca
  6. Make sure that Yucca is now using postgres – you can see this in the configuration section /ui/administration/config or in the log at server startup.