Skip to main content

Managing databases

Every Odoo database of every instance lives in the one shared odoo-postgres container. An instance owns its databases; one of them is the active database that the instance serves.

Creating and initialising

Remote or localagainst prod-1
# odoocli instance database create --instance acme
Remote or localagainst prod-1
# odoocli instance database init --instance acme

create makes an empty PostgreSQL database. init runs Odoo's own initialisation into it, which is what turns it into an Odoo database.

Databases per instanceUnregisteredCommunityDeveloperProfessionalProvider
Limit1UnlimitedUnlimitedUnlimitedUnlimited

Listing

Remote or localagainst prod-1
# odoocli instance database list --instance acme
Remote or localagainst prod-1
# odoocli instance database size --instance acme

Cloning

Remote or localagainst prod-1
# odoocli instance database clone --instance acme

Cloning is the normal way to make a test copy of production: it copies the database within the same PostgreSQL server, which is far faster than dumping and loading.

Dumping and loading

Remote or localagainst prod-1
# odoocli instance database dump --instance acme
Remote or localagainst prod-1
# odoocli instance database load --instance acme

dump and load move a database as a file. That is what you want when the destination is a different server, or when the file is going somewhere Antelao does not manage.

Note that load counts as a restore for licensing purposes:

Renaming and removing

Remote or localagainst prod-1
# odoocli instance database rename --instance acme
Remote or localagainst prod-1
# odoocli instance database remove --instance acme

Activating

Remote or localagainst prod-1
# odoocli instance database activate --instance acme

The active database is the one the instance serves. Switching it is how you promote a restored or cloned database into production.

Maintenance

Remote or localagainst prod-1
# odoocli instance database vacuum --instance acme
Remote or localagainst prod-1
# odoocli instance database reindex --instance acme

Both can also be scheduled. See Maintenance.

Odoo users inside a database

Antelao can manage the Odoo-side accounts in a database, separately from the management UI's own users:

Remote or localagainst prod-1
# odoocli instance database user list --instance acme
Remote or localagainst prod-1
# odoocli instance database user password-reset --instance acme
Remote or localagainst prod-1
# odoocli instance database user totp-disable --instance acme

These are break-glass tools for when someone has locked themselves out of Odoo itself. They are not a substitute for managing users inside Odoo.

Other operations

CommandWhat it does
instance database shellA psql session against the database
instance database clocCounts lines of code in the database's custom modules
instance database comment get / setReads and writes the database's PostgreSQL comment
instance database migrate-filestoreMoves the Odoo filestore
instance database reset-permissionsRepairs ownership and grants
instance database sysadmin create / removeManages the database superuser account
instance database recaptchaConfigures reCAPTCHA keys in the database