diff options
author | Richard van der Hoff <1389908+richvdh@users.noreply.github.com> | 2021-05-07 10:22:05 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-05-07 10:22:05 +0100 |
commit | 25f43faa70f7cc58493b636c2702ae63395779dc (patch) | |
tree | e615a9ea3de2fc556534bd4ab8bca9735b2d959a /synapse/storage/schema/README.md | |
parent | Export jemalloc stats to prometheus when used (#9882) (diff) | |
download | synapse-25f43faa70f7cc58493b636c2702ae63395779dc.tar.xz |
Reorganise the database schema directories (#9932)
The hope here is that by moving all the schema files into synapse/storage/schema, it gets a bit easier for newcomers to navigate. It certainly got easier for me to write a helpful README. There's more to do on that front, but I'll follow up with other PRs for that.
Diffstat (limited to 'synapse/storage/schema/README.md')
-rw-r--r-- | synapse/storage/schema/README.md | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/synapse/storage/schema/README.md b/synapse/storage/schema/README.md new file mode 100644 index 0000000000..030153db64 --- /dev/null +++ b/synapse/storage/schema/README.md @@ -0,0 +1,37 @@ +# Synapse Database Schemas + +This directory contains the schema files used to build Synapse databases. + +Synapse supports splitting its datastore across multiple physical databases (which can +be useful for large installations), and the schema files are therefore split according +to the logical database they are apply to. + +At the time of writing, the following "logical" databases are supported: + +* `state` - used to store Matrix room state (more specifically, `state_groups`, + their relationships and contents.) +* `main` - stores everything else. + +Addionally, the `common` directory contains schema files for tables which must be +present on *all* physical databases. + +## Full schema dumps + +In the `full_schemas` directories, only the most recently-numbered snapshot is useful +(`54` at the time of writing). Older snapshots (eg, `16`) are present for historical +reference only. + +## Building full schema dumps + +If you want to recreate these schemas, they need to be made from a database that +has had all background updates run. + +To do so, use `scripts-dev/make_full_schema.sh`. This will produce new +`full.sql.postgres` and `full.sql.sqlite` files. + +Ensure postgres is installed, then run: + + ./scripts-dev/make_full_schema.sh -p postgres_username -o output_dir/ + +NB at the time of writing, this script predates the split into separate `state`/`main` +databases so will require updates to handle that correctly. |