Update move_psql04.md
This commit is contained in:
+106
-4
@@ -1,4 +1,3 @@
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
# Инструкция по переносу схем public из 15 БД в одну БД
|
# Инструкция по переносу схем public из 15 БД в одну БД
|
||||||
@@ -175,8 +174,111 @@ databases=("edemo_ehd1" "edemo_ehd2" ... "edemo_ehd15")
|
|||||||
Дампы сохранятся в `/opt/pg_dumps/` (перезапишут исходные дампы).
|
Дампы сохранятся в `/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:
|
### Поиск объектов со ссылками на public:
|
||||||
|
|
||||||
@@ -355,7 +457,7 @@ ORDER BY schema_name, kind, object;
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
### Этап 7. Финальная сборка статистики
|
### Этап 8. Финальная сборка статистики
|
||||||
|
|
||||||
После завершения накатывания пост-данных обновляем статистику, чтобы оптимизатор Postgres знал о размерах таблиц:
|
После завершения накатывания пост-данных обновляем статистику, чтобы оптимизатор Postgres знал о размерах таблиц:
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user