24

2015.10.14 Как спать спокойно

  • Upload
    dev1ant

  • View
    344

  • Download
    2

Embed Size (px)

Citation preview

Page 1: 2015.10.14 Как спать спокойно
Page 2: 2015.10.14 Как спать спокойно

Как спать спокойно?

Владимир Бородин Системный администратор

Page 3: 2015.10.14 Как спать спокойно

Логическое повреждение данных:

〉 DELETE FROM important_table

〉 DROP SCHEMA data CASCADE Физическое повреждение данных:

〉Железные проблемы

〉 Баги ядра

〉 Баги PostgreSQL

3

Что плохого может случиться?

Page 4: 2015.10.14 Как спать спокойно

Эдвард Мёрфи

Anything that can go wrong will go wrong

Page 5: 2015.10.14 Как спать спокойно

https://clck.ru/9bESm

ARIES

Page 6: 2015.10.14 Как спать спокойно

6

Немного про PostgreSQL

Page 7: 2015.10.14 Как спать спокойно

postgresql.org/docs/9.5/static/storage-page-layout.html

momjian.us/main/writings/pgsql/inside_shmem.pdf

src/backend/access/transam/README

7

Немного про PostgreSQL

Page 8: 2015.10.14 Как спать спокойно

8

Немного про PostgreSQL

Page 9: 2015.10.14 Как спать спокойно

〉 pg_start_backup(), rsync, pg_stop_backup()

〉 pg_basebackup

〉 pg_dump

9

Резервные копии

Page 10: 2015.10.14 Как спать спокойно

Только с мастера

〉 pg_start_backup(‘foo’)

〉 rsync/что угодно

〉 pg_stop_backup()

10

Exclusive backup

Page 11: 2015.10.14 Как спать спокойно

〉 full_page_writes

〉 CHECKPOINT

〉Флаг в shared memory

〉 backup_label

〉 tablespace_map (с 9.5)

11

pg_start_backup(‘foo’)

Page 12: 2015.10.14 Как спать спокойно

$ cat backup_dir/backup_label START WAL LOCATION: 6/48000028 (file 0000000D0000000600000048) CHECKPOINT LOCATION: 6/48001EE0 BACKUP METHOD: pg_start_backup BACKUP FROM: master START TIME: 2015-10-14 14:06:09 MSK LABEL: foo $

12

backup_label

Page 13: 2015.10.14 Как спать спокойно

〉 Удаляет backup_label и tablespace_map

〉 Запись backup-end в WAL

〉 Пишет backup history file в pg_xlog/

〉 pg_switch_xlog()

〉 Дождётся archiver’а

13

pg_stop_backup(‘foo’)

Page 14: 2015.10.14 Как спать спокойно

$ cat $PGDATA/pg_xlog/0000000D0000000600000048.00000028.backup START WAL LOCATION: 6/48000028 (file 0000000D0000000600000048) STOP WAL LOCATION: 6/48033E80 (file 0000000D0000000600000048) CHECKPOINT LOCATION: 6/48001EE0 BACKUP METHOD: pg_start_backup BACKUP FROM: master START TIME: 2015-10-14 14:06:09 MSK LABEL: foo STOP TIME: 2015-10-14 14:11:46 MSK $

14

Backup history file

Page 15: 2015.10.14 Как спать спокойно

〉Можно с реплик

〉 Использует streaming-протокол

〉 pg_basebackup

15

Non-exclusive backup

Page 16: 2015.10.14 Как спать спокойно

〉 Инкрементальные бэкапы на файловом уровне

〉 Нет готового решения с параллелизмом

16

Недостатки обоих решений

Page 17: 2015.10.14 Как спать спокойно

Бэкап Шрёдингера

Состояние бэкапа неизвестно до попытки восстановления

Page 18: 2015.10.14 Как спать спокойно

simply.name/barman-backups-check.html

Page 19: 2015.10.14 Как спать спокойно

〉 File-level бэкап не залезает в сами данные

〉 Возможно тихое повреждение

〉 Checksums

〉 pg_dump

19

Проверка самих данных

Page 20: 2015.10.14 Как спать спокойно

wiki.postgresql.org/wiki/Corruption

Page 21: 2015.10.14 Как спать спокойно

〉 Бэкап

〉WAL’ы

〉 Правильный recovery.conf

postgresql.org/docs/current/static/recovery-target-settings.html

21

Point-in-Time Recovery

Page 22: 2015.10.14 Как спать спокойно

clck.ru/9bFGS

Page 23: 2015.10.14 Как спать спокойно

〉 Инкрементальные бэкапы

〉 Бэкапы с реплик

〉 Retention policy

〉 Сжатие WAL’ов

〉Ограничение сетевого трафика

〉 barman recover

23

Barman

Page 24: 2015.10.14 Как спать спокойно

Владимир Бородин

Системный администратор

Контакты

@man_brain

https://simply.name

+7 (495) 739 70 00, доб. 7255

[email protected]