diff --git a/db/sql/postgres/feature/replication.txt b/db/sql/postgres/feature/replication.txt index db8a5cb0f..b877fc0e2 100644 --- a/db/sql/postgres/feature/replication.txt +++ b/db/sql/postgres/feature/replication.txt @@ -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/ diff --git a/db/sql/postgres/tools/client/antares.txt b/db/sql/postgres/tools/client/antares.txt new file mode 100644 index 000000000..a105ab1f6 --- /dev/null +++ b/db/sql/postgres/tools/client/antares.txt @@ -0,0 +1,2 @@ +https://antares-sql.app/ +https://github.com/antares-sql/antares diff --git a/devops/vcs/git/docs/presentations.txt b/devops/vcs/git/docs/presentations.txt new file mode 100644 index 000000000..0d9a82b47 --- /dev/null +++ b/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 diff --git a/net/proxy/reverse/ngrok/alternatives.txt b/net/proxy/reverse/ngrok/alternatives.txt new file mode 100644 index 000000000..634dd198b --- /dev/null +++ b/net/proxy/reverse/ngrok/alternatives.txt @@ -0,0 +1 @@ +https://github.com/anderspitman/awesome-tunneling diff --git a/nontech/ortho/people/mazhuko.txt b/nontech/ortho/people/mazhuko.txt index 6bc834d8c..6cca493f1 100644 --- a/nontech/ortho/people/mazhuko.txt +++ b/nontech/ortho/people/mazhuko.txt @@ -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 diff --git a/os/linux/tools/performance.txt b/os/linux/tools/performance.txt new file mode 100644 index 000000000..b5b627f65 --- /dev/null +++ b/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 diff --git a/pl/cross/methodologies/soft-skills.txt b/pl/cross/methodologies/soft-skills.txt index d332c71b7..5de35eee1 100644 --- a/pl/cross/methodologies/soft-skills.txt +++ b/pl/cross/methodologies/soft-skills.txt @@ -1,3 +1,5 @@ +2024 +https://habr.com/ru/companies/rshb/articles/836554/ 2019 soft skills https://www.facebook.com/smorodnikova/posts/2421376461229407 diff --git a/pl/cross/tools/ide/jetbrains/idea/plugins/pl/java/amplicode.txt b/pl/cross/tools/ide/jetbrains/idea/plugins/pl/java/amplicode.txt index 40a0e30cf..62a213ccf 100644 --- a/pl/cross/tools/ide/jetbrains/idea/plugins/pl/java/amplicode.txt +++ b/pl/cross/tools/ide/jetbrains/idea/plugins/pl/java/amplicode.txt @@ -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 diff --git a/pl/java/libfws/jakarta-ee.txt b/pl/java/libfws/jakarta-ee.txt index ee03ca055..0caff4a8a 100644 --- a/pl/java/libfws/jakarta-ee.txt +++ b/pl/java/libfws/jakarta-ee.txt @@ -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 diff --git a/pl/java/libfws/spring/boot/docs/whatsnew.txt b/pl/java/libfws/spring/boot/docs/whatsnew.txt index 9b1741edb..e188d452b 100644 --- a/pl/java/libfws/spring/boot/docs/whatsnew.txt +++ b/pl/java/libfws/spring/boot/docs/whatsnew.txt @@ -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 diff --git a/pl/java/libfws/spring/data/jpa/features/lombok-cousage.txt b/pl/java/libfws/spring/data/jpa/features/lombok-cousage.txt new file mode 100644 index 000000000..ed9fd2ead --- /dev/null +++ b/pl/java/libfws/spring/data/jpa/features/lombok-cousage.txt @@ -0,0 +1,2 @@ +2024 +https://habr.com/ru/companies/haulmont/articles/836018/ diff --git a/pl/java/libfws/spring/events-pubsub/presentations.txt b/pl/java/libfws/spring/events-pubsub/presentations.txt index b7d684f2a..49c876663 100644 --- a/pl/java/libfws/spring/events-pubsub/presentations.txt +++ b/pl/java/libfws/spring/events-pubsub/presentations.txt @@ -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