После установки БД Postgres в кластере адреса прописываются в ecss_storekeeper_db. Посмотреть, какие адреса прописаны в данный момент:
sudo psql -U postgres -h localhost -p 5439
пароль - postgres1
Подключиться к базе:
\c ecss_storekeeper_db
Вывод списка таблиц:
\dt bdr.*
Адреса прописаны в bdr.bdr_nodes и bdr.bdr_connections
SELECT * FROM bdr.bdr_nodes; SELECT * FROM bdr.bdr_connections;
Задача поменять адрес мастера на 192.168.0.81 и адрес слейва на 192.168.0.91.
bdr.bdr_nodes:
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:
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;
проверить, что репликация в порядке:
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, посмотреть запущенные контейнеры:
sudo docker ps
Остановить:
sudo docker stop ecss-postgres-bdr-ssw-postgres-container-1
Запустить:
sudo docker start ecss-postgres-bdr-ssw-postgres-container-1
Проверить, что поднялся:
sudo docker ps
Описанные в статье действия необходимо выполнить на обоих хостах.