mirror of
https://gitlab.com/wgp/dougal/software.git
synced 2025-12-06 12:47:08 +00:00
98 lines
3.2 KiB
Markdown
98 lines
3.2 KiB
Markdown
# Database configuration
|
|
|
|
## Database template (`database-template.sql`)
|
|
|
|
Used on installation to create the Dougal database.
|
|
|
|
Created with:
|
|
|
|
```bash
|
|
pg_dump -U postgres --create --schema-only --exclude-schema='survey_*' dougal >database-template.sql
|
|
```
|
|
|
|
## Schema template (`schema-template.sql`)
|
|
|
|
Used by [`bin/create-survey.sh`](../../bin/create-survey.sh) during project creation to add and populate a new schema.
|
|
|
|
Created with:
|
|
|
|
```bash
|
|
SCHEMA_NAME=survey_X EPSG_CODE=XXXXX $DOUGAL_ROOT/sbin/dump_schema.sh
|
|
```
|
|
|
|
## To create a new Dougal database
|
|
|
|
Ensure that the following packages are installed:
|
|
|
|
* `postgresql*-postgis-utils`
|
|
* `postgresql*-postgis`
|
|
* `postgresql*-contrib` # For B-trees
|
|
|
|
```bash
|
|
psql -U postgres <./database-template.sql
|
|
```
|
|
|
|
---
|
|
|
|
# Upgrading PostgreSQL
|
|
|
|
The following is based on https://en.opensuse.org/SDB:PostgreSQL#Upgrading_major_PostgreSQL_version
|
|
|
|
```bash
|
|
# The following bash code should be checked and executed
|
|
# line for line whenever you do an upgrade. The example
|
|
# shows the upgrade process from an original installation
|
|
# of version 12 up to version 14.
|
|
|
|
# install the new server as well as the required postgresql-contrib packages:
|
|
zypper in postgresql14-server postgresql14-contrib postgresql12-contrib
|
|
|
|
# If not yet done, copy the configuration create a new PostgreSQL configuration directory...
|
|
mkdir /etc/postgresql
|
|
# and copy the original file to this global directory
|
|
cd /srv/pgsql/data
|
|
for i in pg_hba.conf pg_ident.conf postgresql.conf postgresql.auto.conf ; do cp -a $i /etc/postgresql/$i ; done
|
|
|
|
# Now create a new data-directory and initialize it for usage with the new server
|
|
install -d -m 0700 -o postgres -g postgres /srv/pgsql/data14
|
|
cd /srv/pgsql/data14
|
|
sudo -u postgres /usr/lib/postgresql14/bin/initdb .
|
|
|
|
# replace the newly generated files by a symlink to the global files.
|
|
# After doing so, you may check the difference of the created backup files and
|
|
# the files from the former installation
|
|
for i in pg_hba.conf pg_ident.conf postgresql.conf postgresql.auto.conf ; do old $i ; ln -s /etc/postgresql/$i .; done
|
|
|
|
# Copy over special thesaurus files if some exists.
|
|
#cp -a /usr/share/postgresql12/tsearch_data/my_thesaurus_german.ths /usr/share/postgresql14/tsearch_data/
|
|
|
|
# Now it's time to disable the service...
|
|
systemctl stop postgresql.service
|
|
|
|
# And to start the migration. Please ensure, the directories fit to your upgrade path
|
|
sudo -u postgres /usr/lib/postgresql14/bin/pg_upgrade --link \
|
|
--old-bindir="/usr/lib/postgresql12/bin" \
|
|
--new-bindir="/usr/lib/postgresql14/bin" \
|
|
--old-datadir="/srv/pgsql/data/" \
|
|
--new-datadir="/srv/pgsql/data14/"
|
|
|
|
# After successfully migrating the data...
|
|
cd ..
|
|
# if not already symlinked move the old data to a versioned directory matching
|
|
# your old installation...
|
|
mv data data12
|
|
# and set a symlink to the new data directory
|
|
ln -sf data14/ data
|
|
|
|
# Now start the new service
|
|
systemctl start postgresql.service
|
|
|
|
# If everything has been sucessful, you should uninstall old packages...
|
|
#zypper rm -u postgresql12 postgresql13
|
|
# and remove old data directories
|
|
#rm -rf /srv/pgsql/data_OLD_POSTGRES_VERSION_NUMBER
|
|
|
|
# For good measure:
|
|
sudo -u postgres /usr/lib/postgresql14/bin/vacuumdb --all --analyze-in-stages
|
|
```
|