Репликация PostgreSQL с помощью Bucardo — различия между версиями

Материал из megapuper
Перейти к: навигация, поиск
Строка 81: Строка 81:
  
  
<nowiki>
 
-------------------
 
 
Удаление баз
 
Удаление баз
 
  bucardo remove database keycloakX
 
  bucardo remove database keycloakX
-------------------
 
</nowiki>
 
  
  
Добавляем таблицы которые  будем реплицировать (Важно исключить таблицы без PK)
+
Добавляем таблицы которые  будем реплицировать (Важно исключить таблицы без Primary Key)
 
bucardo add table all --db=keycloak1 --herd=keycloak_herd
 
bucardo add table all --db=keycloak1 --herd=keycloak_herd
  
Здесь нужно заострить внимание на PK. Bucardo, похоже, не работает с таблицами без первичных ключей. Синк сделать получится.
+
Здесь нужно заострить внимание на Primary Key. Bucardo, похоже, не работает с таблицами без первичных ключей. Синк сделать получится<br>
Удаляем из обработки таблицу без PK
+
Удаляем из обработки таблицу без Primary Key
bucardo remove table public.databasechangelog
+
bucardo remove table public.databasechangelog
  
 
Проверяем
 
Проверяем
bucardo list table
+
bucardo list table
bucardo list herd
+
bucardo list herd
  
 
Удаление
 
Удаление

Версия 13:34, 31 марта 2022

Репликация PostgreSQL с помощью Bucardo на Oracle Linux 8.5


Имеем два хоста с базами 172.19.3.109 и 172.19.3.110, которые будем реплицировать. Репликация будет master - master

Установим Postgresql13

dnf module disable postgresql
dnf install postgresql13-server postgresql13
/usr/pgsql-13/bin/postgresql-13-setup initdb


Вносим в настройки /var/lib/pgsql/13/data/pg_hba.conf записи для разрешения работы bucardo c репликой на реплицируемых хостах

host    all             bucardo         127.0.0.1/32               trust
host    all             bucardo         172.19.3.110/32            password

host    all             bucardo         127.0.0.1/32               trust
host    all             bucardo         172.19.3.109/32            password


Разрешаем слушать на всех интерфейсах /var/lib/pgsql/13/data/postgresql.conf

listen_addresses = '*'


Включаем автозапуск и запускаем

systemctl enable postgresql-13
systemctl restart postgresql-13


Устанавливаем необходимые пакеты

yum install bucardo postgresql13-plperl perl-DBI perl-DBD-Pg perl-DBIx-Safe


Создаем директории для логирования и запуска

mkdir /var/log/bucardo
mkdir /var/run/bucardo


Запускаем установку Bucardo

bucardo install


Вывод следующего окна где надо будет задать соответствующие параметры

This will install the bucardo database into an existing Postgres cluster.
Postgres must have been compiled with Perl support, and you must connect as a superuser

Current connection settings:
1. Host:           localhost
2. Port:           5432
3. User:           postgres
4. Database:       postgres
5. PID directory:  /var/run/bucardo
Enter a number to change it, P to proceed, or Q to quit: P


Заведём пароль пользователя bucardo на каждом из серверов:

psql -U postgres -c "ALTER USER bucardo WITH PASSWORD 'DB_PASS';"


Дальнейшие действия проводим на первом хосте. Запускаем Bucardo

bucardo start


Добавляем базы данных с которыми будем работать (Главное требование для работы на нем должна быть та же схема данных что и на первом)

bucardo add database keycloak1 dbname=keycloak dbhost=172.19.3.109 dbuser=bucardo dbpass=DB_PASS
bucardo add database keycloak2 dbname=keycloak dbhost=172.19.3.110 dbuser=bucardo dbpass=DB_PASS


Проверяем

bucardo list database
Database: keycloak1  Status: active  Conn: psql -U bucardo -d keycloak -h 172.19.3.109
Database: keycloak2  Status: active  Conn: psql -U bucardo -d keycloak -h 172.19.3.110


Эти настройки берутся из таблицы db базы bucardo, где и сидит упомянутый выше пароль

psql -U postgres bucardo -c "SELECT name,dbname,dbhost,dbuser,dbpass,status FROM db;"
   name    |  dbname  |    dbhost    | dbuser  |     dbpass      | status 
-----------+----------+--------------+---------+-----------------+--------
 keycloak1 | keycloak | 172.19.3.109 | bucardo | htmZPWg7Ajp4MCC | active
 keycloak2 | keycloak | 172.19.3.110 | bucardo | htmZPWg7Ajp4MCC | active
(2 rows)


Удаление баз

bucardo remove database keycloakX


Добавляем таблицы которые будем реплицировать (Важно исключить таблицы без Primary Key) bucardo add table all --db=keycloak1 --herd=keycloak_herd

Здесь нужно заострить внимание на Primary Key. Bucardo, похоже, не работает с таблицами без первичных ключей. Синк сделать получится
Удаляем из обработки таблицу без Primary Key

bucardo remove table public.databasechangelog

Проверяем

bucardo list table
bucardo list herd

Удаление bucardo remove table all











Другими словами, можно почитать здесь: https://itnan.ru/post.php?c=1&p=327674
http://www.zaweel.ru/2016/07/postgresql_22.html#bucardo