Различия
Показаны различия между двумя версиями страницы.
Предыдущая версия | |||
— | rezervnoe_kopirovanie_i_vosstanovlenie_v_postgresql [2025/07/06 12:39] (текущий) – внешнее изменение 127.0.0.1 | ||
---|---|---|---|
Строка 1: | Строка 1: | ||
+ | ====== Резервное копирование и восстановление ====== | ||
+ | ~~Title: Резервное копирование и восстановление PostgreSQL ~~ | ||
+ | {{htmlmetatags> | ||
+ | metatag-keywords=(резервирование PostgreSQL) | ||
+ | metatag-description=(Логика бекапов базы данных. Пример полного логического (SQL) резервирования и восстановления базы PostgreSQL.) | ||
+ | }} | ||
+ | |||
+ | * **WAL** (Write Ahead Log) - лог с упреждением. Является механизмом протоколирования всех транзакций. Позволяет восстановить систему после возможных сбоев. WAL состоит из последовательности файлов, | ||
+ | * [[Репликация PostgreSQL]] | ||
+ | |||
+ | Резервное копирование и восстановление в [[PostgreSQL|PostgreSQL]]. Существуют три принципиально различных подхода к резервному копированию данных PostgreSQL: | ||
+ | * Логическое резервирование: | ||
+ | * Физическое копирование файловой системы; | ||
+ | * Непрерывное резервное копирование. | ||
+ | |||
+ | ===== Восстановление после сбоя ===== | ||
+ | Если работа сервера аварийно завершается, | ||
+ | |||
+ | |||
+ | **Восстановление после сбоя**. Все изменения данных записываются на диск только после их гарантированного журналирования в WAL. Следует заметить, | ||
+ | |||
+ | В логе WAL есть контрольный точки (checkpoints). | ||
+ | |||
+ | {{ :: | ||
+ | ===== Логическое резервирование (SQL) ===== | ||
+ | * **pg_dumpall** - выполняет резервную копию всех БД (включая системную). Представляет меньший контроль над процессом создания дампа, чем утилита pg_dump. Лучше использовать pg_dump, а утилитой pg_dumpall с ключем -g сохранить только глобальные данные сервера(пользователи, | ||
+ | * **pg_dump** - выполняет резервирование одной базы данных | ||
+ | Ключи **pg_dump**: | ||
+ | * **-t, --table=TABLE** позволяет помещать в дамп только таблицы (или представления или последовательности или внешние таблицы), | ||
+ | * **-T, --exclude-table=TABLE** Не сбрасывать в дамп любые таблицы соответствующие шаблону table. Шаблон интерпретируется в соответствии с теме же правилами, | ||
+ | * **-v, --verbose** Установить подробный режим. В этом случае pg_dump будет выводить детальные комментарии объекта и время пуска/ | ||
+ | |||
+ | Логическое резервирование заключается в создании текстового файла с командами [[SQL]]. Такой файл можно передать обратно на сервер и воссоздать базу данных в том же состоянии, | ||
+ | * Создаем бэкап с помощью pg_dump< | ||
+ | pg_dump -U postgres dbname > outfile | ||
+ | </ | ||
+ | * Для восстановления такого бэкапа достаточно выполнить:< | ||
+ | psql -U postgres dbname < infile | ||
+ | </ | ||
+ | postgres=# create database dbname; | ||
+ | </ | ||
+ | |||
+ | <note important> | ||
+ | |||
+ | * Бекап только одной таблицы codes из БД testbd777< | ||
+ | pg_dump -U postgres testbd777 -t codes > codes_backup`date +%d.%m.%Y-%H.%M`.sql | ||
+ | </ | ||
+ | * Ключ **-s** (--schema-only) позволяет создать только схему БД без данных, | ||
+ | $ sudo -u postgres pg_dump -s mbillcz5054 > mbillcz5054_schema.sql | ||
+ | </ | ||
+ | * Ключ **--inserts** позволяет сделать бекап в формате SQL< | ||
+ | # pg_dump -U postgres --inserts testbd777 -t codes > codes_backup`date +%d.%m.%Y-%H.%M`.sql | ||
+ | </ | ||
+ | * Восстановление всего бекапа с остановкой на первой ошибке< | ||
+ | psql -h localhost -U postgres --set ON_ERROR_STOP=on -f mydb.sql | ||
+ | </ | ||
+ | ==== Пример ==== | ||
+ | **Пример**: | ||
+ | - Копируем глобальный данные сервера, | ||
+ | sudo -u postgres pg_dumpall --globals-only > globals-only_`date +%Y-%m-%d.%H.%M`.sql | ||
+ | </ | ||
+ | - Можно сохранить определение объектов базы данных: | ||
+ | sudo -u postgres pg_dumpall --schema-only > schema-only_`date +%d.%m.%Y-%H.%M`.sql | ||
+ | </ | ||
+ | - Копируем данные. Копируем каждую базу данных при помощи утилиты pg_dump< | ||
+ | pg_dump -U postgres mbillcz5054 | gzip > mbillcz5054_backup_`date +%Y-%m-%d.%H.%M`.sql.gz | ||
+ | </ | ||
+ | pg_dump -U postgres mbillcz5054 -T cdr | gzip > mbillcz5054_backup_`date +%d.%m.%Y-%H.%M`_NO_cdr.sql.gz | ||
+ | sudo -u postgres pg_dump -s mbillcz5054 -t cdr > schema-only.cdr.sql | ||
+ | </ | ||
+ | - Перед восстановлением нужно создать базу данных mbillcz5054< | ||
+ | sudo -u postgres createdb mbillcz5054 | ||
+ | </ | ||
+ | - Восстановление пользовательских ролей, групп< | ||
+ | psql -U postgres -f globals-only.sql | ||
+ | </ | ||
+ | - Восстановление данных БД mbillcz5054 из сжатого бекапа. Создание исключенной таблицы.< | ||
+ | gunzip -c mbillcz5054_backup.sql.gz | psql -U postgres mbillcz5054 | ||
+ | |||
+ | psql -U postgres mb11 -f cdr_create.sql | ||
+ | </ | ||
+ | - Желательно запустить ANALYZE для свеже восстановленной базы данных.< | ||
+ | mbillcz5054=# | ||
+ | </ | ||
+ | ===== Скрипт для резервирования БД ===== | ||
+ | |||
+ | <file bash> | ||
+ | #!/bin/bash | ||
+ | |||
+ | # Backup | ||
+ | |||
+ | DIR="/ | ||
+ | TIMENAME=`date +%Y-%m-%d.%H.%M` | ||
+ | PG_DUMP="/ | ||
+ | SUDO="/ | ||
+ | GZIP="/ | ||
+ | ExcludeTable=" | ||
+ | DBNAME=mbillcz5054 | ||
+ | BACKUP=$DIR/ | ||
+ | |||
+ | echo "$SUDO -u postgres $PG_DUMP $DBNAME $ExcludeTable | $GZIP > $BACKUP"; | ||
+ | |||
+ | $SUDO -u postgres $PG_DUMP $DBNAME $ExcludeTable | $GZIP > $BACKUP; | ||
+ | |||
+ | echo `/ | ||
+ | </ | ||
+ | Запускаем еженедельно при помощи [[anacron|anacron]] (если установлено) или [[cron|cron]], | ||
+ | < | ||
+ | # ln -s / | ||
+ | </ | ||
+ | |||
+ | ===== Дополнительная информация по изучению PostgreSQL | ||
+ | |||
+ | * [[https:// | ||
+ | * [[https:// | ||
+ | * [[https:// | ||
+ | * [[pg_basebackup]] |
📌 Удобный подбор VPS по параметрам доступен на DIEGfinder.com - официальном инструменте проекта DIEG. Это часть единой экосистемы, созданной для того, чтобы помочь быстро найти подходящий VPS/VDS сервер для любых задач хостинга.
📌 Для тестирования скриптов, установщиков VPN и Python-ботов рекомендуем использовать надежные VPS на короткий срок. Подробнее о быстрой аренде VPS для экспериментов - читайте здесь.
💥 Подпишись в Телеграм 💥 и задай вопрос по сайтам и хостингам бесплатно!7 Самых Популярных Статей
- Как запустить скрипты и веб-приложения на Python
- Что такое страны TIER 1,2,3
- 7 способов сравнения файлов по содержимому в Windows или Linux
- Установка и тестирование веб-панели HestiaCP
- Nginx простые примеры конфигурации
- top, htop, atop определение загрузки ОС (Load average, LA)
- Использование rsync в примерах
7 Самых Популярных Обзоров
- Хостинг для Python-скриптов и приложений
- ТОП 4 лучших антидетект браузеров (Бесплатные & Платные)
- Подборка купонов (промокоды) на хостинг, антидетект браузеры
- Обзор THE.Hosting (PQ Hosting): надежный хостинг с профессиональной поддержкой
- Хостинг в России
- Хостинг в Европе
- Обзор браузера Dolphin {anty} для мультиаккаунтинга