From 87c372c0871d69041c78309fc86c2c68efe87128 Mon Sep 17 00:00:00 2001 From: pashko Date: Fri, 7 Aug 2026 18:20:51 +0800 Subject: [PATCH] Update move_psql04.md --- move_psql04.md | 110 +++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 106 insertions(+), 4 deletions(-) diff --git a/move_psql04.md b/move_psql04.md index 148b2e6..0be684b 100644 --- a/move_psql04.md +++ b/move_psql04.md @@ -1,4 +1,3 @@ - --- # Инструкция по переносу схем public из 15 БД в одну БД @@ -175,8 +174,111 @@ databases=("edemo_ehd1" "edemo_ehd2" ... "edemo_ehd15") Дампы сохранятся в `/opt/pg_dumps/` (перезапишут исходные дампы). --- +Добавляю создание схем в этап 5: -## Этап 5. Восстановление в целевую БД +--- + +## Этап 5. Подготовка целевой БД + +### 5.1. Создание целевой БД (если не создана) + +```sql +CREATE DATABASE mmedo_main + WITH + OWNER = eds + ENCODING = 'UTF8' + LC_COLLATE = 'en_US.UTF-8' + LC_CTYPE = 'en_US.UTF-8' + ICU_LOCALE = 'en-US' + LOCALE_PROVIDER = 'icu' + TABLESPACE = pg_default + CONNECTION LIMIT = -1 + IS_TEMPLATE = False; +``` + +### 5.2. Подключение к целевой БД и создание схем + +```sql +\c mmedo_main + +-- Создание схемы public (для расширений) +CREATE SCHEMA IF NOT EXISTS public; + +-- Создание схем для данных +CREATE SCHEMA IF NOT EXISTS ehd1; +CREATE SCHEMA IF NOT EXISTS ehd2; +CREATE SCHEMA IF NOT EXISTS ehd3; +CREATE SCHEMA IF NOT EXISTS ehd4; +CREATE SCHEMA IF NOT EXISTS ehd5; +CREATE SCHEMA IF NOT EXISTS ehd6; +CREATE SCHEMA IF NOT EXISTS ehd7; +CREATE SCHEMA IF NOT EXISTS ehd8; +CREATE SCHEMA IF NOT EXISTS ehd9; +CREATE SCHEMA IF NOT EXISTS ehd10; +CREATE SCHEMA IF NOT EXISTS ehd11; +CREATE SCHEMA IF NOT EXISTS ehd12; +CREATE SCHEMA IF NOT EXISTS ehd13; +CREATE SCHEMA IF NOT EXISTS ehd14; +CREATE SCHEMA IF NOT EXISTS ehd15; + +-- Назначение владельца для всех схем +ALTER SCHEMA public OWNER TO eds; +ALTER SCHEMA ehd1 OWNER TO eds; +ALTER SCHEMA ehd2 OWNER TO eds; +ALTER SCHEMA ehd3 OWNER TO eds; +ALTER SCHEMA ehd4 OWNER TO eds; +ALTER SCHEMA ehd5 OWNER TO eds; +ALTER SCHEMA ehd6 OWNER TO eds; +ALTER SCHEMA ehd7 OWNER TO eds; +ALTER SCHEMA ehd8 OWNER TO eds; +ALTER SCHEMA ehd9 OWNER TO eds; +ALTER SCHEMA ehd10 OWNER TO eds; +ALTER SCHEMA ehd11 OWNER TO eds; +ALTER SCHEMA ehd12 OWNER TO eds; +ALTER SCHEMA ehd13 OWNER TO eds; +ALTER SCHEMA ehd14 OWNER TO eds; +ALTER SCHEMA ehd15 OWNER TO eds; +``` + +### 5.3. Перенос расширений в схему public + +**Посмотреть все расширения:** + +```sql +\c mmedo_main +\dx +``` + +**Вывод будет примерно таким:** + +``` + List of installed extensions + Name | Version | Schema | Description +----------+---------+------------+------------------------------------------------------------------- + pg_trgm | 1.6 | ehd1 | text similarity measurement and index searching based on trigrams + plpgsql | 1.0 | pg_catalog | PL/pgSQL procedural language + uuid-ossp| 1.1 | ehd2 | generate universally unique identifiers (UUIDs) +``` + +**Для каждого расширения, у которого Schema не public, выполнить:** + +```sql +ALTER EXTENSION pg_trgm SET SCHEMA public; +ALTER EXTENSION uuid-ossp SET SCHEMA public; +-- и так далее для всех расширений, которые находятся не в public +``` + +**Проверить результат:** + +```sql +\dx +``` + +Теперь все расширения должны быть в схеме `public`. + +--- + +## Этап 6. Восстановление в целевую БД **Выполнять вручную для каждой схемы!** @@ -258,7 +360,7 @@ pg_restore -p 5432 -U eds -d mmedo_main \ --- -## Этап 6. Пост-миграционная проверка +## Этап 7. Пост-миграционная проверка ### Поиск объектов со ссылками на public: @@ -355,7 +457,7 @@ ORDER BY schema_name, kind, object; --- -### Этап 7. Финальная сборка статистики +### Этап 8. Финальная сборка статистики После завершения накатывания пост-данных обновляем статистику, чтобы оптимизатор Postgres знал о размерах таблиц: