Потоковая репликация PostgreSQL

13,946 views

Published on

Повышение производительности приложения за счет эффективного разделения чтения и записи данных. Репликация, которая нас устроила

Презентация подготовлена по материалам прошедшего 12 сентября витебского митапа: http://meetup.gorodvitebsk.by/

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
13,946
On SlideShare
0
From Embeds
0
Number of Embeds
12,183
Actions
Shares
0
Downloads
11
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide
  • Репликация (англ. replication) — механизм синхронизации содержимого нескольких копий объекта (например, содержимого
    базы данных). Репликация — это процесс, под которым понимается копирование данных из одного источника на множество других и
    наоборот. При репликации изменения, сделанные в одной копии объекта, могут быть распространены в другие копии. Репликация может быть
    синхронной или асинхронной. В случае синхронной репликации, если данная реплика обновляется, все другие реплики того же фрагмента данных также должны быть
    обновлены в одной и той же транзакции. Логически это означает, что существует лишь одна версия данных. В большинстве продуктов
    синхронная репликация реализуется с помощью триггерных процедур (возможно, скрытых и управляемых системой). Но синхронная
    репликация имеет тот недостаток, что она создаёт дополнительную нагрузку при выполнении всех транзакций, в которых обновляются
    какие-либо реплики (кроме того, могут возникать проблемы, связанные с доступностью данных).
    В случае асинхронной репликации обновление одной реплики распространяется на другие спустя некоторое время, а не в той же
    транзакции. Таким образом, при асинхронной репликации вводится задержка, или время ожидания, в течение которого отдельные реплики
    могут быть фактически неидентичными (то есть определение реплика оказывается не совсем подходящим, поскольку мы не имеем дело
    с точными и своевременно созданными копиями).
  • pgpool-II — это прослойка, работающая между серверами PostgreSQL и клиентами СУБД PostgreSQL. pgpool-II общается по протоколу бэкенда и фронтенда PostgreSQL и
    располагается между ними. Таким образом, приложение базы данных (фронтенд) считает что pgpool-II — настоящий сервер PostgreSQL, а
    сервер (бэкенд) видит pgpool-II как одного из своих клиентов. Поскольку pgpool-II прозрачен как для сервера, так и для клиента, существующие
    приложения, работающие с базой данных, могут использоваться с pgpool-II практически без изменений в исходном коде.
  • Этот тип репликации простой, надежный и, вероятней всего, будет использоваться в качестве стандартной репликации в большинстве
    высоконагруженных приложений, что используют PostgreSQL.
  • Потоковая репликация PostgreSQL

    1. 1. Повышаем производительность: потоковая репликация в PostgreSQL Докладчик: Андрей Мизуров a.mizurov@isida.by Специалист БД
    2. 2. Повышаем производительность: потоковая репликация в PostgreSQL Немного о фирме Компания «Исида – Информатика» (основана в 1994г.), специализируется в решении различных задач путем создания и внедрения функциональных автоматизированных систем. С 2005 года «Исида» входит в состав группы компаний «ЛМА - ИСИДА». Технологи разработки: •Языки программирования (Java, C/C++, PHP) •Технологии Java EE (Spring, EJB, Hibernate, JMS, JAXB, JSP, JSTL, WS)
    3. 3. Повышаем производительность: потоковая репликация в PostgreSQL АСУ «Служба скорой медицинской помощи» Одной из задач при разработке системы была: «Доступность данных на чтение и редактирование 24/7» исходя из специфики и организации работы службы СМП
    4. 4. Повышаем производительность: потоковая репликация в PostgreSQL Что мешает добиться высокой доступности системы ? • Выход из строя жесткого диска • Отключение сервера • Ошибки в ПО • Человеческий фактор (кривые руки, «на что спорим, что ИБП рабочий», «да я так сто раз делал» и т.д. )
    5. 5. Повышаем производительность: потоковая репликация в PostgreSQL Поиск решения на «Темной» стороне
    6. 6. Повышаем производительность: потоковая репликация в PostgreSQL Репликация как ключ к спасению Репликация — это процесс, под которым понимается копирование данных из одного источника на множество других и наоборот. Виды репликации: •Синхронная •Асинхронная
    7. 7. Повышаем производительность: потоковая репликация в PostgreSQL Репликация в PostgreSQL • Streaming Replication (build in) • Slony – I • Pgpool – I/II • Bucardo • Londiste • RubyRep • и другие …
    8. 8. Повышаем производительность: потоковая репликация в PostgreSQL Pgpool - II ор б вы й ны ач уд е Н Поддерживаемые функции •Объединение соединений •Репликация •Балансировка нагрузки •Ограничение лишних соединений •Параллельные запросы Недостатки •Синхронная репликация •Блокировка таблиц
    9. 9. Повышаем производительность: потоковая репликация в PostgreSQL Решение из коробки + RepMgr р бо вы ый чн да У Потоковая репликация •Репликация всего инстанса •Асинхронный механизм репликации •Простота установки •Мастер может обслуживать огромное число слейвов Недостатки: •Реплицируется вся база данных •Отсутствует отказоустойчивость
    10. 10. Повышаем производительность: потоковая репликация в PostgreSQL Pgpool – II + SR (выгодный симбиоз)
    11. 11. Повышаем производительность: потоковая репликация в PostgreSQL Чего добились • Высокой доступности системы • Производительности и масштабируемости • Резервирования данных • Удобство администрирования
    12. 12. Повышаем производительность: потоковая репликация в PostgreSQL Вопросы ? Контактная информация: •mizurov.andrey •avmizurov@gmail.com •http://vk.com/id4257155 Спасибо за внимание

    ×