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 имя_пользователя имя_базы > backup.sql</p>
7
<p>pg_dump -U имя_пользователя имя_базы > 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 > mydb_backup.sql</p>
26
<p>pg_dump -U postgres mydb > 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>> - перенаправление вывода в файл.</li>
30
<li>> - перенаправление вывода в файл.</li>
31
</ul><p>Если нужно скопировать базу данных PostgreSQL частично (например, только структуру без данных), используют флаг --schema-only:</p>
31
</ul><p>Если нужно скопировать базу данных PostgreSQL частично (например, только структуру без данных), используют флаг --schema-only:</p>
32
<p>pg_dump -U postgres --schema-only mydb > schema.sql</p>
32
<p>pg_dump -U postgres --schema-only mydb > schema.sql</p>
33
<p>Для обратной задачи - экспортировать только данные - подходит --data-only:</p>
33
<p>Для обратной задачи - экспортировать только данные - подходит --data-only:</p>
34
<p>pg_dump -U postgres --data-only mydb > data.sql</p>
34
<p>pg_dump -U postgres --data-only mydb > 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 > mydb.dump</p>
36
<p>pg_dump -U postgres -Fc mydb > mydb.dump</p>
37
<p>Чтобы включить все базы и роли, используют pg_dumpall:</p>
37
<p>Чтобы включить все базы и роли, используют pg_dumpall:</p>
38
<p>pg_dumpall -U postgres > all_dbs.sql</p>
38
<p>pg_dumpall -U postgres > 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 > $BACKUP_DIR/${DB_NAME}_${TIMESTAMP}.sql</p>
73
<p>mkdir -p $BACKUP_DIRpg_dump -U $USER $DB_NAME > $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 < mydb_backup.sql</p>
97
<p>psql -U postgres -d mydb < 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