зеркало из
				https://github.com/iharh/notes.git
				synced 2025-10-30 21:26:09 +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.crunchydata.com/blog/active-active-postgres-16 | ||||||
| https://www.unixmen.com/database-system-postgresql-replication-ubuntu-16-04/ | 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 |     ! his students - S.S Averintsev, V Bibihin | ||||||
| 
 | 
 | ||||||
| 2024 | 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 | Pravblog - Mazhuko - Till Worse Times of 7:14 | ||||||
|     https://www.youtube.com/watch?v=QKZC1eTHq1Y |     https://www.youtube.com/watch?v=QKZC1eTHq1Y | ||||||
| Mazhuko - Proof of Hapiness of 11:55 | 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 | 2019 | ||||||
| soft skills | soft skills | ||||||
| https://www.facebook.com/smorodnikova/posts/2421376461229407 | 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/blog/ | ||||||
| https://amplicode.ru/download/ | https://amplicode.ru/download/ | ||||||
| 
 | 
 | ||||||
|  | 2024 | ||||||
|  | https://habr.com/ru/companies/haulmont/articles/836018/ | ||||||
|  |     ! with lombok | ||||||
|  | 
 | ||||||
| 2024 | 2024 | ||||||
| Amplicode - WN in AC 2024.2 of 7:38 | Amplicode - WN in AC 2024.2 of 7:38 | ||||||
|     https://www.youtube.com/watch?v=E6c-ev04R_0 |     https://www.youtube.com/watch?v=E6c-ev04R_0 | ||||||
|  | |||||||
| @ -7,6 +7,8 @@ Rocha - Jakarta EE for Java Developr | |||||||
|     405677AED81EC9E2D708834837A3B6FE |     405677AED81EC9E2D708834837A3B6FE | ||||||
| 
 | 
 | ||||||
| 2024 | 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 | 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 |     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 | 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") | runtime("org.springframework.boot:spring-boot-properties-migrator") | ||||||
| 
 | 
 | ||||||
| 3.x | 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 | 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 |     https://www.youtube.com/watch?v=zCvGUlHw0ho | ||||||
| [VDBUH2024] - Josh Long - Bootiful Spring Boot 3.x of 58:09 | [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 | 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 | PavelVil - Spring Framework. Event Listener 0:00 of 15:43 | ||||||
|     https://www.youtube.com/watch?v=osr2Kcp3qSk |     https://www.youtube.com/watch?v=osr2Kcp3qSk | ||||||
|  | |||||||
		Загрузка…
	
	
			
			x
			
			
		
	
		Ссылка в новой задаче
	
	Block a user
	 Ihar Hancharenka
						Ihar Hancharenka