Update move_psql04.md

This commit is contained in:
2026-08-07 18:20:51 +08:00
parent 090819272c
commit 87c372c087
+106 -4
View File
@@ -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 знал о размерах таблиц: