Skip to content

Commit

Permalink
Update postgres.md
Browse files Browse the repository at this point in the history
  • Loading branch information
laspavel committed Jan 7, 2024
1 parent b2f0d4e commit d9daed1
Show file tree
Hide file tree
Showing 2 changed files with 75 additions and 11 deletions.
11 changes: 11 additions & 0 deletions 01.db/10001.mysql.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,17 @@ total_size — суммарные размер таблицы
idxfrac — часть размера индекса от общего размера таблицы
```

## Выгрузка всех прав всех пользователей в виде SQL дампов ##

```
MYSQL_CONN="-uroot -ppassword"
mysql ${MYSQL_CONN} --skip-column-names -A -e"SELECT CONCAT('SHOW GRANTS FOR ''',user,'''@''',host,''';') FROM mysql.user WHERE user<>''" | mysql ${MYSQL_CONN} --skip-column-names -A | sed 's/$/;/g' > MySQLUserGrants.sql
# Вытянуть все пароли пользователей:
mysqldump -u root mysql user > user_table_dump.sql
```

- - -

Источник: [https://ruhighload.com/Выбор+самых+больших+таблиц+из+mysql](https://ruhighload.com/Выбор+самых+больших+таблиц+из+mysql)
75 changes: 64 additions & 11 deletions 01.db/10002.postgres.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,15 @@
\i db_log [Запуск внешнего скрипта]
```

## Информация о БД и табл.:
## Переменные окружения
* PGDATABASE
* PGHOST
* PGOPTIONS
* PGPORT
* PGUSER
* PG_COLOR (использования цвета в сообщениях - always (всегда), auto (автоматически) и never (никогда)).

## Информация о БД и табл.

```
SELECT * FROM pg_database_size('test_pik4');
Expand Down Expand Up @@ -160,7 +168,10 @@ REVOKE ALL ON accounts FROM joe;

```
ALTER DEFAULT PRIVILEGES IN SCHEMA схема GRANT привилегии ON класс_объектов TO роль;
ALTER DEFAULT PRIVILEGES IN SCHEMA myschema GRANT SELECT ON TABLES TO PUBLIC;
ALTER DEFAULT PRIVILEGES IN SCHEMA myschema GRANT INSERT ON TABLES TO webuser;
ALTER DEFAULT PRIVILEGES IN SCHEMA схема REVOKE привилегии ON класс_объектов TO роль;
CREATE ROLE alice LOGIN;
CREATE SCHEMA alice;
GRANT CREATE, USAGE ON SCHEMA alice to alice;
Expand Down Expand Up @@ -189,7 +200,7 @@ GRANT SELECT(name) ON Table1 TO bob;
GRANT ALL ON Table1 TO bob; - выдать все привилегии
```

## Репликация:
## Репликация

Настройки репликации:

Expand Down Expand Up @@ -231,34 +242,76 @@ SELECT pg_drop_replication_slot(slot_name) FROM pg_replication_slots WHERE activ

## Бэкапирование

Получить список БД для бэкапа:
Инструменты:
* pg_dump - бэкапирование одной конкретной БД
* pg_dumpall - бэкапирование целого кластера или инстанса.
* pg_basebackup - бинарное бэкапирование целого кластера или инстанса. (необходимо быть суперпользователем или иметь права REPLICATION)

Получить список БД для бэкапа

```
su - postgres -c 'psql -A -q -t -c "select datname from pg_database"'
```

SQL дамп обычный:
* -A - Невыровненный режим вывода (Равнозначно команде \pset format unaligned.)
* -q - Указывает, что psql должен работать без вывода дополнительных сообщений.\
* -t - Отключает вывод имён столбцов и результирующей строки с количеством выбранных записей.
* -c - Передаёт psql команду для выполнения

SQL дамп обычный

```
export PGPASSWORD=$POSTGRES_PASSWORD && pg_dump -U $POSTGRES
_USER database2 | gzip > /backup_location/database2.sql.gz"
export PGPASSWORD=$POSTGRES_PASSWORD && pg_dump -U $POSTGRES_USER database2 | gzip > /backup_location/database2.sql.gz"
# Выгрузка всех схем, имена которых начинаются с east или west, заканчиваются на gsm и не содержат test:
pg_dump -n 'east*gsm' -n 'west*gsm' -N '*test*' mydb > db.sql
# То же самое, но с использованием регулярного выражения:
pg_dump -n '(east|west)*gsm' -N '*test*' mydb > db.sql
```
Параметры для подключения:

SQL дамп в каталоге:
* -h - имя сервера.
* -p - порт.
* -U - имя пользователя.
* -W - Принудительно запрашивать пароль перед подключением к базе данных

Параметры создания резервной копии

* -a - сохраняем только данные. Например, при использовании этого параметра связи между таблицами не сохраняются.
* -B - не сохраняем большие объекты в дампе.
* -c - Добавить удаление (DROP) объектов, прежде чем пересоздавать их.
* -C - добавляем в скрипт команды для создания БД и подключения к ней. Применимо только к SQL скриптам.
* -E - устанавливаем определенную кодировку дампа.
* -f - каталог, куда сохраняем дамп.
* -F - формат дампа. (p - SQL скрипт(по умолчанию); c - архив; d - каталог; t - формат .tar)
* -g - Выгружать только глобальные объекты (роли и табличные пространства), без баз данных
* -j - выполняем утилиту в многопоточном формате.
* -n - сохраняем схемы, удовлетворяющие шаблону.
* -N - не сохраняем схемы, удовлетворяющие шаблону.
* -o - добавляем в скрипт команды, связанные с установкой владельцев
* -O - не добавляем в скрипт команды, связанные с установкой владельцев.
* -s - сохраняем только схемы.
* -t - сохранить таблицы, удовлетворяющие шаблону.
* -T - не сохраняем таблицы, удовлетворяющие шаблону.
* -x - не сохраняем права доступа.
* -Z - выбираем уровня сжатия (0 - не сжимать, 9 - максимальный).

SQL дамп в каталоге

```
pg_dumpall -c -g > _globals.sql
export PGPASSWORD=$POSTGRES_PASSWORD && pg_dump -Fd $db -j $(nproc) -h localhost -U $POSTGRES_USER -f /backup_location/$db
```

* -g - Выгружать только глобальные объекты (роли и табличные пространства), без баз данных
* -c - Добавить удаление (DROP) объектов, прежде чем пересоздавать их.

Бинарное бэкапирование:

```
export PGPASSWORD=$POSTGRES_PASSWORD && sudo -u postgres pg_basebackup -U $POSTGRES_USER -R -Ft -z -D /backup_location
```
* -R - Создать файл standby.signal и добавить параметры конфигурации в файл postgresql.auto.conf в целевом каталоге (Упрощает восстановление)
* -F - формат бэкапа. (p - текст (по умолчанию); t - формат .tar)
* -D - Целевой каталог, куда будет записана копия.
* -z - Включает gzip-сжатие выводимого tar-файла с уровнем компрессии по умолчанию

## Восстановление

Expand Down

0 comments on commit d9daed1

Please sign in to comment.