Update move_psql04.md
This commit is contained in:
+106
-4
@@ -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 знал о размерах таблиц:
|
||||
|
||||
|
||||
Reference in New Issue
Block a user