зеркало из
https://github.com/iharh/notes.git
synced 2025-10-29 12:46:06 +02:00
m
Этот коммит содержится в:
родитель
d9b2651d60
Коммит
43640357a2
@ -5,3 +5,107 @@ https://www.dolthub.com/blog/2024-03-08-postgres-logical-replication/
|
||||
???
|
||||
https://www.crunchydata.com/blog/active-active-postgres-16
|
||||
https://www.unixmen.com/database-system-postgresql-replication-ubuntu-16-04/
|
||||
|
||||
*******************************************************************************************************************************************************************
|
||||
Про потоковую (физическую) репликацию мы с вами много уже говорили. Пришла пора поговорить про логическую репликацию в PostgreSQL и настроить ее.
|
||||
|
||||
Для начала вспомним что это такое. Если говорить про разницу между логической и потоковой репликацией, то это как разница между pg_dump и pg_basebackup,
|
||||
т.е. в первом случае мы передаем SQL код, во втором физические файлы.
|
||||
|
||||
Логическая репликация появилась в PostgreSQL с версии 10, и с тех пор сильно продвинулась в своем развитии.
|
||||
|
||||
Логическая репликация позволяет передавать не всю базу целиком в отличии от потоковой, а только необходимые данные и снимает ряд ограничений физической репликации.
|
||||
В частности, нам нет необходимости, чтобы на главном сервере и на сервере реплики стояли одинаковые версии PostgreSQL, и была полная бинарная совместимость ОС.
|
||||
|
||||
Сценарии применения логической репликации могут быть следующие:
|
||||
|
||||
✅ Консолидация данных по определенным таблицам в главной базе;
|
||||
|
||||
✅ Наоборот, отправка только необходимых таблиц в другие базы;
|
||||
|
||||
✅ С помощью логической репликации можно ухитриться и обновить версию PostgreSQL без простоя;
|
||||
|
||||
И много чего еще...
|
||||
|
||||
Как видите, тут горизонты шире чем при потоковой репликации, но она и предназначена для других целей, для бэкапов и обеспечения отказоустойчивости в основном.
|
||||
|
||||
Важное ограничение логической репликации заключается в том, что реплицируемые таблицы должны иметь первичный ключ (primary key).
|
||||
Кроме того, операции DDL, схема базы данных и последовательности не реплицируются.
|
||||
Также нужно быть осторожным с операцией TRUNCATE, так как опусташаются только таблицы, входящие в репликацию (подписку).
|
||||
|
||||
Логическая репликация работает по принципу публикации и подписки, т.е. сервер реплики подписывается на изменения объектов на сервере мастере и принимает изменения.
|
||||
|
||||
Теперь давайте посмотрим как это настроить. Первое что нам нужно сделать, изменить параметр wal_level на logical в файле postgresql.conf и перезапустить службу PostgreSQL для принятия изменений.
|
||||
|
||||
Предположим, что мы хотим реплицировать на сервер реплику одну таблицу с именем my_table.
|
||||
|
||||
Создаем публикацию для этой таблицы на мастере:
|
||||
|
||||
CREATE PUBLICATION my_publication FOR TABLE my_table;
|
||||
|
||||
Теперь идем на реплику. На реплике база данных, в которую мы хотим реплицировать таблицу уже должна существовать. Создаем подписку:
|
||||
|
||||
CREATE SUBSCRIPTION my_subscription CONNECTION 'host=ip_адрес_мастера port=5432 dbname=имя_базы' PUBLICATION my_publication;
|
||||
|
||||
Соответственно, чтобы подключение состоялось, вам может понадобиться подправить файл pg_hba.conf на мастере, прописав в разрешенные подключения ip адрес сервера реплики.
|
||||
|
||||
На этом все! Логическая репликация должна работать. В этом посте мы посмотрели самые основы логической репликации, в дальнейшем будем развивать тему.
|
||||
|
||||
*******************************************************************************************************************************************************************
|
||||
CLI оркестратор логической репликации pg_easy_replicate.
|
||||
|
||||
Про основы логической репликации и ее простейшую настройку мы уже с вами говорили (https://t.me/pg_guru/788).
|
||||
Сегодня поговорим о замечательной утилите, которая позволит нам упростить настройку логической репликации, и даже обеспечить switchover (передача роли основного узла другому узлу).
|
||||
|
||||
Речь пойдет об утилите pg_easy_replicate. Утилита написана на Ruby и поддерживает все версии PostgreSQL, начиная с 10й.
|
||||
Она способна с помощью логической репликации перенести все данные из одного кластера PostgreSQL в другой, а потом перевести бывший основной кластер в режим только для чтения.
|
||||
Такая фишка может пригодиться, например, для обновления PostgreSQL на мажорную версию с минимальным простоем.
|
||||
|
||||
Естественно, что для использования утилиты, ваша PostgreSQL уже должна быть настроена для логической репликации, т.е. параметр wal_level должен быть в значении logical
|
||||
и должны быть настроены соответствующие разрешения в файле pg_hba.conf.
|
||||
|
||||
Для установки утилиты нам потребуется сам язык Ruby в системе не ниже версии 3.0. Устанавливаем его следующими командами:
|
||||
|
||||
# sudo apt update
|
||||
# sudo apt install ruby-full
|
||||
|
||||
Далее можем проверить версию Ruby с помощью следующей команды:
|
||||
|
||||
# ruby -v
|
||||
|
||||
Дальше устанавливаем утилиту с помощью местного (Ruby) менеджера пакетов:
|
||||
|
||||
# gem install pg_easy_replicate
|
||||
|
||||
Утилита доступна также в виде докер контейнера. Установить можно так:
|
||||
|
||||
# docker pull shayonj/pg_easy_replicate:latest
|
||||
|
||||
Теперь нам нужно установить несколько переменных окружения, чтобы в дальнейшем их использовать в командах
|
||||
|
||||
# export SOURCE_DB_URL="postgres://USERNAME:PASSWORD@host1:5432/DATABASE_NAME"
|
||||
# export TARGET_DB_URL="postgres://USERNAME:PASSWORD@host2:5432/DATABASE_NAME"
|
||||
|
||||
Как вы уже поняли, эти две переменные описывают методы подключения к вашим базам данных.
|
||||
|
||||
Далее нам необходимо создать специального пользователя для репликации с правами superuser и группу для репликации.
|
||||
Группа в понимании утилиты - это логическая единица, объединяющая в себе настройки конкретной репликации.
|
||||
Под одной группой вы можете реплицировать все таблицы одной базы в другую.
|
||||
|
||||
# pg_easy_replicate bootstrap --group-name replica1 --special-user-role="user_for_replica" --copy-schema
|
||||
|
||||
Также перед началом процесса репликации мы можем проверить настройки:
|
||||
|
||||
# pg_easy_replicate config_check --special-user-role="user_for_replica" --copy-schema
|
||||
|
||||
Если получили вот такое сообщение;
|
||||
|
||||
Config is looking good.
|
||||
|
||||
то можно начать процесс репликации с помощью команды:
|
||||
|
||||
# pg_easy_replicate start_sync --group-name replica1
|
||||
|
||||
Со всеми возможными настройками и возможностями утилиты вы можете ознакомиться в ее официальном GitHub:
|
||||
|
||||
➡️ https://github.com/shayonj/pg_easy_replicate/
|
||||
|
||||
2
db/sql/postgres/tools/client/antares.txt
Обычный файл
2
db/sql/postgres/tools/client/antares.txt
Обычный файл
@ -0,0 +1,2 @@
|
||||
https://antares-sql.app/
|
||||
https://github.com/antares-sql/antares
|
||||
9
devops/vcs/git/docs/presentations.txt
Обычный файл
9
devops/vcs/git/docs/presentations.txt
Обычный файл
@ -0,0 +1,9 @@
|
||||
2024
|
||||
GitButler - Chacon - So You Think You Know Git - FOSDEM 2024 0:00 of 46:59
|
||||
https://www.youtube.com/watch?v=aolI_Rz0ZqY
|
||||
2011
|
||||
Chacon - A Tale of Three Trees
|
||||
https://www.infoq.com/presentations/A-Tale-of-Three-Trees/
|
||||
https://speakerdeck.com/schacon/a-tale-of-three-trees
|
||||
InfoQ - Introduction to Git with Scott Chacon of GitHub 0:00 of 1:22:11
|
||||
https://www.youtube.com/watch?v=ZDR433b0HJY
|
||||
1
net/proxy/reverse/ngrok/alternatives.txt
Обычный файл
1
net/proxy/reverse/ngrok/alternatives.txt
Обычный файл
@ -0,0 +1 @@
|
||||
https://github.com/anderspitman/awesome-tunneling
|
||||
@ -22,6 +22,9 @@ people
|
||||
! his students - S.S Averintsev, V Bibihin
|
||||
|
||||
2024
|
||||
Pravblog - Mazhuko - Olimpic Prophetities of 55:40
|
||||
https://www.youtube.com/watch?v=1ilpKZ7fy-c
|
||||
! 18:00 - Vergiliy in Eneida - dolg
|
||||
Pravblog - Mazhuko - Till Worse Times of 7:14
|
||||
https://www.youtube.com/watch?v=QKZC1eTHq1Y
|
||||
Mazhuko - Proof of Hapiness of 11:55
|
||||
|
||||
3
os/linux/tools/performance.txt
Обычный файл
3
os/linux/tools/performance.txt
Обычный файл
@ -0,0 +1,3 @@
|
||||
2024
|
||||
ByteByteGo - Linux Performance Tools! 0:00 of 6:40
|
||||
https://www.youtube.com/watch?v=iJ_eIsA5E1U
|
||||
@ -1,3 +1,5 @@
|
||||
2024
|
||||
https://habr.com/ru/companies/rshb/articles/836554/
|
||||
2019
|
||||
soft skills
|
||||
https://www.facebook.com/smorodnikova/posts/2421376461229407
|
||||
|
||||
@ -18,6 +18,10 @@ https://amplicode.ru/guides/flyway-spring-boot-nastroika-i-napisanie-migracii-ba
|
||||
https://amplicode.ru/blog/
|
||||
https://amplicode.ru/download/
|
||||
|
||||
2024
|
||||
https://habr.com/ru/companies/haulmont/articles/836018/
|
||||
! with lombok
|
||||
|
||||
2024
|
||||
Amplicode - WN in AC 2024.2 of 7:38
|
||||
https://www.youtube.com/watch?v=E6c-ev04R_0
|
||||
|
||||
@ -7,6 +7,8 @@ Rocha - Jakarta EE for Java Developr
|
||||
405677AED81EC9E2D708834837A3B6FE
|
||||
|
||||
2024
|
||||
Javapro - Jakarta EE 11 - Performance and Developer Productivity | Ivar Grimstad (EN) 0:00 of 44:11
|
||||
https://www.youtube.com/watch?v=XZspXqUhAyo
|
||||
Javapro - Embracing the Cloud: A Java Developer’s Guide to Jakarta EE on The Cloud | Buhake Sindi (EN) 0:00 of 51:47
|
||||
https://www.youtube.com/watch?v=gTybQ8V3Tz0
|
||||
SpringIO - Why Spring Matters to Jakarta EE - and Vice Versa by Ivar Grimstad 0:00 of 51:05
|
||||
|
||||
@ -1,6 +1,8 @@
|
||||
runtime("org.springframework.boot:spring-boot-properties-migrator")
|
||||
|
||||
3.x
|
||||
https://habr.com/ru/companies/spring_aio/articles/836506/
|
||||
! 3.3
|
||||
DevBcn - From Spring Boot 2 to Spring Boot 3 with Java 21 and Jakarta EE 0:00 of 42:40
|
||||
https://www.youtube.com/watch?v=zCvGUlHw0ho
|
||||
[VDBUH2024] - Josh Long - Bootiful Spring Boot 3.x of 58:09
|
||||
|
||||
2
pl/java/libfws/spring/data/jpa/features/lombok-cousage.txt
Обычный файл
2
pl/java/libfws/spring/data/jpa/features/lombok-cousage.txt
Обычный файл
@ -0,0 +1,2 @@
|
||||
2024
|
||||
https://habr.com/ru/companies/haulmont/articles/836018/
|
||||
@ -1,3 +1,5 @@
|
||||
2024
|
||||
EnggAdda - Event Spring Boot | Even Driven Architecture in Spring Boot Application | Event | Spring Boot 0:00 of 25:47
|
||||
https://www.youtube.com/watch?v=qdVHmInP8XM
|
||||
PavelVil - Spring Framework. Event Listener 0:00 of 15:43
|
||||
https://www.youtube.com/watch?v=osr2Kcp3qSk
|
||||
|
||||
Загрузка…
x
Ссылка в новой задаче
Block a user