db:postgresql
Различия
Показаны различия между двумя версиями страницы.
Предыдущая версия справа и слеваПредыдущая версияСледующая версия | Предыдущая версия | ||
db:postgresql [31.07.2023 20:07] – kubada | db:postgresql [27.06.2024 11:26] (текущий) – kubada | ||
---|---|---|---|
Строка 1: | Строка 1: | ||
+ | === Ошибка Stale postmaster.pid file === | ||
+ | <code bash> | ||
+ | cd / | ||
+ | ls | ||
+ | rm var-14/ | ||
+ | </ | ||
+ | |||
+ | ---- | ||
+ | |||
=== Преобразовать тип колонки из text в datetime === | === Преобразовать тип колонки из text в datetime === | ||
Строка 43: | Строка 52: | ||
postgres=# CREATE DATABASE template1 WITH owner=postgres ENCODING = ' | postgres=# CREATE DATABASE template1 WITH owner=postgres ENCODING = ' | ||
postgres=# UPDATE pg_database SET datistemplate = TRUE WHERE datname = ' | postgres=# UPDATE pg_database SET datistemplate = TRUE WHERE datname = ' | ||
+ | </ | ||
+ | |||
+ | ---- | ||
+ | |||
+ | === Backup === | ||
+ | <code bash> | ||
+ | ############################## | ||
+ | ## POSTGRESQL BACKUP CONFIG ## | ||
+ | ############################## | ||
+ | |||
+ | # Optional system user to run backups as. If the user the script is running as doesn' | ||
+ | # the script terminates. | ||
+ | BACKUP_USER= | ||
+ | |||
+ | # Optional hostname to adhere to pg_hba policies. | ||
+ | HOSTNAME= | ||
+ | |||
+ | # Optional username to connect to database as. Will default to " | ||
+ | USERNAME= | ||
+ | |||
+ | # This dir will be created if it doesn' | ||
+ | # running as. | ||
+ | BACKUP_DIR=/ | ||
+ | |||
+ | # List of strings to match against in database name, separated by space or comma, for which we only | ||
+ | # wish to keep a backup of the schema, not the data. Any database names which contain any of these | ||
+ | # values will be considered candidates. (e.g. " | ||
+ | SCHEMA_ONLY_LIST="" | ||
+ | |||
+ | # Will produce a custom-format backup if set to " | ||
+ | ENABLE_CUSTOM_BACKUPS=yes | ||
+ | |||
+ | # Will produce a gzipped plain-format backup if set to " | ||
+ | ENABLE_PLAIN_BACKUPS=yes | ||
+ | |||
+ | # Will produce gzipped sql file containing the cluster globals, like users and passwords, if set to " | ||
+ | ENABLE_GLOBALS_BACKUPS=yes | ||
+ | |||
+ | |||
+ | #### SETTINGS FOR ROTATED BACKUPS #### | ||
+ | |||
+ | # Which day to take the weekly backup from (1-7 = Monday-Sunday) | ||
+ | DAY_OF_WEEK_TO_KEEP=5 | ||
+ | |||
+ | # Number of days to keep daily backups | ||
+ | DAYS_TO_KEEP=7 | ||
+ | |||
+ | # How many weeks to keep weekly backups | ||
+ | WEEKS_TO_KEEP=5 | ||
+ | |||
+ | ###################################### | ||
+ | </ | ||
+ | |||
+ | <code bash> | ||
+ | #!/bin/bash | ||
+ | |||
+ | ########################### | ||
+ | ####### LOAD CONFIG ####### | ||
+ | ########################### | ||
+ | |||
+ | while [ $# -gt 0 ]; do | ||
+ | case $1 in | ||
+ | -c) | ||
+ | if [ -r " | ||
+ | source " | ||
+ | shift 2 | ||
+ | else | ||
+ | ${ECHO} " | ||
+ | exit 1 | ||
+ | fi | ||
+ | ;; | ||
+ | *) | ||
+ | ${ECHO} " | ||
+ | exit 2 | ||
+ | ;; | ||
+ | esac | ||
+ | done | ||
+ | |||
+ | if [ $# = 0 ]; then | ||
+ | SCRIPTPATH=$(cd ${0%/*} && pwd -P) | ||
+ | source $SCRIPTPATH/ | ||
+ | fi; | ||
+ | |||
+ | ########################### | ||
+ | #### PRE-BACKUP CHECKS #### | ||
+ | ########################### | ||
+ | |||
+ | # Make sure we're running as the required backup user | ||
+ | if [ " | ||
+ | echo "This script must be run as $BACKUP_USER. Exiting." | ||
+ | exit 1; | ||
+ | fi; | ||
+ | |||
+ | |||
+ | ########################### | ||
+ | ### INITIALISE DEFAULTS ### | ||
+ | ########################### | ||
+ | |||
+ | if [ ! $HOSTNAME ]; then | ||
+ | HOSTNAME=" | ||
+ | fi; | ||
+ | |||
+ | if [ ! $USERNAME ]; then | ||
+ | USERNAME=" | ||
+ | fi; | ||
+ | |||
+ | |||
+ | ########################### | ||
+ | #### START THE BACKUPS #### | ||
+ | ########################### | ||
+ | |||
+ | |||
+ | FINAL_BACKUP_DIR=$BACKUP_DIR" | ||
+ | |||
+ | echo " | ||
+ | |||
+ | if ! mkdir -p $FINAL_BACKUP_DIR; | ||
+ | echo " | ||
+ | exit 1; | ||
+ | fi; | ||
+ | |||
+ | |||
+ | ####################### | ||
+ | ### GLOBALS BACKUPS ### | ||
+ | ####################### | ||
+ | |||
+ | echo -e " | ||
+ | echo -e " | ||
+ | |||
+ | if [ $ENABLE_GLOBALS_BACKUPS = " | ||
+ | then | ||
+ | echo " | ||
+ | |||
+ | set -o pipefail | ||
+ | if ! pg_dumpall -g -h " | ||
+ | echo " | ||
+ | else | ||
+ | mv $FINAL_BACKUP_DIR" | ||
+ | fi | ||
+ | set +o pipefail | ||
+ | else | ||
+ | echo " | ||
+ | fi | ||
+ | |||
+ | |||
+ | ########################### | ||
+ | ### SCHEMA-ONLY BACKUPS ### | ||
+ | ########################### | ||
+ | |||
+ | for SCHEMA_ONLY_DB in ${SCHEMA_ONLY_LIST//,/ | ||
+ | do | ||
+ | SCHEMA_ONLY_CLAUSE=" | ||
+ | done | ||
+ | |||
+ | SCHEMA_ONLY_QUERY=" | ||
+ | |||
+ | echo -e " | ||
+ | echo -e " | ||
+ | |||
+ | SCHEMA_ONLY_DB_LIST=`psql -h " | ||
+ | |||
+ | echo -e "The following databases were matched for schema-only backup: | ||
+ | |||
+ | for DATABASE in $SCHEMA_ONLY_DB_LIST | ||
+ | do | ||
+ | echo " | ||
+ | |||
+ | set -o pipefail | ||
+ | if ! pg_dump -Fp -s -h " | ||
+ | echo " | ||
+ | else | ||
+ | mv $FINAL_BACKUP_DIR" | ||
+ | fi | ||
+ | set +o pipefail | ||
+ | done | ||
+ | |||
+ | |||
+ | ########################### | ||
+ | ###### FULL BACKUPS ####### | ||
+ | ########################### | ||
+ | |||
+ | for SCHEMA_ONLY_DB in ${SCHEMA_ONLY_LIST//,/ | ||
+ | do | ||
+ | EXCLUDE_SCHEMA_ONLY_CLAUSE=" | ||
+ | done | ||
+ | |||
+ | FULL_BACKUP_QUERY=" | ||
+ | |||
+ | echo -e " | ||
+ | echo -e " | ||
+ | |||
+ | for DATABASE in `psql -h " | ||
+ | do | ||
+ | if [ $ENABLE_PLAIN_BACKUPS = " | ||
+ | then | ||
+ | echo "Plain backup of $DATABASE" | ||
+ | |||
+ | set -o pipefail | ||
+ | if ! pg_dump -Fp -h " | ||
+ | echo " | ||
+ | else | ||
+ | mv $FINAL_BACKUP_DIR" | ||
+ | fi | ||
+ | set +o pipefail | ||
+ | fi | ||
+ | |||
+ | if [ $ENABLE_CUSTOM_BACKUPS = " | ||
+ | then | ||
+ | echo " | ||
+ | |||
+ | if ! pg_dump -Fc -h " | ||
+ | echo " | ||
+ | else | ||
+ | mv $FINAL_BACKUP_DIR" | ||
+ | fi | ||
+ | fi | ||
+ | |||
+ | done | ||
+ | |||
+ | echo -e "\nAll database backups complete!" | ||
</ | </ | ||
---- | ---- |
db/postgresql.1690823225.txt.gz · Последнее изменение: 31.07.2023 20:07 — kubada