Сравнение версий

Ключ

  • Эта строка добавлена.
  • Эта строка удалена.
  • Изменено форматирование.

...

Блок кода
languageruby
SELECT * FROM bdr.bdr_nodes;
SELECT * FROM bdr.bdr_connections;

Менять адреса проще всего через приложение dbeaver (подключаться к базе можно по ssh). Если нет возможности через dbeaver, то можно через консоль. Задача поменять адрес мастера на 192.168.0.81 и адрес слейва на 192.168.0.91.

bdr.bdr_nodes:

Блок кода
languageruby
UPDATE bdr.bdr_nodes SET node_local_dsn = 'host=192.168.0.81 port=5439 dbname=ecss_storekeeper_db user=postgres password=postgres1'WHERE node_name = 'master_store_node_0842';

...


UPDATE bdr.bdr_nodes SET node_local_dsn = 'host=192.168.0.91 port=5439 dbname=ecss_storekeeper_db user=postgres password=postgres1',node_init_from_dsn = 'host=192.168.0.81 port=5439 dbname=ecss_storekeeper_db user=postgres password=postgres1'WHERE node_name = 'slave_store_node_4942';

значения node_name берутся из предыдущей команды - SELECT * FROM bdr.bdr_nodes;

bdr.bdr_connections:

Блок кода
languageruby
UPDATE bdr.bdr_connections SET conn_dsn = 'host=192.168.0.81 port=5439 dbname=ecss_storekeeper_db user=postgres password=postgres1'WHERE conn_sysid = '7678612370581352472';

...


UPDATE bdr.bdr_connections SET conn_dsn = 'host=192.168.0.91 port=5439 dbname=ecss_storekeeper_db user=postgres password=postgres1'WHERE conn_sysid = '7678612607411490840';

значения conn_sysid берутся из предыдущей команды - SELECT * FROM bdr.bdr_connections;

проверить, что репликация в порядке:

Блок кода
languageruby
SELECT * FROM bdr.pg_replication_slots; - active должно быть t (true)

...


SELECT pg_xlog_location_diff(pg_current_xlog_location(), 'здесь_добавьте_значение_из_колонки_restart_lsn_из_предыдущей_команды') AS lag_bytes; - должно быть меньше килобайта

...


SELECT * FROM bdr.pg_stat_bdr; - колонки с "conflict" должны иметь значения 0.

...


SELECT node_name, node_status FROM bdr.bdr_nodes; - должно быть r r (ready ready)

После этого рекомендовано перезапустить контейнер ecss-postgres-bdr-ssw-postgres-container-1, но при тестировании у меня репликация работала и без перезапуска контейнерапосмотреть запущенные контейнеры:

Блок кода
languageruby
sudo docker ps

Остановить:

Блок кода
languageruby
sudo docker stop ecss-postgres-bdr-ssw-postgres-container-1

Запустить:

Блок кода
languageruby
sudo docker start ecss-postgres-bdr-ssw-postgres-container-1

Проверить, что поднялся:

Блок кода
languageruby
sudo docker ps

Описанные в статье действия необходимо выполнить на обоих хостах.