HTML Diff
1 added 1 removed
Original 2026-01-01
Modified 2026-02-19
1 <ul><li>/</li>
1 <ul><li>/</li>
2 <li>/</li>
2 <li>/</li>
3 </ul><p>Разработчикам<strong></strong>• Инженерам<strong></strong>• 11 апреля 2025 • 10 мин чтения</p>
3 </ul><p>Разработчикам<strong></strong>• Инженерам<strong></strong>• 11 апреля 2025 • 10 мин чтения</p>
4 <p><strong>Резервное копирование</strong>- важная часть работы с любой системой управления базами данных. Потеря данных может обойтись дорого, особенно если речь идёт о рабочих проектах, где ежедневно обновляется информация. В этой статье разберёмся, как сделать бэкап базы данных PostgreSQL, какие инструменты для этого использовать и как избежать частых ошибок.</p>
4 <p><strong>Резервное копирование</strong>- важная часть работы с любой системой управления базами данных. Потеря данных может обойтись дорого, особенно если речь идёт о рабочих проектах, где ежедневно обновляется информация. В этой статье разберёмся, как сделать бэкап базы данных PostgreSQL, какие инструменты для этого использовать и как избежать частых ошибок.</p>
5 <p><strong>Базовый</strong><strong>способ</strong>- с помощью утилиты pg_dump, которая входит в стандартный пакет PostgreSQL. Она позволяет создать текстовый файл со структурой и содержимым базы. Такой файл можно затем перенести, заархивировать или использовать для восстановления.</p>
5 <p><strong>Базовый</strong><strong>способ</strong>- с помощью утилиты pg_dump, которая входит в стандартный пакет PostgreSQL. Она позволяет создать текстовый файл со структурой и содержимым базы. Такой файл можно затем перенести, заархивировать или использовать для восстановления.</p>
6 <p><strong>Пример простой команды:</strong></p>
6 <p><strong>Пример простой команды:</strong></p>
7 <p>pg_dump -U имя_пользователя имя_базы &gt; backup.sql</p>
7 <p>pg_dump -U имя_пользователя имя_базы &gt; backup.sql</p>
8 <p>Это создаёт дамп базы данных в виде SQL-файла. Он пригодится, если нужно сохранить БД в PostgreSQL в локальном архиве или перенести на другой сервер.</p>
8 <p>Это создаёт дамп базы данных в виде SQL-файла. Он пригодится, если нужно сохранить БД в PostgreSQL в локальном архиве или перенести на другой сервер.</p>
9 <p><strong>Также стоит знать</strong>: перед тем как сделать бэкап базы данных PostgreSQL, желательно убедиться, что активность пользователей минимальна. Это снизит риск конфликтов при чтении данных.</p>
9 <p><strong>Также стоит знать</strong>: перед тем как сделать бэкап базы данных PostgreSQL, желательно убедиться, что активность пользователей минимальна. Это снизит риск конфликтов при чтении данных.</p>
10 <p>Зачем вообще нужно регулярно сохранять базу данных и как организовать процесс резервного копирования грамотно - разберём в следующем разделе.</p>
10 <p>Зачем вообще нужно регулярно сохранять базу данных и как организовать процесс резервного копирования грамотно - разберём в следующем разделе.</p>
11 <p>Зачем нужен бэкап и основные принципы резервного копирования</p>
11 <p>Зачем нужен бэкап и основные принципы резервного копирования</p>
12 <p>Даже надёжные системы могут дать сбой. Ошибки в коде, сбои оборудования, действия злоумышленников - всё это может привести к потере данных. Чтобы защититься, администраторы регулярно создают резервные копии. Это своего рода страховка, которая помогает восстановить базу в исходное состояние за считанные минуты.</p>
12 <p>Даже надёжные системы могут дать сбой. Ошибки в коде, сбои оборудования, действия злоумышленников - всё это может привести к потере данных. Чтобы защититься, администраторы регулярно создают резервные копии. Это своего рода страховка, которая помогает восстановить базу в исходное состояние за считанные минуты.</p>
13 <p><strong>Представьте</strong>: вы случайно удалили таблицу с важной информацией. Без бэкапа - катастрофа, с бэкапом - просто техническая задача. Именно поэтому резервное копирование базы данных PostgreSQL входит в стандартный регламент работы с сервером.</p>
13 <p><strong>Представьте</strong>: вы случайно удалили таблицу с важной информацией. Без бэкапа - катастрофа, с бэкапом - просто техническая задача. Именно поэтому резервное копирование базы данных PostgreSQL входит в стандартный регламент работы с сервером.</p>
14 <p>Вот базовые принципы, которые стоит учитывать:</p>
14 <p>Вот базовые принципы, которые стоит учитывать:</p>
15 <ol><li><strong>Регулярность</strong>. Бэкапы должны выполняться по расписанию: ежедневно, еженедельно или перед важными изменениями.</li>
15 <ol><li><strong>Регулярность</strong>. Бэкапы должны выполняться по расписанию: ежедневно, еженедельно или перед важными изменениями.</li>
16 <li><strong>Надёжность хранения</strong>. Хранить копии лучше в разных местах: локально и в облаке.</li>
16 <li><strong>Надёжность хранения</strong>. Хранить копии лучше в разных местах: локально и в облаке.</li>
17 <li><strong>Контроль целостности</strong>. После создания копии нужно проверять, открывается ли файл и можно ли из него восстановить БД.</li>
17 <li><strong>Контроль целостности</strong>. После создания копии нужно проверять, открывается ли файл и можно ли из него восстановить БД.</li>
18 <li><strong>Минимизация простоев</strong>. Идеально, если процесс копирования не мешает работе пользователей.</li>
18 <li><strong>Минимизация простоев</strong>. Идеально, если процесс копирования не мешает работе пользователей.</li>
19 <li><strong>Разделение доступа</strong>. Только определённые сотрудники должны иметь право создавать и использовать дампы.</li>
19 <li><strong>Разделение доступа</strong>. Только определённые сотрудники должны иметь право создавать и использовать дампы.</li>
20 </ol><p>Многие администраторы ошибочно считают, что однократное резервирование достаточно. Но в случае сбоя такой подход не спасёт. Лучше автоматизировать процесс и не полагаться на память или везение.</p>
20 </ol><p>Многие администраторы ошибочно считают, что однократное резервирование достаточно. Но в случае сбоя такой подход не спасёт. Лучше автоматизировать процесс и не полагаться на память или везение.</p>
21 <p>В курс<strong><a>"PostgreSQL База"</a></strong>мы включили множество практических заданий, основанных на реальных сценариях, с которыми сталкиваются команды эксплуатации. Благодаря интенсивной практике вы сможете укрепить свои навыки и уверенно применять их в своих проектах.</p>
21 <p>В курс<strong><a>"PostgreSQL База"</a></strong>мы включили множество практических заданий, основанных на реальных сценариях, с которыми сталкиваются команды эксплуатации. Благодаря интенсивной практике вы сможете укрепить свои навыки и уверенно применять их в своих проектах.</p>
22 <p>Понимание основ - шаг к устойчивой архитектуре. Далее рассмотрим, как сделать дамп базы данных PostgreSQL с помощью pg_dump - самого популярного инструмента для этой задачи.</p>
22 <p>Понимание основ - шаг к устойчивой архитектуре. Далее рассмотрим, как сделать дамп базы данных PostgreSQL с помощью pg_dump - самого популярного инструмента для этой задачи.</p>
23 <p>pg_dump: основные команды и параметры</p>
23 <p>pg_dump: основные команды и параметры</p>
24 <p>pg_dump - основной инструмент, когда нужно создать дамп базы данныхPostgreSQL. Он прост в использовании и гибкий в настройках. Главное преимущество - возможность выгрузить структуру и данные в удобном для восстановления формате.</p>
24 <p>pg_dump - основной инструмент, когда нужно создать дамп базы данныхPostgreSQL. Он прост в использовании и гибкий в настройках. Главное преимущество - возможность выгрузить структуру и данные в удобном для восстановления формате.</p>
25 <p>Чтобы выгрузить базу, используют команду:</p>
25 <p>Чтобы выгрузить базу, используют команду:</p>
26 <p>pg_dump -U postgres mydb &gt; mydb_backup.sql</p>
26 <p>pg_dump -U postgres mydb &gt; mydb_backup.sql</p>
27 <p>Здесь:</p>
27 <p>Здесь:</p>
28 <ul><li>-U postgres - имя пользователя,</li>
28 <ul><li>-U postgres - имя пользователя,</li>
29 <li>mydb - название базы данных,</li>
29 <li>mydb - название базы данных,</li>
30 <li>&gt; - перенаправление вывода в файл.</li>
30 <li>&gt; - перенаправление вывода в файл.</li>
31 </ul><p>Если нужно скопировать базу данных PostgreSQL частично (например, только структуру без данных), используют флаг --schema-only:</p>
31 </ul><p>Если нужно скопировать базу данных PostgreSQL частично (например, только структуру без данных), используют флаг --schema-only:</p>
32 <p>pg_dump -U postgres --schema-only mydb &gt; schema.sql</p>
32 <p>pg_dump -U postgres --schema-only mydb &gt; schema.sql</p>
33 <p>Для обратной задачи - экспортировать только данные - подходит --data-only:</p>
33 <p>Для обратной задачи - экспортировать только данные - подходит --data-only:</p>
34 <p>pg_dump -U postgres --data-only mydb &gt; data.sql</p>
34 <p>pg_dump -U postgres --data-only mydb &gt; data.sql</p>
35 <p>Можно указать формат вывода. По умолчанию создаётся SQL-файл, но pg_dump также поддерживает сжатый формат (-Fc) - его удобно использовать с утилитой pg_restore:</p>
35 <p>Можно указать формат вывода. По умолчанию создаётся SQL-файл, но pg_dump также поддерживает сжатый формат (-Fc) - его удобно использовать с утилитой pg_restore:</p>
36 <p>pg_dump -U postgres -Fc mydb &gt; mydb.dump</p>
36 <p>pg_dump -U postgres -Fc mydb &gt; mydb.dump</p>
37 <p>Чтобы включить все базы и роли, используют pg_dumpall:</p>
37 <p>Чтобы включить все базы и роли, используют pg_dumpall:</p>
38 <p>pg_dumpall -U postgres &gt; all_dbs.sql</p>
38 <p>pg_dumpall -U postgres &gt; all_dbs.sql</p>
39 <p><strong>Важно</strong>: pg_dump не блокирует доступ к базе, поэтому его можно применять в рабочих системах. Однако при больших объёмах данных стоит быть готовым к временной нагрузке на диск и процессор.</p>
39 <p><strong>Важно</strong>: pg_dump не блокирует доступ к базе, поэтому его можно применять в рабочих системах. Однако при больших объёмах данных стоит быть готовым к временной нагрузке на диск и процессор.</p>
40 <p>Этот способ удобен, когда нужно сохранить БД в PostgreSQL вручную или внедрить его в скрипт резервного копирования. Далее рассмотрим альтернативный вариант - pg_basebackup, подходящий для создания полной физической копии кластера.</p>
40 <p>Этот способ удобен, когда нужно сохранить БД в PostgreSQL вручную или внедрить его в скрипт резервного копирования. Далее рассмотрим альтернативный вариант - pg_basebackup, подходящий для создания полной физической копии кластера.</p>
41 <p>pg_basebackup: особенности использования</p>
41 <p>pg_basebackup: особенности использования</p>
42 <p>pg_basebackup - инструмент для создания полной физической копии PostgreSQL-кластера. В отличие от pg_dump, он копирует не только данные, но и конфигурацию, включая журналы транзакций (WAL). Это особенно важно для репликации и быстрой миграции.</p>
42 <p>pg_basebackup - инструмент для создания полной физической копии PostgreSQL-кластера. В отличие от pg_dump, он копирует не только данные, но и конфигурацию, включая журналы транзакций (WAL). Это особенно важно для репликации и быстрой миграции.</p>
43 <p>Команда для создания резервной копии выглядит так:</p>
43 <p>Команда для создания резервной копии выглядит так:</p>
44 <p>pg_basebackup -U репликатор -D /backup/pgdata -Fp -Xs -P</p>
44 <p>pg_basebackup -U репликатор -D /backup/pgdata -Fp -Xs -P</p>
45 <p>Поясним:</p>
45 <p>Поясним:</p>
46 <ul><li>-U - имя пользователя (должен иметь права репликации),</li>
46 <ul><li>-U - имя пользователя (должен иметь права репликации),</li>
47 <li>-D - путь, куда сохраняется копия,</li>
47 <li>-D - путь, куда сохраняется копия,</li>
48 <li>-Fp - указывает формат (в данном случае plain),</li>
48 <li>-Fp - указывает формат (в данном случае plain),</li>
49 <li>-Xs - включает передачу WAL-файлов,</li>
49 <li>-Xs - включает передачу WAL-файлов,</li>
50 <li>-P - отображает прогресс.</li>
50 <li>-P - отображает прогресс.</li>
51 </ul><p>Инструмент позволяет быстро скопировать базу целиком, включая все настройки. Такой подход особенно полезен для настройки standby-серверов или в ситуациях, когда важно получить полную, побитовую копию БД.</p>
51 </ul><p>Инструмент позволяет быстро скопировать базу целиком, включая все настройки. Такой подход особенно полезен для настройки standby-серверов или в ситуациях, когда важно получить полную, побитовую копию БД.</p>
52 <p><strong>Важно</strong>: pg_basebackup требует, чтобы в конфигурации PostgreSQL были включены параметры wal_level = replica и разрешён доступ для роли репликатора.</p>
52 <p><strong>Важно</strong>: pg_basebackup требует, чтобы в конфигурации PostgreSQL были включены параметры wal_level = replica и разрешён доступ для роли репликатора.</p>
53 <p>Этот метод - оптимальное решение для создания "горячей" резервной копии. Но стоит помнить, что он может использовать больше ресурсов и требует больше прав доступа, чем логическое копирование через pg_dump.</p>
53 <p>Этот метод - оптимальное решение для создания "горячей" резервной копии. Но стоит помнить, что он может использовать больше ресурсов и требует больше прав доступа, чем логическое копирование через pg_dump.</p>
54 <p>Далее рассмотрим, как и зачем использовать WAL-архивирование - третий вариант создания резервной копии базы данных PostgreSQL.</p>
54 <p>Далее рассмотрим, как и зачем использовать WAL-архивирование - третий вариант создания резервной копии базы данных PostgreSQL.</p>
55 <p>Дарим демодоступ к обучению на 3 дня, чтобы вы познакомились с материалами и спикерами курса!</p>
55 <p>Дарим демодоступ к обучению на 3 дня, чтобы вы познакомились с материалами и спикерами курса!</p>
56 <p>Начните бесплатно учиться делать SQL-запросы проще и быстрее</p>
56 <p>Начните бесплатно учиться делать SQL-запросы проще и быстрее</p>
57 <p>WAL-архивирование: когда использовать</p>
57 <p>WAL-архивирование: когда использовать</p>
58 <p><strong>WAL (Write-Ahead Logging)</strong>- это механизм, при котором PostgreSQL сначала записывает все изменения в журнал, а уже затем применяет их к данным. Этот принцип можно использовать для резервного копирования: сохраняя WAL-файлы, вы получаете возможность восстановить базу до любого состояния, включая точку последнего коммита.</p>
58 <p><strong>WAL (Write-Ahead Logging)</strong>- это механизм, при котором PostgreSQL сначала записывает все изменения в журнал, а уже затем применяет их к данным. Этот принцип можно использовать для резервного копирования: сохраняя WAL-файлы, вы получаете возможность восстановить базу до любого состояния, включая точку последнего коммита.</p>
59 <p>Чтобы активировать WAL-архивирование, в конфигурации postgresql.conf задают параметры:</p>
59 <p>Чтобы активировать WAL-архивирование, в конфигурации postgresql.conf задают параметры:</p>
60 <p>archive_mode = onarchive_command = 'cp %p /var/lib/postgresql/wal_archive/%f'</p>
60 <p>archive_mode = onarchive_command = 'cp %p /var/lib/postgresql/wal_archive/%f'</p>
61 <p>Таким образом, после каждого завершённого WAL-сегмента PostgreSQL будет копировать его в указанную директорию.</p>
61 <p>Таким образом, после каждого завершённого WAL-сегмента PostgreSQL будет копировать его в указанную директорию.</p>
62 <p>Преимущества подхода:</p>
62 <p>Преимущества подхода:</p>
63 <ul><li>Возможность восстановления до нужного момента времени (Point-in-Time Recovery);</li>
63 <ul><li>Возможность восстановления до нужного момента времени (Point-in-Time Recovery);</li>
64 <li>Идеально сочетается с pg_basebackup, обеспечивая полную защиту данных;</li>
64 <li>Идеально сочетается с pg_basebackup, обеспечивая полную защиту данных;</li>
65 <li>Подходит для крупных проектов с высокими требованиями к отказоустойчивости.</li>
65 <li>Подходит для крупных проектов с высокими требованиями к отказоустойчивости.</li>
66 </ul><p>Минус - повышенное потребление дискового пространства. Поэтому стоит настроить автоматическое удаление устаревших журналов и контролировать объёмы.</p>
66 </ul><p>Минус - повышенное потребление дискового пространства. Поэтому стоит настроить автоматическое удаление устаревших журналов и контролировать объёмы.</p>
67 <p>Если вы хотите сохранить базу данных в PostgreSQL с учётом всех изменений, WAL-архивирование - надёжный вариант. Но его настройка требует опыта и внимательности.</p>
67 <p>Если вы хотите сохранить базу данных в PostgreSQL с учётом всех изменений, WAL-архивирование - надёжный вариант. Но его настройка требует опыта и внимательности.</p>
68 <p>В следующем разделе поговорим об автоматизации резервного копирования, чтобы не делать всё вручную.</p>
68 <p>В следующем разделе поговорим об автоматизации резервного копирования, чтобы не делать всё вручную.</p>
69 <p>Автоматизация процесса резервного копирования</p>
69 <p>Автоматизация процесса резервного копирования</p>
70 <p><strong>Ручное резервное копирование</strong>- рискованный и трудозатратный подход. Один пропущенный день - и при сбое вы останетесь без актуальной копии. Автоматизация помогает систематизировать процесс и избежать ошибок.</p>
70 <p><strong>Ручное резервное копирование</strong>- рискованный и трудозатратный подход. Один пропущенный день - и при сбое вы останетесь без актуальной копии. Автоматизация помогает систематизировать процесс и избежать ошибок.</p>
71 <p><strong>Самый простой способ</strong>- создать bash-скрипт и запустить его по расписанию через cron. Пример скрипта для создания ежедневного дампа базы:</p>
71 <p><strong>Самый простой способ</strong>- создать bash-скрипт и запустить его по расписанию через cron. Пример скрипта для создания ежедневного дампа базы:</p>
72 <p>#!/bin/bashTIMESTAMP=$(date +%F-%H-%M)BACKUP_DIR="/var/backups/pgsql"DB_NAME="mydb"USER="postgres"</p>
72 <p>#!/bin/bashTIMESTAMP=$(date +%F-%H-%M)BACKUP_DIR="/var/backups/pgsql"DB_NAME="mydb"USER="postgres"</p>
73 <p>mkdir -p $BACKUP_DIRpg_dump -U $USER $DB_NAME &gt; $BACKUP_DIR/${DB_NAME}_${TIMESTAMP}.sql</p>
73 <p>mkdir -p $BACKUP_DIRpg_dump -U $USER $DB_NAME &gt; $BACKUP_DIR/${DB_NAME}_${TIMESTAMP}.sql</p>
74 <p>Чтобы запускать его каждую ночь, добавьте строку в crontab:</p>
74 <p>Чтобы запускать его каждую ночь, добавьте строку в crontab:</p>
75 <p>0 2 * * * /usr/local/bin/pgsql_backup.sh</p>
75 <p>0 2 * * * /usr/local/bin/pgsql_backup.sh</p>
76 <p>Для надёжности можно настроить уведомление на почту или в мессенджер, если бэкап не удался.</p>
76 <p>Для надёжности можно настроить уведомление на почту или в мессенджер, если бэкап не удался.</p>
77 <p>Также можно использовать специализированные инструменты:</p>
77 <p>Также можно использовать специализированные инструменты:</p>
78 <ul><li><strong>Barman</strong>- мощный инструмент для резервного копирования и восстановления PostgreSQL с поддержкой WAL-архивов;</li>
78 <ul><li><strong>Barman</strong>- мощный инструмент для резервного копирования и восстановления PostgreSQL с поддержкой WAL-архивов;</li>
79 - <li><strong>pgBackRest</strong>- масштабируемое решение с шифрованием, инкрементальными бэкапами и проверкой целостности;</li>
79 + <li><strong>pgBackRest</strong>- масштабиуемое решение с шифрованием, инкрементальными бэкапами и проверкой целостности;</li>
80 <li><strong>Wal-G</strong>- облачно-ориентированная утилита с поддержкой S3-совместимых хранилищ.</li>
80 <li><strong>Wal-G</strong>- облачно-ориентированная утилита с поддержкой S3-совместимых хранилищ.</li>
81 </ul><p>Эти инструменты удобны для крупных проектов, где важно быстро восстановить базу данных PostgreSQL и контролировать каждый этап копирования.</p>
81 </ul><p>Эти инструменты удобны для крупных проектов, где важно быстро восстановить базу данных PostgreSQL и контролировать каждый этап копирования.</p>
82 <p><strong>Автоматизация</strong>- ключ к безопасности. Настроив её однажды, вы сможете быть уверены: резервные копии создаются и хранятся вовремя, даже если админ в отпуске.</p>
82 <p><strong>Автоматизация</strong>- ключ к безопасности. Настроив её однажды, вы сможете быть уверены: резервные копии создаются и хранятся вовремя, даже если админ в отпуске.</p>
83 <p>В следующем разделе обсудим, где и как лучше хранить эти копии.</p>
83 <p>В следующем разделе обсудим, где и как лучше хранить эти копии.</p>
84 <p><strong>Не знаете PostgreSQL? Пора сделать Update своих навыков!</strong>На курсе PostgreSQL База от Слёрм вы научитесь работе с резервным копированием.</p>
84 <p><strong>Не знаете PostgreSQL? Пора сделать Update своих навыков!</strong>На курсе PostgreSQL База от Слёрм вы научитесь работе с резервным копированием.</p>
85 <p>Лучшие практики хранения резервных копий</p>
85 <p>Лучшие практики хранения резервных копий</p>
86 <p>Сделать дамп базы - это только половина дела. Важно правильно его хранить. Иначе в нужный момент копия может оказаться устаревшей, повреждённой или вовсе недоступной.</p>
86 <p>Сделать дамп базы - это только половина дела. Важно правильно его хранить. Иначе в нужный момент копия может оказаться устаревшей, повреждённой или вовсе недоступной.</p>
87 <p>Вот ключевые рекомендации:</p>
87 <p>Вот ключевые рекомендации:</p>
88 <p><strong>1. Храните копии в разных местах.</strong>Комбинируйте локальные и облачные хранилища. Например, один дамп сохраняется на внешний диск, второй - в S3-хранилище. Это защищает от сбоев оборудования и краж.</p>
88 <p><strong>1. Храните копии в разных местах.</strong>Комбинируйте локальные и облачные хранилища. Например, один дамп сохраняется на внешний диск, второй - в S3-хранилище. Это защищает от сбоев оборудования и краж.</p>
89 <p><strong>2. Настройте ротацию бэкапов.</strong>Не храните все копии подряд. Удаляйте старые, оставляя только последние 5-7. Это можно автоматизировать скриптом, чтобы не заполнять диски.</p>
89 <p><strong>2. Настройте ротацию бэкапов.</strong>Не храните все копии подряд. Удаляйте старые, оставляя только последние 5-7. Это можно автоматизировать скриптом, чтобы не заполнять диски.</p>
90 <p><strong>3. Регулярно проверяйте копии.</strong>Файл может создаться, но быть пустым или повреждённым. Раз в неделю пробуйте восстановить базу на тестовом сервере - это покажет, можно ли ей реально воспользоваться.</p>
90 <p><strong>3. Регулярно проверяйте копии.</strong>Файл может создаться, но быть пустым или повреждённым. Раз в неделю пробуйте восстановить базу на тестовом сервере - это покажет, можно ли ей реально воспользоваться.</p>
91 <p><strong>4. Шифруйте и защищайте доступ.</strong>Резервная копия может содержать конфиденциальные данные. Используйте шифрование (gpg, openssl) и храните ключи отдельно. Доступ к копиям должен быть только у ответственных администраторов.</p>
91 <p><strong>4. Шифруйте и защищайте доступ.</strong>Резервная копия может содержать конфиденциальные данные. Используйте шифрование (gpg, openssl) и храните ключи отдельно. Доступ к копиям должен быть только у ответственных администраторов.</p>
92 <p><strong>5. Документируйте процедуру восстановления.</strong>Если восстановить бд PostgreSQL может только один человек - это риск. Инструкция должна быть понятной и доступной остальным.</p>
92 <p><strong>5. Документируйте процедуру восстановления.</strong>Если восстановить бд PostgreSQL может только один человек - это риск. Инструкция должна быть понятной и доступной остальным.</p>
93 <p>Сохранить БД в PostgreSQL - это ещё не гарантия безопасности. Важно, где и как вы храните резервную копию. В следующем разделе расскажем, как правильно восстанавливать данные из бэкапа.</p>
93 <p>Сохранить БД в PostgreSQL - это ещё не гарантия безопасности. Важно, где и как вы храните резервную копию. В следующем разделе расскажем, как правильно восстанавливать данные из бэкапа.</p>
94 <p>Как восстановить базу данных из резервной копии</p>
94 <p>Как восстановить базу данных из резервной копии</p>
95 <p>Когда база данных удалена, повреждена или испорчена миграцией - важно быстро восстановить её из копии. Способ восстановления зависит от того, каким инструментом создавался бэкап.</p>
95 <p>Когда база данных удалена, повреждена или испорчена миграцией - важно быстро восстановить её из копии. Способ восстановления зависит от того, каким инструментом создавался бэкап.</p>
96 <p>Если вы использовали pg_dump и сохранили дамп в виде SQL-файла, восстановить базу можно так:</p>
96 <p>Если вы использовали pg_dump и сохранили дамп в виде SQL-файла, восстановить базу можно так:</p>
97 <p>psql -U postgres -d mydb &lt; mydb_backup.sql</p>
97 <p>psql -U postgres -d mydb &lt; mydb_backup.sql</p>
98 <p>Если базы с таким именем ещё нет, её нужно сначала создать:</p>
98 <p>Если базы с таким именем ещё нет, её нужно сначала создать:</p>
99 <p>createdb -U postgres mydb</p>
99 <p>createdb -U postgres mydb</p>
100 <p>В случае, когда дамп был в сжатом формате (.dump, .backup) через pg_dump -Fc, применяется утилита pg_restore:</p>
100 <p>В случае, когда дамп был в сжатом формате (.dump, .backup) через pg_dump -Fc, применяется утилита pg_restore:</p>
101 <p>pg_restore -U postgres -d mydb mydb.dump</p>
101 <p>pg_restore -U postgres -d mydb mydb.dump</p>
102 <p>Можно добавить опции, чтобы задать конкретные схемы, таблицы или формат восстановления. Например:</p>
102 <p>Можно добавить опции, чтобы задать конкретные схемы, таблицы или формат восстановления. Например:</p>
103 <p>pg_restore -C -U postgres -d postgres mydb.dump</p>
103 <p>pg_restore -C -U postgres -d postgres mydb.dump</p>
104 <p>Флаг -C указывает создать базу перед восстановлением.</p>
104 <p>Флаг -C указывает создать базу перед восстановлением.</p>
105 <p>Если копия была создана через pg_basebackup, восстановление предполагает замену текущего кластера на сохранённую версию. Перед этим нужно остановить сервер:</p>
105 <p>Если копия была создана через pg_basebackup, восстановление предполагает замену текущего кластера на сохранённую версию. Перед этим нужно остановить сервер:</p>
106 <p>pg_ctl stop -D /var/lib/postgresql/data</p>
106 <p>pg_ctl stop -D /var/lib/postgresql/data</p>
107 <p>Затем - заменить данные и запустить сервер снова:</p>
107 <p>Затем - заменить данные и запустить сервер снова:</p>
108 <p>cp -r /backup/pgdata/* /var/lib/postgresql/data/pg_ctl start -D /var/lib/postgresql/data</p>
108 <p>cp -r /backup/pgdata/* /var/lib/postgresql/data/pg_ctl start -D /var/lib/postgresql/data</p>
109 <p>Для восстановления с использованием WAL-архивов нужно указать recovery.conf (или postgresql.auto.conf и recovery.signal в новых версиях), задать restore_command и целевую точку отката (recovery_target_time).</p>
109 <p>Для восстановления с использованием WAL-архивов нужно указать recovery.conf (или postgresql.auto.conf и recovery.signal в новых версиях), задать restore_command и целевую точку отката (recovery_target_time).</p>
110 <p>Пример команды восстановления по времени:</p>
110 <p>Пример команды восстановления по времени:</p>
111 <p>recovery_target_time = '2025-03-20 14:00:00'</p>
111 <p>recovery_target_time = '2025-03-20 14:00:00'</p>
112 <p>Это позволяет вернуть состояние базы к определённому моменту - даже до случайного удаления данных.</p>
112 <p>Это позволяет вернуть состояние базы к определённому моменту - даже до случайного удаления данных.</p>
113 <p>Как загрузить дамп базы данных PostgreSQL - зависит от ситуации. Поэтому всегда проверяйте, с помощью чего он был создан, и готовьте инструкции заранее. А в идеале - тестируйте восстановление регулярно.</p>
113 <p>Как загрузить дамп базы данных PostgreSQL - зависит от ситуации. Поэтому всегда проверяйте, с помощью чего он был создан, и готовьте инструкции заранее. А в идеале - тестируйте восстановление регулярно.</p>
114 <p>Заключение и рекомендации</p>
114 <p>Заключение и рекомендации</p>
115 <p>Резервное копирование - не дополнительная опция, а базовая обязанность каждого администратора. Если вы ещё не знаете, как сделать бэкап базы данных PostgreSQL - самое время разобраться и внедрить чёткий регламент.</p>
115 <p>Резервное копирование - не дополнительная опция, а базовая обязанность каждого администратора. Если вы ещё не знаете, как сделать бэкап базы данных PostgreSQL - самое время разобраться и внедрить чёткий регламент.</p>
116 <p><strong>Подводим основные рекомендации:</strong></p>
116 <p><strong>Подводим основные рекомендации:</strong></p>
117 <ul><li>Делайте бэкапы регулярно, автоматически и с логами;</li>
117 <ul><li>Делайте бэкапы регулярно, автоматически и с логами;</li>
118 <li>Храните резервные копии на внешних и облачных носителях;</li>
118 <li>Храните резервные копии на внешних и облачных носителях;</li>
119 <li>Используйте разные инструменты: pg_dump, pg_basebackup, архивирование WAL;</li>
119 <li>Используйте разные инструменты: pg_dump, pg_basebackup, архивирование WAL;</li>
120 <li>Проверяйте восстановление на тестовых серверах - не только теоретически, но и на практике;</li>
120 <li>Проверяйте восстановление на тестовых серверах - не только теоретически, но и на практике;</li>
121 <li>Шифруйте дампы, ограничивайте доступ, документируйте каждый шаг.</li>
121 <li>Шифруйте дампы, ограничивайте доступ, документируйте каждый шаг.</li>
122 </ul><p><strong>Как выгрузить базу данных из PostgreSQL?</strong>Простой SQL-дамп подойдёт большинству проектов. А для серьёзных решений лучше использовать комплексный подход с автоматизацией, ротацией и журналами.</p>
122 </ul><p><strong>Как выгрузить базу данных из PostgreSQL?</strong>Простой SQL-дамп подойдёт большинству проектов. А для серьёзных решений лучше использовать комплексный подход с автоматизацией, ротацией и журналами.</p>
123 <p><strong>И помните: один правильный бэкап лучше сотни извинений после сбоя.</strong></p>
123 <p><strong>И помните: один правильный бэкап лучше сотни извинений после сбоя.</strong></p>
124 <p>📘 Хотите узнать больше?</p>
124 <p>📘 Хотите узнать больше?</p>
125 <p>Присоединяйтесь к курсу<strong><a>"PostgreSQL База"</a></strong>- изучите резервное копирование, настройку репликации, безопасность и оптимизацию. Разбираем реальные кейсы и даём поддержку на практике.</p>
125 <p>Присоединяйтесь к курсу<strong><a>"PostgreSQL База"</a></strong>- изучите резервное копирование, настройку репликации, безопасность и оптимизацию. Разбираем реальные кейсы и даём поддержку на практике.</p>
126 <h3><strong>Статью подготовили</strong></h3>
126 <h3><strong>Статью подготовили</strong></h3>
127 <p>Понравилась статья? Будем рады вашему лайку и репосту - вдруг кому-то тоже пригодится:)</p>
127 <p>Понравилась статья? Будем рады вашему лайку и репосту - вдруг кому-то тоже пригодится:)</p>
128 <h3><strong>Читайте также:</strong></h3>
128 <h3><strong>Читайте также:</strong></h3>
129  
129