Slide 1

Slide 1 text

No content

Slide 2

Slide 2 text

Как спать спокойно? Владимир Бородин Системный администратор

Slide 3

Slide 3 text

Логическое повреждение данных: 〉 DELETE FROM important_table 〉 DROP SCHEMA data CASCADE Физическое повреждение данных: 〉 Железные проблемы 〉 Баги ядра 〉 Баги PostgreSQL 3 Что плохого может случиться?

Slide 4

Slide 4 text

Эдвард Мёрфи Anything that can go wrong will go wrong

Slide 5

Slide 5 text

https://clck.ru/9bESm ARIES

Slide 6

Slide 6 text

6 Немного про PostgreSQL

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

8 Немного про PostgreSQL

Slide 9

Slide 9 text

〉 pg_start_backup(), rsync, pg_stop_backup() 〉 pg_basebackup 〉 pg_dump 9 Резервные копии

Slide 10

Slide 10 text

Только с мастера 〉 pg_start_backup(‘foo’) 〉 rsync/что угодно 〉 pg_stop_backup() 10 Exclusive backup

Slide 11

Slide 11 text

〉 full_page_writes 〉 CHECKPOINT 〉 Флаг в shared memory 〉 backup_label 〉 tablespace_map (с 9.5) 11 pg_start_backup(‘foo’)

Slide 12

Slide 12 text

$ 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

Slide 13

Slide 13 text

〉 Удаляет backup_label и tablespace_map 〉 Запись backup-end в WAL 〉 Пишет backup history file в pg_xlog/ 〉 pg_switch_xlog() 〉 Дождётся archiver’а 13 pg_stop_backup(‘foo’)

Slide 14

Slide 14 text

$ 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

Slide 15

Slide 15 text

〉 Можно с реплик 〉 Использует streaming-протокол 〉 pg_basebackup 15 Non-exclusive backup

Slide 16

Slide 16 text

〉 Инкрементальные бэкапы на файловом уровне 〉 Нет готового решения с параллелизмом 16 Недостатки обоих решений

Slide 17

Slide 17 text

Бэкап Шрёдингера Состояние бэкапа неизвестно до попытки восстановления

Slide 18

Slide 18 text

simply.name/barman-backups-check.html

Slide 19

Slide 19 text

〉 File-level бэкап не залезает в сами данные 〉 Возможно тихое повреждение 〉 Checksums 〉 pg_dump 19 Проверка самих данных

Slide 20

Slide 20 text

wiki.postgresql.org/wiki/Corruption

Slide 21

Slide 21 text

〉 Бэкап 〉 WAL’ы 〉 Правильный recovery.conf postgresql.org/docs/current/static/recovery-target-settings.html 21 Point-in-Time Recovery

Slide 22

Slide 22 text

clck.ru/9bFGS

Slide 23

Slide 23 text

〉 Инкрементальные бэкапы 〉 Бэкапы с реплик 〉 Retention policy 〉 Сжатие WAL’ов 〉 Ограничение сетевого трафика 〉 barman recover 23 Barman

Slide 24

Slide 24 text

Владимир Бородин Системный администратор Контакты @man_brain https://simply.name +7 (495) 739 70 00, доб. 7255 [email protected]