PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Най-добрите решения за висока достъпност за клъстериране на PG за PostgreSQL

Ако вашата система разчита на PostgreSQL и търсите клъстерни решения за висока наличност, искаме да ви уведомим предварително, че това е сложна задача, но не е невъзможно да се постигне.

Имайки предвид вашите изисквания за отказоустойчивост, ето няколко решения за клъстериране с висока наличност, от които да избирате, които могат да ви помогнат.

PostgreSQL не поддържа изначално решение за клъстериране с няколко главни като MySQL или Oracle. Въпреки това много търговски и общностни продукти предлагат тази реализация, включително репликация и балансиране на натоварването за PostgreSQL.

За да започнем, нека прегледаме някои основни понятия:

Какво е висока наличност?

Високата наличност се отнася до времето, през което дадена услуга е налична и обикновено се определя от договореното от бизнеса ниво на производителност.

Резервирането е основата за висока наличност; в случай на инцидент можете да продължите да работите и да осъществявате достъп до системите без проблеми.

Непрекъснато възстановяване

Когато възникне инцидент, ако трябва да възстановите резервно копие и след това да приложите регистрационните файлове WAL (Write-Ahead Logging), времето за възстановяване ще бъде много голямо и няма да е много достъпно.

Ако обаче архивите и регистрационните файлове са архивирани в сървър за извънредни ситуации, можете да приложите регистрационните файлове, когато пристигнат. Ако регистрационните файлове се изпращат и прилагат всяка минута, базата за непредвидени ситуации ще бъде в непрекъснато възстановяване и ще има остаряло състояние за производство от най-много една минута.

Бази данни в режим на готовност

Идеята на резервната база данни е да съхранява копие на производствена база данни, която винаги има едни и същи данни и е готова за използване в случай на инцидент.

Има няколко начина за класифициране на резервна база данни.

По естеството на репликацията:

  • Физически режим на готовност:Дисковите блокове се копират.

  • Логически режим на готовност:Поточно предаване на промените в данните.

Поради синхронността на транзакциите:

  • Асинхронно:Има възможност за загуба на данни.

  • Синхронно:Няма възможност за загуба на данни; Комитациите в главния изчакват отговора на стендбай.

По употреба:

  • Топъл режим на готовност:Те не поддържат връзки.

  • Гореща готовност:Поддържа връзки само за четене.

Клъстери

Клъстерът е група от хостове, работещи заедно и разглеждани като един. Това осигурява начин за постигане на хоризонтална мащабируемост и възможност за обработка на повече работа чрез добавяне на сървъри.

Може да устои на повреда на възел и да продължи да работи прозрачно. В зависимост от споделеното има два клъстерни модела:

  • Споделено хранилище:Всички възли имат достъп до едно и също хранилище с една и съща информация.

  • Нищо споделено:Всеки възел има свое собствено хранилище, което може или не може да има същата информация като другата възли, в зависимост от структурата на нашата система.

Нека сега да прегледаме някои от опциите за клъстериране, които имаме в PostgreSQL.

Разпределено репликирано блоково устройство

DRBD е модул на ядрото на Linux, който реализира синхронна блокова репликация, използвайки мрежата. Той всъщност не внедрява клъстер и не обработва отказ или наблюдение. За това имате нужда от допълнителен софтуер, например Corosync + Pacemaker + DRBD.

Пример:

  • Corosync:Обработва съобщения между хостове.

  • Пейсмейкър:Стартира и спира услуги, като се уверява, че работят само на един хост.

  • DRBD:Синхронизира данните на ниво блокови устройства.

ClusterControl

ClusterControl е софтуер за управление и автоматизация без агенти за клъстери от бази данни. Той помага за разгръщането, наблюдението, управлението и мащабирането на вашия сървър/клъстер на база данни директно от неговия потребителски интерфейс. Може да се справи с повечето административни задачи, необходими за поддържане на сървъри на база данни или клъстери.

С ClusterControl можете:

  • Разгръщайте самостоятелни, репликирани или клъстерирани бази данни в технологичния стек по ваш избор.

  • Автоматизиране на отказите, възстановяването и ежедневните задачи еднакво в полиглотните бази данни и динамични инфраструктури.

  • Създавайте пълни или инкрементални резервни копия ръчно или ги планирайте.

  • Правете унифицирано и изчерпателно наблюдение в реално време на цялата си база данни и сървърна инфраструктура.

  • Лесно добавяне или премахване на възел с едно действие.

  • Клонирайте своя клъстер към друг център за данни/доставчик на облак

Ако имате инцидент в PostgreSQL, вашият възел в режим на готовност може да бъде повишен автоматично до Основен.

Това е цялостен инструмент, който предлага пълно управление на жизнения цикъл и автоматизация чрез едно стъкло. ClusterControl също така предоставя безплатна 30-дневна пробна версия, за да можете да я оцените, без прикачени условия.

Rubyrep

Rubyrep е решение, осигуряващо асинхронна, мулти-главна, многоплатформена репликация (реализирана в Ruby или JRuby) и мулти-СУБД (MySQL или PostgreSQL).

Базира се на тригери и не поддържа DDL, потребители или грантове. Неговата основна цел е простотата на използване и администриране.

Някои функции включват:

  • Проста конфигурация

  • Проста инсталация

  • Независим от платформата, независим от дизайна на таблицата.

Pgpool-II

Pgpool-II е междинен софтуер, който работи между PostgreSQL сървъри и PostgreSQL клиент на база данни.

Някои функции включват:

  • Пул за връзки

  • Репликация

  • Балансиране на натоварването

  • Автоматично преминаване при отказ

  • Паралелни заявки

Може да се конфигурира върху поточно репликацията:

Букардо

Bucardo предлага асинхронна каскадна репликация главен-подчинен, базирана на ред, използваща тригери и опашка в базата данни, и асинхронна главна-главна репликация, базирана на ред, използваща тригери и персонализирано разрешаване на конфликти.

Bucardo изисква специална база данни и работи като Perl демон, който комуникира с тази база данни и всички други бази данни, участващи в репликацията. Може да работи като мулти-главен или мулти-подчинен.

Репликацията главен-подчинен включва един или повече източници, отиващи към една или повече цели. Източникът трябва да е PostgreSQL, но целите могат да бъдат PostgreSQL, MySQL, Redis, Oracle, MariaDB, SQLite или MongoDB.

Някои функции включват:

  • Балансиране на натоварването

  • Подробните устройства не са ограничени и могат да бъдат записани

  • Частична репликация

  • Репликация при поискване (промените могат да се избутват автоматично или при желание)

  • Подробните устройства могат да бъдат „предварително затоплени“ за бърза настройка

Недостатъци:

  • Не може да се справи с DDL

  • Не може да обработва големи обекти

  • Не може постепенно да се репликират таблици без уникален ключ

  • Няма да работи на версии, по-стари от Postgres 8

Postgres-XC

Postgres-XC е проект с отворен код, който предоставя мащабируемо, синхронно, симетрично и прозрачно PostgreSQL клъстерно решение. Това е колекция от тясно свързани компоненти на база данни, които могат да бъдат инсталирани в повече от един хардуер или виртуална машина.

Мащабируем за запис означава, че Postgres-XC може да бъде конфигуриран с толкова сървъри на база данни, колкото искате, и да обработва много повече записи (актуализиране на SQL изрази) в сравнение с това, което може да направи един сървър на база данни.

Можете да имате повече от един сървър на база данни, към който клиентите се свързват, осигурявайки единен, последователен изглед на базата данни в целия клъстер.

Всяка актуализация на база данни от всеки сървър на база данни е незабавно видима за всички други транзакции, изпълнявани на различни главни.

Прозрачен означава, че не е нужно да се притеснявате как данните ви се съхраняват в повече от един сървър на база данни вътрешно.

Можете да конфигурирате Postgres-XC да работи на множество сървъри. Вашите данни се съхраняват по разпределен начин, разделени или репликирани, както сте избрали за всяка таблица. Когато издавате заявки, Postgres-XC определя къде се съхраняват целевите данни и издава съответните заявки към сървъри, съдържащи целевите данни.

Цитус

Citus е добавен заместител на PostgreSQL с вградени функции за висока наличност, като автоматично споделяне и репликация. Citus разделя вашата база данни и репликира множество копия на всеки шард в клъстера от стокови възли. Ако възел в клъстера стане недостъпен, Citus прозрачно пренасочва всички записи или заявки към един от другите възли, които съдържат копие на засегнатия фрагмент.

Някои функции включват:

  • Автоматично логическо разделяне

  • Вградена репликация

  • Репликация на центъра за данни за възстановяване след бедствие

  • Толерантност на грешки в средата на заявка с разширено балансиране на натоварването

Можете да увеличите времето на работа на вашите приложения в реално време, задвижвани от PostgreSQL, и да сведете до минимум влиянието на хардуерните повреди върху производителността. Можете да постигнете това с вградени инструменти за висока наличност, минимизиращи скъпата и податлива на грешки ръчна намеса.

PostgresXL

PostgresXL е решение за клъстериране с много глави, което не е споделено, което може прозрачно да разпределя таблица на набор от възли и да изпълнява заявки паралелно с тези възли. Той има допълнителен компонент, наречен Global Transaction Manager (GTM), за предоставяне на глобално последователен изглед на клъстера.

PostgresXL е хоризонтално мащабируем SQL клъстер от база данни с отворен код, достатъчно гъвкав, за да обработва различни натоварвания на база данни:

  • OLTP интензивни работни натоварвания

  • Бизнес разузнаване, изискващо MPP паралелизъм

  • Оперативно хранилище за данни

  • Съхранение на ключ-стойност

  • GIS Geospatial

  • Среди със смесено натоварване

  • Среди, хоствани от доставчици с множество наематели

Компоненти:

  • Глобален монитор на транзакции (GTM):Глобалният монитор на транзакциите осигурява последователност на транзакциите в целия клъстер.

  • Координатор:Координаторът управлява потребителските сесии и взаимодейства с GTM и възлите с данни.

  • Възел с данни:Възелът с данни е мястото, където се съхраняват действителните данни.

Приключване

Има много повече налични продукти за внедряване на вашата среда с висока достъпност за PostgreSQL, но трябва да внимавате с:

  • Нови продукти, недостатъчно тествани

  • Прекратени проекти

  • Ограничения

  • Разходи за лицензиране

  • Много сложни реализации

  • Небезопасни решения

Когато избирате кое решение ще използвате, вземете предвид и вашата инфраструктура. Ако имате само един сървър на приложения, независимо колко сте конфигурирали високата наличност на базите данни, ако сървърът на приложения се повреди, вие сте недостъпни. Трябва добре да анализирате отделните точки на повреда в инфраструктурата и да се опитате да ги разрешите.

Като вземете предвид тези точки, можете да намерите клъстерно решение с висока наличност, което се адаптира към вашите нужди и изисквания, без главоболие. Ако търсите допълнителни HA ресурси за вашата база данни PG, вижте тази публикация относно внедряването на PostgreSQL за висока наличност.

За да сте в течение на решенията за управление на бази данни и най-добрите практики, следвайте ни в Twitter и LinkedIn и се абонирайте за нашия бюлетин.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Преглед на кеширането за PostgreSQL

  2. как да покажа пълния код на съхранената процедура?

  3. Как pgBouncer помага за ускоряване на Django

  4. Бавно подреждане на заявките по колона в обединена таблица

  5. Как да добавя нова колона в таблица след 2-ра или 3-та колона в таблицата с помощта на postgres?