PostGIS / Poznámky k administraci

Z FreeGIS portál
Přejít na: navigace, hledání

Stránka shromažďuje poznámky ohledne administrace PostGIS.

Poznámky k administraci databáze zde.

Cluster upgrade

Poznámky k upgrade cluster pro PostgreSQL zde.

pg_dumpall_pgis.sh
#!/bin/sh

list=`psql -c "SELECT datname FROM pg_database WHERE datistemplate = false;" -t`
for db in $list; do
    echo $db
    pg_dump -Fc -b -v -f $db.dump $db
done

exit 0
pg_restore_pgis.sh
#!/bin/sh

pgis=0
if test -n "$1" ; then
    pgis="$1"
fi

for file in *.dump; do
    db=${file%.dump}
    echo "$file -> $db"
    psql -c"drop database $db"
    psql -c"create database $db"
    if [ $pgis -gt 0 ] ; then
        echo "-> PostGIS"
        psql -d $db -c "CREATE EXTENSION postgis;"
    fi
    if [ $pgis -gt 1 ] ; then
        echo "-> PostGIS Raster"
        psql -d $db -c "CREATE EXTENSION postgis_raster;"
    fi
    if [ $pgis -gt 2 ] ; then
        echo "-> PostGIS Topology"
        psql -d $db -c "CREATE EXTENSION postgis_topology;";
    fi
    if [ $pgis -gt 3 ] ; then
        echo "-> PostGIS Routing"
        psql $db -f /usr/share/pgrouting/routing_core.sql
        psql $db -f /usr/share/pgrouting/routing_core_wrappers.sql
        psql $db -f /usr/share/pgrouting/routing_topology.sql
    fi
    if [ $pgis -gt 0 ] ; then
        /usr/share/postgresql/9.1/contrib/postgis-2.0/postgis_restore.pl $file | psql -d $db
    else
        pg_restore -Fc -d $db $file
    fi
done

exit 0

Kopírovat data mezi databázemi

Příklad kopírování dat definovaných schématem mezi různými databázemi.

pg_dump -Fc -b -v -f gis1.dump -n gis1 pgis_student
pg_restore -Fc -d pgis_uzpd gis1.dump

Doporučené nastavení PostgreSQL

shared_buffers = 128MB      (default is 24MB)
temp_buffers = 32MB         (default is 8MB)
work_mem = 8MB              (default is 1MB)
maintenance_work_mem = 32MB (default is 16MB)
max_stack_depth = 4MB       (default is 2MB)
checkpoint_segments = 24    (default is 3)

Poznámka pro Debian:

cp /etc/sysctl.conf /etc/sysctl.conf-orig 
sh -c 'echo "#\n# For postgres\nkernel.shmmax = 150000000" >> /etc/sysctl.conf'
sysctl -p

Aktualizace PostGIS

Viz manual.

select postgis_lib_version();

2.2.0dev
ALTER EXTENSION postgis UPDATE TO "2.2.0dev";

Ukázka skriptu:

#!/bin/sh

DB=$1
VERSION=$2

if test -z "$2"; then
    echo "usage: $0 DB VERSION"
    exit 1
fi

if test -n "$3"; then
    PGPATH=$3
    psql -d $DB -f $PGPATH/postgis_upgrade_20_minor.sql
    psql -d $DB -f $PGPATH/rtpostgis_upgrade_20_minor.sql
    psql -d $DB -f $PGPATH/topology_upgrade_20_minor.sql
else
    psql -d $DB -c "ALTER EXTENSION postgis UPDATE TO \"$VERSION\";"
    psql -d $DB -c "ALTER EXTENSION postgis_topology UPDATE TO \"$VERSION\";"
fi

exit 0

Vytvoření PostGIS databáze v PostgreSQL menší než 9.1

createdb <databáze>
createlang plpgsql <databáze>
psql -d <databáze> -f cesta/k/postgis.sql
psql -d <databáze> -f cesta/k/spatial_ref_sys.sql 

Příklad založení PostGIS databáze (Bash skript):

export DB=template_postgis
export PGPATH=/usr/share/postgresql/8.4/contrib/postgis-2.0/

createdb $DB
createlang plpgsql $DB
psql -d $DB -f $PGPATH/postgis.sql
psql -d $DB -f $PGPATH/spatial_ref_sys.sql 

# volitene PostGIS Raster
psql -d $DB -f $PGPATH/rtpostgis.sql

# volitene PostGIS Topology
psql -d $DB -f $PGPATH/topology.sql

Poznámka: Pro nahrání dávky postgis.sql jsou vyžadována práva "superuživatele" (superuser) databázového systému PostgreSQL.