2015.10.14 Как спать спокойно
TRANSCRIPT
![Page 1: 2015.10.14 Как спать спокойно](https://reader034.vdocuments.pub/reader034/viewer/2022042604/588ab7e31a28ab371f8b50c1/html5/thumbnails/1.jpg)
![Page 2: 2015.10.14 Как спать спокойно](https://reader034.vdocuments.pub/reader034/viewer/2022042604/588ab7e31a28ab371f8b50c1/html5/thumbnails/2.jpg)
Как спать спокойно?
Владимир Бородин Системный администратор
![Page 3: 2015.10.14 Как спать спокойно](https://reader034.vdocuments.pub/reader034/viewer/2022042604/588ab7e31a28ab371f8b50c1/html5/thumbnails/3.jpg)
Логическое повреждение данных:
〉 DELETE FROM important_table
〉 DROP SCHEMA data CASCADE Физическое повреждение данных:
〉Железные проблемы
〉 Баги ядра
〉 Баги PostgreSQL
3
Что плохого может случиться?
![Page 4: 2015.10.14 Как спать спокойно](https://reader034.vdocuments.pub/reader034/viewer/2022042604/588ab7e31a28ab371f8b50c1/html5/thumbnails/4.jpg)
Эдвард Мёрфи
Anything that can go wrong will go wrong
![Page 6: 2015.10.14 Как спать спокойно](https://reader034.vdocuments.pub/reader034/viewer/2022042604/588ab7e31a28ab371f8b50c1/html5/thumbnails/6.jpg)
6
Немного про PostgreSQL
![Page 7: 2015.10.14 Как спать спокойно](https://reader034.vdocuments.pub/reader034/viewer/2022042604/588ab7e31a28ab371f8b50c1/html5/thumbnails/7.jpg)
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 Как спать спокойно](https://reader034.vdocuments.pub/reader034/viewer/2022042604/588ab7e31a28ab371f8b50c1/html5/thumbnails/8.jpg)
8
Немного про PostgreSQL
![Page 9: 2015.10.14 Как спать спокойно](https://reader034.vdocuments.pub/reader034/viewer/2022042604/588ab7e31a28ab371f8b50c1/html5/thumbnails/9.jpg)
〉 pg_start_backup(), rsync, pg_stop_backup()
〉 pg_basebackup
〉 pg_dump
9
Резервные копии
![Page 10: 2015.10.14 Как спать спокойно](https://reader034.vdocuments.pub/reader034/viewer/2022042604/588ab7e31a28ab371f8b50c1/html5/thumbnails/10.jpg)
Только с мастера
〉 pg_start_backup(‘foo’)
〉 rsync/что угодно
〉 pg_stop_backup()
10
Exclusive backup
![Page 11: 2015.10.14 Как спать спокойно](https://reader034.vdocuments.pub/reader034/viewer/2022042604/588ab7e31a28ab371f8b50c1/html5/thumbnails/11.jpg)
〉 full_page_writes
〉 CHECKPOINT
〉Флаг в shared memory
〉 backup_label
〉 tablespace_map (с 9.5)
11
pg_start_backup(‘foo’)
![Page 12: 2015.10.14 Как спать спокойно](https://reader034.vdocuments.pub/reader034/viewer/2022042604/588ab7e31a28ab371f8b50c1/html5/thumbnails/12.jpg)
$ 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 Как спать спокойно](https://reader034.vdocuments.pub/reader034/viewer/2022042604/588ab7e31a28ab371f8b50c1/html5/thumbnails/13.jpg)
〉 Удаляет 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 Как спать спокойно](https://reader034.vdocuments.pub/reader034/viewer/2022042604/588ab7e31a28ab371f8b50c1/html5/thumbnails/14.jpg)
$ 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 Как спать спокойно](https://reader034.vdocuments.pub/reader034/viewer/2022042604/588ab7e31a28ab371f8b50c1/html5/thumbnails/15.jpg)
〉Можно с реплик
〉 Использует streaming-протокол
〉 pg_basebackup
15
Non-exclusive backup
![Page 16: 2015.10.14 Как спать спокойно](https://reader034.vdocuments.pub/reader034/viewer/2022042604/588ab7e31a28ab371f8b50c1/html5/thumbnails/16.jpg)
〉 Инкрементальные бэкапы на файловом уровне
〉 Нет готового решения с параллелизмом
16
Недостатки обоих решений
![Page 17: 2015.10.14 Как спать спокойно](https://reader034.vdocuments.pub/reader034/viewer/2022042604/588ab7e31a28ab371f8b50c1/html5/thumbnails/17.jpg)
Бэкап Шрёдингера
Состояние бэкапа неизвестно до попытки восстановления
![Page 19: 2015.10.14 Как спать спокойно](https://reader034.vdocuments.pub/reader034/viewer/2022042604/588ab7e31a28ab371f8b50c1/html5/thumbnails/19.jpg)
〉 File-level бэкап не залезает в сами данные
〉 Возможно тихое повреждение
〉 Checksums
〉 pg_dump
19
Проверка самих данных
![Page 21: 2015.10.14 Как спать спокойно](https://reader034.vdocuments.pub/reader034/viewer/2022042604/588ab7e31a28ab371f8b50c1/html5/thumbnails/21.jpg)
〉 Бэкап
〉WAL’ы
〉 Правильный recovery.conf
postgresql.org/docs/current/static/recovery-target-settings.html
21
Point-in-Time Recovery
![Page 23: 2015.10.14 Как спать спокойно](https://reader034.vdocuments.pub/reader034/viewer/2022042604/588ab7e31a28ab371f8b50c1/html5/thumbnails/23.jpg)
〉 Инкрементальные бэкапы
〉 Бэкапы с реплик
〉 Retention policy
〉 Сжатие WAL’ов
〉Ограничение сетевого трафика
〉 barman recover
23
Barman
![Page 24: 2015.10.14 Как спать спокойно](https://reader034.vdocuments.pub/reader034/viewer/2022042604/588ab7e31a28ab371f8b50c1/html5/thumbnails/24.jpg)
Владимир Бородин
Системный администратор
Контакты
@man_brain
https://simply.name
+7 (495) 739 70 00, доб. 7255