Полный дам базы данных:
pg_dump -U user_name -h remote_host -p remote_port name_of_database > name_of_backup_file
Дамп всех таблиц за исключением определенных таблиц trends* history* alerts* events
trends*
- все таблицы начинающиеся на trends включая таблицу trends.
pg_dump -U zabbix -h localhost zabbix --exclude-table='trends*' --exclude-table='history*' --exclude-table='alerts' --exclude-table='events' > zabbix_dump.sql
Создание схема таблиц history
без данных:
pg_dump -U zabbix -h localhost -s zabbix -t 'history*' > history_all.sql
Dump таблицы или таблиц:
pg_dump -d <database_name> -t <table_name> > file.sql
pg_dump -U zabbix -h localhost -d zabbix -t 'service*' > service_all.sql
Востановление базы данных:
psql -h localhost -U user_name -p 5432 name_of_database < path/to/store/name.sql
Востановление таблицы в базу:
psql -d zabbix -h localhost -U zabbix < trends_all.sql
Создание дампа контейнера
docker exec -t postgres pg_dumpall -c -U n8n > $PWD/dump_`date +%d-%m-%Y"_"%H_%M_%S`.sql && ls -lh $PWD/dump_*
dump co сжатием
docker exec -t postgres pg_dumpall -c -U n8n | gzip > $PWD/n8n_$(date +"%Y-%m-%d_%H_%M_%S").gz
Востановить dump
cat your_dump.sql | docker exec -i your-db-container psql -U postgres
Востановление сжатого dump в docker
gunzip < n8n.sql.gz | docker exec -i postgres psql -U n8n -d n8n
#!/bin/bash
REMOTE_HOST="db-host"
REMOTE_PORT="5432"
DB_USER="db_user"
DB_NAME="db_name"
date_time="`date "+%Y-%m-%d_%H-%M"`"
DUMP_DIR="/tmp/$DB_NAME-$date_time"
DUMP_FILE="$DUMP_DIR/$DB_NAME-$date_time.sql.gz"
export PGPASSWORD="You_pass"
echo "-= create DIR: $DUMP_DIR =-"
mkdir -p "$DUMP_DIR"
pg_dump -h $REMOTE_HOST -p $REMOTE_PORT -U $DB_USER -d $DB_NAME | gzip > $DUMP_FILE
if [ $? -ne 0 ]; then
echo "Database dump failed for $DB_NAME on $REMOTE_HOST"
exit 1
else
echo "Database dump successful for $DB_NAME on $REMOTE_HOST"
fi
unset PGPASSWORD
echo "-=START SYNC to S3=-"
aws s3 sync $DUMP_DIR s3://you_bucket/
if [ $? -ne 0 ]; then
echo "SYNC FALED"
exit 1
else
echo "SYNC successful"
fi
echo "-= clear $DUMP_DIR =-"
rm -rf "$DUMP_DIR"
###RESTORE DUMP
##gunzip -c /path/to/your/dumpfile.sql.gz | psql -h your-remote-hostname -p 5432 -U your-username -d your-database-name
При дампе из RDS самостоятельно в будущем можно использовать флаг --no-owner
, чтобы исключить привилегии из дампа
pg_dump -U user --no-owner -d you_db > you_db_dump.sql