Краткое обсуждение решения высокой доступности PostgreSQL.
Краткое обсуждение решения высокой доступности PostgreSQL.
автор | JiekeXu

Источник | Публичный аккаунт JiekeXu DBA road (ID: JiekeXu_IT)

Если вам нужно перепечатать, свяжитесь с нами для авторизации | (Персональный идентификатор WeChat: JiekeXu_DBA)

Привет всем, я Цзекесюй, известный в мире как «Брат Цян», выиграл Oracle ACE Pro Название: Мо Тяньлунь MVP, ежегодная премия «Moli Star» Мо Тяньлуня, владеет Oracle 11g OCP/OCM Аутентификация, MySQL 5.7/8.0 OCP Сертификация и PCA、PCTA、OBCA、OGCA、KCP В ожидании многих сертификатов сертификации отечественных баз данных, давайте поговорим с вами сегодня PostgreSQL Гао Кэиспользоватьплан,Добро пожаловать, нажмите синий текст вверху.“JiekeXu Подпишитесь на мою официальную учетную запись WeChat, затем нажмите на три точки в правом верхнем углу рядом с надписью «Установить как звездочку», чтобы вы могли получать больше полезных статей как можно скорее, спасибо!

Предисловие

PostgreSQL — очень популярная в последние два года база данных с открытым исходным кодом. Большинство ее функций предоставляются в виде легковесных плагинов, и многие технологии высокой доступности также предоставляются в виде плагинов. Как реляционная база данных с открытым исходным кодом, она широко любима многими разработчиками и имеет блестящее будущее. Я несколько недель просматривал Интернет и проверил много информации. Говорят, что Repmgr и Patroni — это два решения с высокой доступностью. которые наиболее часто используются. Итак, сегодня давайте поговорим о PostgreSQL. Каковы решения для обеспечения высокой доступности?

1. Другое программное обеспечение, обеспечивающее высокую доступность PG.

keepalived

• Keepalived контролирует дрейф VIP через vrrp. Он также имеет такие функции, как сторожевой таймер и проверка работоспособности, а также может предоставлять унифицированные модули внешнего доступа.

HAProxy

• HAProxy Может выполнять проверку работоспособности с уровня земли, балансировку нагрузки, это также способ обнаружения и обработки логики с высокой надежностью.

PgBouncer

• использовать Впул соединенийуправлятьи Распределение агентов

Язык кода Слово:javascript
копировать
http://www.pgbouncer.org/install.html

2. Сравнение различных решений высокой доступности

  • Отказоустойчивость общего диска
  • Файловая система (блочное устройство) копировать
  • доставка журналов с упреждающей записью
  • логикакопировать
  • На основе триггера из основного-резервного копировать
  • На основе промежуточного программного обеспечения SQLизкопировать
  • Асинхронная машина с несколькими мастерами копировать
  • синхронный Несколько мастеровкопировать
Матрица функций высокой доступности, балансировки нагрузки и репликации

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

Streaming Репликация: Основная библиотека находится в WAL Записи журнала передаются на подчиненный сервер по мере их создания без ожидания. приезжать WAL файл заполнен。Поток по умолчаниюкопироватьдаасинхронныйиз。

Архитектура «главный-подчиненный»: в этой архитектуре,Один главный узел обрабатывает все операции записи.,И данные Воля в реальном времени копироватьприезжать на один или несколько подчиненных узлов.,Подчиненные устройства могут обрабатывать запросы только для чтения.,Улучшите производительность чтения。Может Конфигурациясинхронныйиасинхронныймодель。

преимущество

• В реальном времени: главный узел меняется почти в реальном времени по сравнению с ведомым узлом, а согласованность данных высокая. • Расширение чтения: подчиненный узел может обрабатывать запросы только на чтение и повышать производительность чтения. • Простота настройки: Относительно просто настраивать и управлять.

недостаток

• Риск потери данных (асинхронный режим). В асинхронном режиме сбой главного узла может привести к потере данных. • Задержка: в синхронном режиме существует дополнительная задержка для операций записи. • Ручная обработка аварийного переключения: по умолчанию аварийное переключение требует ручной обработки.

4. Логическая репликация

Logical Репликация: логическое копирование. Объект данных, основанный на идентичности объекта данных. Копировать (обычно это первичный ключ) копировать объект данных и метод его изменения. Логика копировать заставляет использовать модель публикации и подписки, в которой один или несколько подписчиков подписываются на один узел издателя из одного. В одной или нескольких публикациях подписчики извлекают данные из публикаций, на которые они подписаны, и впоследствии могут повторно опубликовать эти данные в Позволяет каскадно копировать, что является более сложной конфигурацией.

преимущество

• Гибкость: вы можете выборочно выбирать определенные данные таблицы, подходящие для сегментирования данных и обновления между версиями. • гетерогенныйкопировать:поддерживатьразные версиииз PostgreSQL Между издатами копировать. • Обновление без простоев: может использоваться для обновления базы данных без простоев.

недостаток

• Конфигурациясложный:Конфигурацияиуправлять Билиукопироватьсложный。 • Накладные расходы на производительность. Накладные расходы на производительность при логическом копировании могут быть выше, чем у потоков, особенно при изменении большого объема данных. • Согласованность данных. При высокой нагрузке может возникнуть риск несогласованности данных.

5、Patroni

Patroni — это решение высокой доступности на основе Python, которое использует etcd, Consul или распределенные согласованные хранилища, такие как ZooKeeper или Kubernetes, для автоматического переключения при сбое.

Принцип работы

• Patroni отслеживает активность главных узлов и узлов-реплик и может изменять конфигурацию всех членов кластера. Он может обрабатывать требования синхронизации и плановые переключения, а также незапланированные переключения при сбое. Patroni автоматизирует эти сложные задачи. Кроме того, он гарантирует, что всегда выполняются определенные условия, чтобы полностью исключить необратимое повреждение ваших данных. У каждого экземпляра PostgreSQL есть специальный экземпляр Patroni для его мониторинга и управления.

преимущество

  • Непрерывный мониторинг и автоматическое переключение при сбое
  • Enableuse одиночная команда для ручного/планового переключения
  • Встроенная функция автоматизации позволяет снова вернуться в кластер после сбоя узла Воля.
  • использовать дополнительные инструменты для всего кластера. Конфигурация из REST API.
  • Предоставляет базовые возможности прозрачного переключения приложений при сбое и распределенного консенсуса для каждой операции.
  • и Linux сторожевой песинтеграция, чтобы избежать феномена расщепления мозга.

недостаток

• Сложность: необходимо настроить и управлять несколькими компонентами (такими как etcd, Consul или ZooKeeper). • Потребление ресурсов. Дополнительные компоненты увеличат потребление ресурсов системы, а также усложнят эксплуатацию и обслуживание.

Язык кода Слово:javascript
копировать
https://developer.aliyun.com/article/775029
https://patroni.readthedocs.io/en/latest/

6、repmgr

repmgr да EDB Набор инструментов с открытым исходным кодом от компании (аналогичный MySQL из МХА) для управления PostgreSQL серверный кластер выполнить аварийное переключение. Это позволяет использовать инструменты для улучшения PostgreSQL Встроенная функция горячего резервного копирования.,Чтобы настроить оборудованиеиспользуйтесервер,Мониторинг копирования и выполнение административных задач,Например, аварийное переключение и операции ручного переключения.

преимущество

  • Конфигурация проста в эксплуатации,Соответствующие операции по развертыванию можно выполнить одним щелчком мыши;
  • поддерживать Auto Failover и Manual Switchover;
  • Не включайте дополнительные порты для связи;
  • Вторжение в базу данных невелико, а основной и резервный потоки в основном одинаковы;
  • Пользовательский сценарий зарегистрировал события для предоставления уведомлений;
  • Не включайте использование каких-либо дополнительных портов для связи.

недостаток

  • Невозможно получить доступ из службы PostgreSQL. Завершение работы узла с получением статуса другого узла.
  • Не определяет, используется ли библиотека резервного копирования да при восстановлении. Конфигурация использовать неизвестно или не существует из-за ошибки узла Конфигурация
  • Решение для распределенного управления не предусмотрено.
  • Его нельзя автоматически поднять, когда один узел резервной машины не работает.

управление командой Repmgr (менеджер репликации). Ежедневные операции в основном выполняются через Repmgr. В его функции входит просмотр состояния кластера, переключение, клонирование резервной базы данных, повторное присоединение вышедших из строя узлов и т. д.

Основными функциями команды управления Repmgr являются:

  • Проектирование оборудованияиспользоватьсервер
  • Воля Подготовитьиспользоватьсервер В основном обновлениесервер
  • киноведущийserveraПодготовитьиспользовать сервер
  • Показать статус копирования потоковой передачи
  • Клонирование восстанавливает данные из резервной копии
  • Регистрация узла

Демон Repmgrd (демон менеджера репликации)

Repmgrd — это процесс-демон, который поддерживает обнаружение ошибок, аварийное переключение, мониторинг и запись информации о кластере, а также пользовательские сценарии для получения уведомлений о событиях кластера.
Основные функции:

Мониторинг и запись производительности кластера Передача обнаруживает сбой основного сервера и выбирает наиболее подходящий сервер для выполнения аварийного переключения. Уведомления о событиях в кластере передаются пользовательским сценариям, которые могут выполнять такие задачи, как отправка оповещений по электронной почте. repmgrd В зависимости от роли локальной базы данных ее функции также различаются: Основная база данных: Repmgrd контролирует только локальную базу данных и отвечает за автоматическое восстановление, а также синхронное и асинхронное переключение. Резервная база данных: Repmgrd отслеживает локальную базу данныхихозяинбаза данные, отвечающие за автоматическое переключение, копировать слот удалить.

узел-свидетель-свидетель

• использовать для устранения возможной перегрузки сети между основной базой данных кластера и резервной базой данных.、Задерживать、Влияние маршрутизации и других проблем,В результате основная библиотека по-прежнему работает нормально.,Резервная база данных не может связаться с основной базой данных из-за сценария

Язык кода Слово:javascript
копировать
https://www.repmgr.org/

7、PAF(PostgreSQL Automatic Failomianver)

PAF даа на основе Corosync и Pacemaker Решение высокой доступности обеспечивает автоматическое переключение при сбое и функции мониторинга узлов.

преимущество

• Надежность: основано на проверенном опыте Corosync и Pacemaker Обеспечить высокую надежность.

• Автоматическое переключение при сбое: обеспечивает автоматическое переключение при сбое и функции мониторинга узлов.

• Масштабируемость: размещение можно расширить до нескольких узлов.

недостаток

• Конфигурациясложный:нуждаться Конфигурацияиуправлять Corosync и Кардиостимулятор увеличивает сложность системы.

• Потребление ресурсов: дополнительные компоненты увеличивают потребление системных ресурсов.

8、Pgpool-II

Pgpool-II дасуществовать PostgreSQL сервери PostgreSQL база промежуточное программное обеспечение данных, которое работает между клиентами, это что-то вроде BSD и MIT Распространяется по лицензии.

Основные функции:

пул соединений

• Pgpool-II сохранить с PostgreSQL серверизконнект, и в том же атрибуте (т. е. использовать имя пользователя, базу данные, версия протокола) Сбрасывать их при появлении новых подключений. Это снижает накладные расходы на соединение и повышает общую пропускную способность системы.

копировать

• Pgpool-II Может управлять несколькими PostgreSQL сервер. Сделайте функцию использовать копировать доступной в 2 Создавайте резервные копии в реальном времени на одном или нескольких физических дисках, чтобы обслуживание могло продолжаться без остановки сервера в случае сбоя диска.

балансировка нагрузки

• есликопировать Понятнобаза данных, а затем выполнить на любом сервере SELECT Запрос Воля возвращает те же результаты. Пгпул-II выгодаиспользоватькопировать функцию, распределяется между несколькими серверами SELECT Запрос на уменьшение каждого PostgreSQL сервер из нагрузки, тем самым улучшая общую пропускную способность системы. В лучшем случае производительность увеличивается, а сервер PostgreSQL увеличивается пропорционально количеству. балансировка нагрузка работает лучше всего, когда большое количество пользователей одновременно выполняют несколько запросов.

Превышено ограничение на количество подключений

• и PostgreSQL Максимальное количество одновременных подключений да имеет ограничение, и после подключения такого количества Воля получил отказ в подключении. Однако установка максимального количества подключений увеличит потребление ресурсов и повлияет на производительность системы. pgpool-II Также существует ограничение на максимальное количество подключений.,Но выстраиваются дополнительные связи Воля,Вместо немедленного возврата ошибки.

сторожевой пес

• сторожевой пес может координировать работу нескольких Pgpool-II, чтобы создать мощную кластерную систему и избежать единых точек отказа или разделения мозга. сторожевой пес может быть полезен другим pgpool-II Узлы выполняют проверки работоспособности, чтобы обнаружить Pgpoll-II из-за неисправности. если активно Pgpool-II В случае сбоя режим ожидания Pgpool-II Можно повысить до мероприятия Pgpool-II и берет на себя виртуальную IP。

Кэш запросов в памяти

• В памяти кэш запросов позволяет сохранить пару SELECT утверждение и его результат. Если вход одинаковый из ВЫБРАТЬ, затем Pgpool-II Возвращаемое значение из кэша. Поскольку это не предполагает SQL Анализировать или анализировать PostgreSQL издоступ,Таким образом, использование кэша памяти происходит очень быстро. с другой стороны,в некоторых случаях,это может быть медленнее, чем обычный путь,Потому что это добавляет некоторые накладные расходы на хранение кэшированных данных.

преимущество

• пул соединений:поставлятьпул соединений Функция,улучшить базу данныхпроизводительность。 • балансировка нагрузка: Может использоваться в нескольких PostgreSQL Распределяйте запросы запросов между экземплярами. • Автоматическое переключение при отказе: поддержка автоматического переключения при отказе и разделение чтения и записи.

недостаток

• Сложность: Управление конфигурацией относительно сложное. • Накладные расходы на производительность: при большой нагрузке Pgpool-II Это само по себе может стать узким местом. • Согласованность: требуется дополнительная обработка проблем согласованности данных.

Язык кода Слово:javascript
копировать
https://www.pgpool.net/mediawiki/index.php/Documentation
https://www.pgpool.net/mediawiki/index.php/Downloads

9、Citus

Citus Воля PostgreSQL Преобразование в распределенную базу данныхсистема,Использование сегментирования данных и параллельной обработки запросов повышает производительность и масштабируемость. Автоматическое копирование при совмещении потоковой передачи при сбое,Достичь высокой надежности и согласованности данных.

преимущество

• Распределенная база данных:Воля PostgreSQL Превратиться в Распределенную база данных, улучшить производительность и масштабируемость. • Высокая доступность. В сочетании с автоматическим потоковым переключением при сбое достигается высокая доступность и согласованность данных. • Горизонтальное расширение: базу данных можно расширять горизонтально путем добавления узлов.

недостаток

• сложныйсекс:Конфигурацияиуправлять Распределенная база данные более сложны. • Стоимость: требуется больше аппаратных ресурсов, и стоимость выше. • Конкретные сценарии: подходят для конкретных бизнес-сценариев, таких как крупномасштабная обработка данных и большое количество одновременных запросов.

10. Репликация с несколькими хозяевами

Преимущество: несколько хостов предоставляют возможности чтения и записи для улучшения использования. недостаток: слишком сложный, трудно разрешить конфликты записи, увеличивается вероятность несогласованности данных и существует риск потери данных. Настоятельно рекомендуется использовать решение с одним главным устройством, а решение с несколькими главными устройствами использовать только в крайнем случае, поскольку его очень сложно решить и риск высок. К распространенным решениям для копирования с несколькими хозяевами относятся: BDR (двунаправленное копирование), xDB, PostgreSQL-XL, PostgreSQL-XC. / PostgreSQL-XC2、Rubyrep、Bucardo。

BDR(двустороннийкопировать)、xDB、PostgreSQL-XL、PostgreSQL-XC / PostgreSQL-XC2、Rubyrep、Bucardo

1)BDR

Двунаправленная репликация: двусторонняя синхронизация между несколькими узлами. зрелая. Доступна начиная с PG 9.4. Это относительно старая технология, и в последние годы в Интернете нет соответствующих статей.

BDR Из ранних версий с открытым исходным кодом, но последняя версия с закрытым исходным кодом, это решение было впервые предоставлено 2ndQuadrant Разработка из.

2)xDB

• EnterpriseDB использовать Java Разработал собственное решение двустороннего копирования под названием xDB — проект с закрытым исходным кодом, поэтому информации в Интернете недостаточно.

3)PostgreSQL-XL

• этода PostgreSQL-XC из А филиал, руководитель вперед подлежит 2ndQuadrant поддерживать. это отстанет от сообщества PostgreSQL из Итерация версии. Понятно, что оно основано на PostgreSQL 10.6,и PostgreSQL-12 Не совместимо. подходит для OLAP , но не подходит для высоких TPS。

4)PostgreSQL XC / XC2

• PostgreSQL-XC Зависит отEnterpriseDB и NTT Это разработанное решение с открытым исходным кодом для синхронизации и копирования, предназначенное для обеспечения записываемых расширений, синхронизации, симметрии и прозрачности. PostgreSQL Кластерное решение.

5)Rubyrep

• Это да Арн Телеман (Arndt Леманн) разработал асинхронное главное/основное копирование, которое утверждает, что имеет простейшие функции конфигурации и может работать на разных платформах (включая Windows). Автоматически настраивайте необходимые триггеры, таблицы журналов и т. д. ;Автоматически обнаруживать вновь добавленные таблицы и синхронизировать их содержимое. ;Автоматическое изменение последовательности конфигурации во избежание дублирования конфликтов ключей.

6)Bucardo

• Bucardo да End Point Компания из Jon Jensen и Greg Sabino Mullane Разработка решений на основе триггеров. Букардо изSolution уже существует Воля почти 20 Годы, но установка сложная, часто прерывается и возникают ошибки. верно Perl 5,DBI,DBD :: Pg,DBIx :: Safe иззависимость.

Помимо перечисленных выше решений высокой доступности, должны быть и другие решения, о которых я не знаю, например, использование синхронизации OGG. В конце концов, я только новичок в PG, и должно быть много архитектур и высокая доступность. решения, о которых я не знаю. Заинтересованные друзья могут проверить информацию самостоятельно. В книге «Практика высокой доступности PostgreSQL» основное внимание уделяется физической репликации, логической репликации, высокой доступности Repmgr, высокой доступности Patroni и архитектуре высокой доступности репликации с несколькими хозяевами BDR. Заинтересованные друзья могут прочитать. это.

Справочная ссылка

Язык кода Слово:javascript
копировать
http://www.pgbouncer.org/install.html
https://developer.aliyun.com/article/775029
https://patroni.readthedocs.io/en/latest/
https://www.repmgr.org/
https://www.pgpool.net/mediawiki/index.php/Documentation
https://www.pgpool.net/mediawiki/index.php/Downloads
https://www.modb.pro/db/459891
https://blog.csdn.net/weixin_37692493/article/details/117032458

Полный текст,Надеюсь, это поможет вам.,Если вы найдете это полезным,Вы можете поделиться им с друзьями вокруг вас,коллега,Поделитесь с теми, кто вам дорог,Учитесь вместе и добивайтесь прогресса вместе~~~

boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose