mirror of
https://git.freebsd.org/ports.git
synced 2025-06-25 06:30:29 -04:00
PostgreSQL 11, the latest version of the world’s most advanced open source database. PostgreSQL 11 provides users with improvements to overall performance of the database system, with specific enhancements associated with very large databases and high computational workloads. Further, PostgreSQL 11 makes significant improvements to the table partitioning system, adds support for stored procedures capable of transaction management, improves query parallelism and adds parallelized data definition capabilities, and introduces just-in-time (JIT) compilation for accelerating the execution of expressions in queries. "For PostgreSQL 11, our development community focused on adding features that improve PostgreSQL's ability to manage very large databases," said Bruce Momjian, a core team member of the PostgreSQL Global Development Group. "On top of PostgreSQL's proven performance for transactional workloads, PostgreSQL 11 makes it even easier for developers to run big data applications at scale." PostgreSQL benefits from over 20 years of open source development and has become the preferred open source relational database for developers. The project continues to receive recognition across the industry, and has been featured as the "DBMS of the Year 2017" by DB-Engines and in the SD Times 2018 100. PostgreSQL 11 is the first major release since PostgreSQL 10 was released on October 5, 2017. The next update release for PostgreSQL 11 containing bug fixes will be PostgreSQL 11.1, and the next major release with new features will be PostgreSQL 12. Release Notes: https://www.postgresql.org/docs/11/static/release-11.html
116 lines
3 KiB
Bash
116 lines
3 KiB
Bash
#!/bin/sh
|
||
#
|
||
# $FreeBSD$
|
||
#
|
||
# Maintenance shell script to vacuum and backup database
|
||
# Put this in /usr/local/etc/periodic/daily, and it will be run
|
||
# every night
|
||
#
|
||
# Written by Palle Girgensohn <girgen@pingpong.net>
|
||
#
|
||
# In public domain, do what you like with it,
|
||
# and use it at your own risk... :)
|
||
#
|
||
|
||
# Define these variables in either /etc/periodic.conf or
|
||
# /etc/periodic.conf.local to override the default values.
|
||
#
|
||
# daily_pgsql_backup_enable="YES" # do backup of all databases
|
||
# daily_pgsql_backup_enable="foo bar db1 db2" # only do backup of a limited selection of databases
|
||
# daily_pgsql_vacuum_enable="YES" # do vacuum
|
||
|
||
# If there is a global system configuration file, suck it in.
|
||
#
|
||
if [ -r /etc/defaults/periodic.conf ]
|
||
then
|
||
. /etc/defaults/periodic.conf
|
||
source_periodic_confs
|
||
fi
|
||
|
||
: ${daily_pgsql_user:="%%PG_USER%%"}
|
||
: ${daily_pgsql_port:=5432}
|
||
: ${daily_pgsql_vacuum_args:="-U ${daily_pgsql_user} -p ${daily_pgsql_port} -qaz"}
|
||
: ${daily_pgsql_pgdump_args:="-U ${daily_pgsql_user} -p ${daily_pgsql_port} -bF c"}
|
||
: ${daily_pgsql_pgdumpall_globals_args:="-U ${daily_pgsql_user} -p ${daily_pgsql_port}"}
|
||
# backupdir is relative to ~pgsql home directory unless it begins with a slash:
|
||
: ${daily_pgsql_backupdir:="~${daily_pgsql_user}/backups"}
|
||
: ${daily_pgsql_savedays:="7"}
|
||
|
||
# allow '~´ in dir name
|
||
eval backupdir=${daily_pgsql_backupdir}
|
||
|
||
rc=0
|
||
|
||
pgsql_backup() {
|
||
# daily_pgsql_backupdir must be writeable by user %%PG_USER%%
|
||
# ~%%PG_USER%% is just that under normal circumstances,
|
||
# but this might not be where you want the backups...
|
||
if [ ! -d ${backupdir} ] ; then
|
||
echo Creating ${backupdir}
|
||
mkdir -m 700 ${backupdir}; chown ${daily_pgsql_user} ${backupdir}
|
||
fi
|
||
|
||
echo
|
||
echo "PostgreSQL backups"
|
||
|
||
# Protect the data
|
||
umask 077
|
||
rc=$?
|
||
now=`date "+%Y-%m-%dT%H:%M:%S"`
|
||
file=${daily_pgsql_backupdir}/pgglobals_${now}
|
||
su -l ${daily_pgsql_user} -c \
|
||
"umask 077; pg_dumpall -g ${daily_pgsql_pgdumpall_globals_args} | gzip -9 > ${file}.gz"
|
||
|
||
db=$1
|
||
while shift; do
|
||
echo -n " $db"
|
||
file=${backupdir}/pgdump_${db}_${now}
|
||
su -l ${daily_pgsql_user} -c "umask 077; pg_dump ${daily_pgsql_pgdump_args} -f ${file} ${db}"
|
||
[ $? -gt 0 ] && rc=3
|
||
db=$1
|
||
done
|
||
|
||
if [ $rc -gt 0 ]; then
|
||
echo
|
||
echo "Errors were reported during backup."
|
||
fi
|
||
|
||
# cleaning up old data
|
||
find ${backupdir} \( -name 'pgdump_*' -o -name 'pgglobals_*' -o -name '*.dat.gz' -o -name 'toc.dat' \) \
|
||
-a -mtime +${daily_pgsql_savedays} -delete
|
||
echo
|
||
}
|
||
|
||
case "$daily_pgsql_backup_enable" in
|
||
[Yy][Ee][Ss])
|
||
dbnames=`su -l ${daily_pgsql_user} -c "umask 077; psql -U ${daily_pgsql_user} -p ${daily_pgsql_port} -q -t -A -d template1 -c SELECT\ datname\ FROM\ pg_database\ WHERE\ datname!=\'template0\'"`
|
||
pgsql_backup $dbnames
|
||
;;
|
||
|
||
[Nn][Oo])
|
||
;;
|
||
|
||
"")
|
||
;;
|
||
|
||
*)
|
||
pgsql_backup $daily_pgsql_backup_enable
|
||
;;
|
||
esac
|
||
|
||
case "$daily_pgsql_vacuum_enable" in
|
||
[Yy][Ee][Ss])
|
||
|
||
echo
|
||
echo "PostgreSQL vacuum"
|
||
su -l ${daily_pgsql_user} -c "vacuumdb ${daily_pgsql_vacuum_args}"
|
||
if [ $? -gt 0 ]
|
||
then
|
||
echo
|
||
echo "Errors were reported during vacuum."
|
||
rc=3
|
||
fi
|
||
;;
|
||
esac
|
||
|
||
exit $rc
|