patroni-switcher v1.0.7
Patroni Switcher - авто переключение pg серверов под управлением арбитра Patroni
Пакет позволяет делать следующее: 1. При запросах SELECT распределять запросы по серверам Master - Slave. 2. В случае попытки записи в таблицу и ответа ошибки "cannot execute UPDATE in a read-only transaction" или любой ошибки с типом "PreventCommandIfReadOnly" - модуль переключит Master коннектор на подходящий Slave, и дальше будет использовать сервер Slave как Master.
Установка (Installation)
$ npm install patroni-switcher
Примеры (Examples)
Замените в коде все инициализации Sequelize на PatroniSwitcher
Было (AS-IS):
let sequelize = new Sequelize(config.database, config.username, config.password, config);
Стало (TO-BE):
let sequelize = new PatroniSwitcher(config.database, config.username, config.password, config);
Добавьте в config данные по серверам Patroni:
Было (AS-IS):
let config = {
username: "postgres",
password: "postgres",
database: "test",
host: "master-host",
port: 5432,
schema: "default",
dialect: "postgres",
pool: {max: 25, min: 0, idle: 1000}
}
Стало (TO-BE):
let config = {
...
patroni: [ {host: "master-host", port: 5432}, {host: "slave-host", port: 5432}],
}
ChangeLog 1.0.6
Добавлена поддержка patroni-cli (ТОЛЬКО ДЛЯ MIS-Portal)
Утилита создает схемы если их нет. Для env'а созданы новые параметры DB_BEFORECREATESCHEMA и DB_AFTERCREATESCHEMA Содержат часть запроса до создания схемы и после: Пример:
DB_BEFORECREATESCHEMA = set role 'db_admin'
DB_AFTERCREATESCHEMA = GRANT ALL ON SCHEMA {{ schema_name}} TO "as_admin";
Поддерживаемые команды:
- $ patroni db:migrate
- $ patroni db:migrate:undo:all
- $ patroni db:seed:all
- $ patroni db:seed:undo:all
Поддерживается одновременно несколько команд:
$ patroni db:migrate db:seed:all
Развернет таблицы + загрузит первоначальные данные