7. Утилиты

7.1. cookd

cookd - это непосредственно демон сервиса cook. Чтобы запустить его, достаточно передать конфигурационный файл: cookd -c <config>.

7.2. cookctl

Утилита cookctl - это утилита управления кластером cook. Она может использовать тот же конфигурационный файл, что и cook для подключения к кластеру. cookctl -c <config> <command>

7.2.1. status

Показывает информацию о кластере и его активные узлы

Пример:

cookctl -c configuration.yml status

Результат:

> cookctl status

Cluster:
    cook-cluster 
    generation 2
    locked by cook-node-2

Databases:
    testdb1
    testdb2

Nodes:
    cook-node-1 (slave/out of sync) async node, API URL http://cook-node-1:5030, RDB 3.0.17.0 on 3050 and AUX 3060 (cook-node-1/3050), failover enabled, priority 0

    cook-node-2 (master/sync) async node, API URL http://cook-node-2:5030, RDB 3.0.17.0 on 3050 and AUX 3060 (cook-node-2/3050), failover enabled, priority 0

    cook-node-3 (slave/out of sync) async node, API URL http://cook-node-3:5030, RDB 3.0.17.0 on 3050 and AUX 3060 (cook-node-3/3050), failover enabled, priority 0

Ключ -v выводит дополнительную техническую информацию в status, а также в других командах:

Пример:

cookctl -c configuration.yml -v status

Результат:

> cookctl -v status

Cluster:
    cook-cluster (e03d7798-e26b-4e0f-ac1d-d9794fd57ff7, metadata 1.0)
    generation 2 (b7c9d2d8-8f66-4843-9d62-db51df8d904d)
    locked by cook-node-2

Databases:
    testdb1 (6a8a5fe7-9d27-43d6-998b-76c8135c9b8f)
    testdb2 (00919a49-c1a3-4c4b-886f-a1b2ddc7bb8b)

Nodes:
    cook-node-1 (slave/out of sync) async node, API URL http://cook-node-1:5030, RDB 3.0.17.0 on 3050 and AUX 3060 (cook-node-1/3050), failover enabled, priority 0
        testdb1 /data/database1.fdb (6a8a5fe7-9d27-43d6-998b-76c8135c9b8f) 2:0 (out of sync) cook-node-1/3050:testdb1
            async source dir: /slave_logs/e03d7798-e26b-4e0f-ac1d-d9794fd57ff7/source/2/6a8a5fe7-9d27-43d6-998b-76c8135c9b8f
        testdb2 /data/database2.fdb (00919a49-c1a3-4c4b-886f-a1b2ddc7bb8b) 2:0 (out of sync) cook-node-1/3050:testdb2
            async source dir: /slave_logs/e03d7798-e26b-4e0f-ac1d-d9794fd57ff7/source/2/00919a49-c1a3-4c4b-886f-a1b2ddc7bb8b

    cook-node-2 (master/sync) async node, API URL http://cook-node-2:5030, RDB 3.0.17.0 on 3050 and AUX 3060 (cook-node-2/3050), failover enabled, priority 0
        testdb1 /data/testdb1.fdb (6a8a5fe7-9d27-43d6-998b-76c8135c9b8f) 2:0 (sync) cook-node-2/3050:testdb1
            async target dir: /shared/e03d7798-e26b-4e0f-ac1d-d9794fd57ff7/logs/2/6a8a5fe7-9d27-43d6-998b-76c8135c9b8f/
        testdb2 /data/testdb2.fdb (00919a49-c1a3-4c4b-886f-a1b2ddc7bb8b) 2:0 (sync) cook-node-2/3050:testdb2
            async target dir: /shared/e03d7798-e26b-4e0f-ac1d-d9794fd57ff7/logs/2/00919a49-c1a3-4c4b-886f-a1b2ddc7bb8b/

    cook-node-3 (slave/out of sync) async node, API URL http://cook-node-3:5030, RDB 3.0.17.0 on 3050 and AUX 3060 (cook-node-3/3050), failover enabled, priority 0
        testdb1 /data/testdb1.fdb (6a8a5fe7-9d27-43d6-998b-76c8135c9b8f) 2:0 (out of sync) cook-node-3/3050:testdb1
            async source dir: /slave_logs/e03d7798-e26b-4e0f-ac1d-d9794fd57ff7/source/2/6a8a5fe7-9d27-43d6-998b-76c8135c9b8f
        testdb2 /data/testdb2.fdb (00919a49-c1a3-4c4b-886f-a1b2ddc7bb8b) 2:0 (out of sync) cook-node-3/3050:testdb2
            async source dir: /slave_logs/e03d7798-e26b-4e0f-ac1d-d9794fd57ff7/source/2/00919a49-c1a3-4c4b-886f-a1b2ddc7bb8b

7.2.2. nodes

Показывает все активные узлы кластера их статусы и IP, которые они анонсировали для подключения к БД и REST API, а также список баз с локальными путями и DSN, которыми они управляют.

Пример:

cookctl -c configuration.yml nodes

Результат:

> cookctl nodes

Nodes:
    cook-node-1 (slave/out of sync) async node, API URL http://cook-node-1:5030, RDB 3.0.17.0 on 3050 and AUX 3060 (cook-node-1/3050), failover enabled, priority 0

    cook-node-2 (master/sync) async node, API URL http://cook-node-2:5030, RDB 3.0.17.0 on 3050 and AUX 3060 (cook-node-2/3050), failover enabled, priority 0

    cook-node-3 (slave/out of sync) async node, API URL http://cook-node-3:5030, RDB 3.0.17.0 on 3050 and AUX 3060 (cook-node-3/3050), failover enabled, priority 0

Статус узла может содержать дополнительные «флаги»:

  • failover enabled/disabled - флаг ручного запрета перевода узла в режим master

  • restrict master - признак, ограниченного перевода узла в режим master (во время старта кластера, или после сбоя)

  • priority N - приоритет при выборе узла в качестве следующего master в случае сбоя

  • MAINTENANCE - режим обслуживания

7.2.3. history

Показывает историю перехода статуса ведущего узла в кластере и накопления архивов репликации:

Пример:

cookctl -c configuration.yml history

Результат:

> cookctl history

1 by master cook-node-1
	testdb1 1:0
	testdb2 1:0
2 by master cook-node-2
	testdb1 2:?
	testdb2 2:?

7.2.4. promote

Формат:

promote <node>

Дает команду кластеру перевести узел <node> в режим master.

Пример:

cookctl -c configuration.yml promote cook-node-1

Состояние кластера до promote :

> cookctl status

Cluster:
    cook-cluster 
    generation 1
    locked by cook-node-1

Databases:
    testdb1
    testdb2

Nodes:
    cook-node-1 (master/sync) async node, API URL http://cook-node-1:5030, RDB 3.0.17.0 on 3050 and AUX 3060 (cook-node-1/3050), failover enabled, priority 0

    cook-node-2 (slave/out of sync) async node, API URL http://cook-node-2:5030, RDB 3.0.17.0 on 3050 and AUX 3060 (cook-node-2/3050), failover enabled, priority 0

    cook-node-3 (slave/out of sync) async node, API URL http://cook-node-3:5030, RDB 3.0.17.0 on 3050 and AUX 3060 (cook-node-3/3050), failover enabled, priority 0

> cookctl history

1 by master cook-node-1
	testdb1 1:?
	testdb2 1:?

Состояние кластера после promote :

> cookctl status

Cluster:
    cook-cluster 
    generation 2
    locked by cook-node-2

Databases:
    testdb1
    testdb2

Nodes:
    cook-node-1 (slave/out of sync) async node, API URL http://cook-node-1:5030, RDB 3.0.17.0 on 3050 and AUX 3060 (cook-node-1/3050), failover enabled, priority 0

    cook-node-2 (master/sync) async node, API URL http://cook-node-2:5030, RDB 3.0.17.0 on 3050 and AUX 3060 (cook-node-2/3050), failover enabled, priority 0

    cook-node-3 (slave/out of sync) async node, API URL http://cook-node-3:5030, RDB 3.0.17.0 on 3050 and AUX 3060 (cook-node-3/3050), failover enabled, priority 0

> cookctl history

1 by master cook-node-1
	testdb1 1:0
	testdb2 1:0
2 by master cook-node-2
	testdb1 2:?
	testdb2 2:?

7.2.5. demote

Версия: 1.0.0

Формат:

demote <node>

Дает команду кластеру перевести узел <node> в режим slave. При этом один из подходящих узлов станет master.

Пример:

cookctl -c configuration.yml demote cook-node-1

7.2.6. allowfailover

Формат:

allowfailover <node> <0|1>

Устанавливает возможность автоматического конвертации узла slave в master при сбое (по-умолчанию 1).

Пример:

cookctl -c configuration.yml allowfailover cook-node-3 0

Состояние узлов с запретом перехода master на cook-node-3:

> cookctl nodes

Nodes:
    cook-node-1 (slave/out of sync) async node, API URL http://cook-node-1:5030, RDB 3.0.17.0 on 3050 and AUX 3060 (cook-node-1/3050), failover enabled, priority 10

    cook-node-2 (master/sync) async node, API URL http://cook-node-2:5030, RDB 3.0.17.0 on 3050 and AUX 3060 (cook-node-2/3050), failover enabled, priority 0

    cook-node-3 (slave/out of sync) async node, API URL http://cook-node-3:5030, RDB 3.0.17.0 on 3050 and AUX 3060 (cook-node-3/3050), failover disabled, priority 0

7.2.7. maintenance

Версия: 0.1.0

Формат:

maintenance <0|1> [--wait]

Дает команду кластеру перевести узлы в режим обслуживания (см. Режим обслуживания). Опционально аргумент –wait позволяет дождаться, когда все узлы перейдут в режим обслуживания.

Пример:

cookctl -c configuration.yml maintenance 1 --wait
Enabling maintenance mode

Состояние кластера в режиме maintenance:

> cookctl status

Cluster:
    cook-cluster 
    generation 2
    locked by cook-node-2

Databases:
    testdb1
    testdb2

Nodes:
    cook-node-1 (slave/out of sync) async node, API URL http://cook-node-1:5030, RDB 3.0.17.0 on 3050 and AUX 3060 (cook-node-1/3050), failover enabled, priority 0

    cook-node-2 (master/sync) async node, API URL http://cook-node-2:5030, RDB 3.0.17.0 on 3050 and AUX 3060 (cook-node-2/3050), failover enabled, priority 0

    cook-node-3 (slave/out of sync) async node, API URL http://cook-node-3:5030, RDB 3.0.17.0 on 3050 and AUX 3060 (cook-node-3/3050), failover enabled, priority 0

7.2.8. priority

Версия: 0.3.0

Формат:

priority  <node> <priority>

Устанавливает приоритет узла при выборе нового master при сбое (по-умолчанию 0).

Пример:

cookctl -c configuration.yml priority cook-node-1 10

Состояние узлов с измененным приоритетом:

> cookctl nodes

Nodes:
    cook-node-1 (slave/out of sync) async node, API URL http://cook-node-1:5030, RDB 3.0.17.0 on 3050 and AUX 3060 (cook-node-1/3050), failover enabled, priority 10

    cook-node-2 (master/sync) async node, API URL http://cook-node-2:5030, RDB 3.0.17.0 on 3050 and AUX 3060 (cook-node-2/3050), failover enabled, priority 0

    cook-node-3 (slave/out of sync) async node, API URL http://cook-node-3:5030, RDB 3.0.17.0 on 3050 and AUX 3060 (cook-node-3/3050), failover enabled, priority 0

7.2.9. add-database

Версия: 0.3.0

Формат:

add-database <alias> [<database>]

Добавляет базу данных в кластер и назначает ей псевдоним alias.

Если указан псевдоним <alias> и путь к БД <database>, то используется только кластерная конфигурация. Если база присутствует в локальной конфигурации, то ее параметры будут проигнорированы.

Если указан только псевдоним <alias>, то база данных должна быть в секции init.rdb.databases в конфигурации передаваемой в cookctl, также как при инициализации кластера, в этом случае при ее добавлении будут использованы параметры из конфигурации.

Примечание

Данную команду можно выполнить только на активном master.

Предупреждение

При добавлении базы данных текущий master не потеряет блокировку, но остановит Ред Базу Данных во время добавления и увеличит поколение репликации. Подключенные slave в кластере также остановят репликацию для инициализации новой базы данных.

Пример:

> cookctl add-database testdb3 /data/testdb3.fdb

Adding database '/data/testdb3.fdb' with alias 'testdb3'

Базы данных до выполнения:

> cookctl -v status

Cluster:
    cook-cluster (e03d7798-e26b-4e0f-ac1d-d9794fd57ff7, metadata 1.0)
    generation 2 (b7c9d2d8-8f66-4843-9d62-db51df8d904d)
    locked by cook-node-2

Databases:
    testdb1 (6a8a5fe7-9d27-43d6-998b-76c8135c9b8f)
    testdb2 (00919a49-c1a3-4c4b-886f-a1b2ddc7bb8b)

Nodes:
    cook-node-1 (slave/out of sync) async node, API URL http://cook-node-1:5030, RDB 3.0.17.0 on 3050 and AUX 3060 (cook-node-1/3050), failover enabled, priority 10
        testdb1 /data/database1.fdb (6a8a5fe7-9d27-43d6-998b-76c8135c9b8f) 2:0 (out of sync) cook-node-1/3050:testdb1
            async source dir: /slave_logs/e03d7798-e26b-4e0f-ac1d-d9794fd57ff7/source/2/6a8a5fe7-9d27-43d6-998b-76c8135c9b8f
        testdb2 /data/database2.fdb (00919a49-c1a3-4c4b-886f-a1b2ddc7bb8b) 2:0 (out of sync) cook-node-1/3050:testdb2
            async source dir: /slave_logs/e03d7798-e26b-4e0f-ac1d-d9794fd57ff7/source/2/00919a49-c1a3-4c4b-886f-a1b2ddc7bb8b

    cook-node-2 (master/sync) async node, API URL http://cook-node-2:5030, RDB 3.0.17.0 on 3050 and AUX 3060 (cook-node-2/3050), failover enabled, priority 0
        testdb1 /data/testdb1.fdb (6a8a5fe7-9d27-43d6-998b-76c8135c9b8f) 2:0 (sync) cook-node-2/3050:testdb1
            async target dir: /shared/e03d7798-e26b-4e0f-ac1d-d9794fd57ff7/logs/2/6a8a5fe7-9d27-43d6-998b-76c8135c9b8f/
        testdb2 /data/testdb2.fdb (00919a49-c1a3-4c4b-886f-a1b2ddc7bb8b) 2:0 (sync) cook-node-2/3050:testdb2
            async target dir: /shared/e03d7798-e26b-4e0f-ac1d-d9794fd57ff7/logs/2/00919a49-c1a3-4c4b-886f-a1b2ddc7bb8b/

    cook-node-3 (slave/out of sync) async node, API URL http://cook-node-3:5030, RDB 3.0.17.0 on 3050 and AUX 3060 (cook-node-3/3050), failover enabled, priority 0
        testdb1 /data/testdb1.fdb (6a8a5fe7-9d27-43d6-998b-76c8135c9b8f) 2:0 (out of sync) cook-node-3/3050:testdb1
            async source dir: /slave_logs/e03d7798-e26b-4e0f-ac1d-d9794fd57ff7/source/2/6a8a5fe7-9d27-43d6-998b-76c8135c9b8f
        testdb2 /data/testdb2.fdb (00919a49-c1a3-4c4b-886f-a1b2ddc7bb8b) 2:0 (out of sync) cook-node-3/3050:testdb2
            async source dir: /slave_logs/e03d7798-e26b-4e0f-ac1d-d9794fd57ff7/source/2/00919a49-c1a3-4c4b-886f-a1b2ddc7bb8b

Базы данных после выполнения:

> cookctl -v status

Cluster:
    cook-cluster (e03d7798-e26b-4e0f-ac1d-d9794fd57ff7, metadata 1.0)
    generation 3 (810e31ff-aba4-499c-96d1-4ea348b9cfcd)
    locked by cook-node-2

Databases:
    testdb1 (6a8a5fe7-9d27-43d6-998b-76c8135c9b8f)
    testdb2 (00919a49-c1a3-4c4b-886f-a1b2ddc7bb8b)
    testdb3 (83c91cf5-15c9-4118-9ebb-eb174b9b1e8d)

Nodes:
    cook-node-1 (slave/out of sync) async node, API URL http://cook-node-1:5030, RDB 3.0.17.0 on 3050 and AUX 3060 (cook-node-1/3050), failover enabled, priority 10
        testdb1 /data/database1.fdb (6a8a5fe7-9d27-43d6-998b-76c8135c9b8f) 3:0 (out of sync) cook-node-1/3050:testdb1
            async source dir: /slave_logs/e03d7798-e26b-4e0f-ac1d-d9794fd57ff7/source/3/6a8a5fe7-9d27-43d6-998b-76c8135c9b8f
        testdb2 /data/database2.fdb (00919a49-c1a3-4c4b-886f-a1b2ddc7bb8b) 3:0 (out of sync) cook-node-1/3050:testdb2
            async source dir: /slave_logs/e03d7798-e26b-4e0f-ac1d-d9794fd57ff7/source/3/00919a49-c1a3-4c4b-886f-a1b2ddc7bb8b
        testdb3 /data/testdb3.fdb (83c91cf5-15c9-4118-9ebb-eb174b9b1e8d) 3:0 (out of sync) cook-node-1/3050:testdb3
            async source dir: /slave_logs/e03d7798-e26b-4e0f-ac1d-d9794fd57ff7/source/3/83c91cf5-15c9-4118-9ebb-eb174b9b1e8d

    cook-node-2 (master/sync) async node, API URL http://cook-node-2:5030, RDB 3.0.17.0 on 3050 and AUX 3060 (cook-node-2/3050), failover enabled, priority 0
        testdb1 /data/testdb1.fdb (6a8a5fe7-9d27-43d6-998b-76c8135c9b8f) 3:0 (sync) cook-node-2/3050:testdb1
            async target dir: /shared/e03d7798-e26b-4e0f-ac1d-d9794fd57ff7/logs/3/6a8a5fe7-9d27-43d6-998b-76c8135c9b8f/
        testdb2 /data/testdb2.fdb (00919a49-c1a3-4c4b-886f-a1b2ddc7bb8b) 3:0 (sync) cook-node-2/3050:testdb2
            async target dir: /shared/e03d7798-e26b-4e0f-ac1d-d9794fd57ff7/logs/3/00919a49-c1a3-4c4b-886f-a1b2ddc7bb8b/
        testdb3 /data/testdb3.fdb (83c91cf5-15c9-4118-9ebb-eb174b9b1e8d) 3:0 (sync) cook-node-2/3050:testdb3
            async target dir: /shared/e03d7798-e26b-4e0f-ac1d-d9794fd57ff7/logs/3/83c91cf5-15c9-4118-9ebb-eb174b9b1e8d/

    cook-node-3 (slave/out of sync) async node, API URL http://cook-node-3:5030, RDB 3.0.17.0 on 3050 and AUX 3060 (cook-node-3/3050), failover enabled, priority 0
        testdb1 /data/testdb1.fdb (6a8a5fe7-9d27-43d6-998b-76c8135c9b8f) 3:0 (out of sync) cook-node-3/3050:testdb1
            async source dir: /slave_logs/e03d7798-e26b-4e0f-ac1d-d9794fd57ff7/source/3/6a8a5fe7-9d27-43d6-998b-76c8135c9b8f
        testdb2 /data/testdb2.fdb (00919a49-c1a3-4c4b-886f-a1b2ddc7bb8b) 3:0 (out of sync) cook-node-3/3050:testdb2
            async source dir: /slave_logs/e03d7798-e26b-4e0f-ac1d-d9794fd57ff7/source/3/00919a49-c1a3-4c4b-886f-a1b2ddc7bb8b
        testdb3 /data/testdb3.fdb (83c91cf5-15c9-4118-9ebb-eb174b9b1e8d) 3:0 (out of sync) cook-node-3/3050:testdb3
            async source dir: /slave_logs/e03d7798-e26b-4e0f-ac1d-d9794fd57ff7/source/3/83c91cf5-15c9-4118-9ebb-eb174b9b1e8d

7.2.10. rm-database

Версия: 0.3.0

Формат:

rm-database <alias>

Удаляет базу данных из кластера.

Примечание

Данную команду можно выполнить только на активном master.

Предупреждение

При удалении базы данных текущий master не потеряет блокировку, но остановит Ред Базу Данных во время удаления и увеличит поколение репликации. Подключенные slave в кластере также остановят репликацию для удаление базы данных.

Пример:

До удаления:

> cookctl -v status

Cluster:
    cook-cluster (e03d7798-e26b-4e0f-ac1d-d9794fd57ff7, metadata 1.0)
    generation 3 (810e31ff-aba4-499c-96d1-4ea348b9cfcd)
    locked by cook-node-2

Databases:
    testdb1 (6a8a5fe7-9d27-43d6-998b-76c8135c9b8f)
    testdb2 (00919a49-c1a3-4c4b-886f-a1b2ddc7bb8b)
    testdb3 (83c91cf5-15c9-4118-9ebb-eb174b9b1e8d)

Nodes:
    cook-node-1 (slave/out of sync) async node, API URL http://cook-node-1:5030, RDB 3.0.17.0 on 3050 and AUX 3060 (cook-node-1/3050), failover enabled, priority 10
        testdb1 /data/database1.fdb (6a8a5fe7-9d27-43d6-998b-76c8135c9b8f) 3:0 (out of sync) cook-node-1/3050:testdb1
            async source dir: /slave_logs/e03d7798-e26b-4e0f-ac1d-d9794fd57ff7/source/3/6a8a5fe7-9d27-43d6-998b-76c8135c9b8f
        testdb2 /data/database2.fdb (00919a49-c1a3-4c4b-886f-a1b2ddc7bb8b) 3:0 (out of sync) cook-node-1/3050:testdb2
            async source dir: /slave_logs/e03d7798-e26b-4e0f-ac1d-d9794fd57ff7/source/3/00919a49-c1a3-4c4b-886f-a1b2ddc7bb8b
        testdb3 /data/testdb3.fdb (83c91cf5-15c9-4118-9ebb-eb174b9b1e8d) 3:0 (out of sync) cook-node-1/3050:testdb3
            async source dir: /slave_logs/e03d7798-e26b-4e0f-ac1d-d9794fd57ff7/source/3/83c91cf5-15c9-4118-9ebb-eb174b9b1e8d

    cook-node-2 (master/sync) async node, API URL http://cook-node-2:5030, RDB 3.0.17.0 on 3050 and AUX 3060 (cook-node-2/3050), failover enabled, priority 0
        testdb1 /data/testdb1.fdb (6a8a5fe7-9d27-43d6-998b-76c8135c9b8f) 3:0 (sync) cook-node-2/3050:testdb1
            async target dir: /shared/e03d7798-e26b-4e0f-ac1d-d9794fd57ff7/logs/3/6a8a5fe7-9d27-43d6-998b-76c8135c9b8f/
        testdb2 /data/testdb2.fdb (00919a49-c1a3-4c4b-886f-a1b2ddc7bb8b) 3:0 (sync) cook-node-2/3050:testdb2
            async target dir: /shared/e03d7798-e26b-4e0f-ac1d-d9794fd57ff7/logs/3/00919a49-c1a3-4c4b-886f-a1b2ddc7bb8b/
        testdb3 /data/testdb3.fdb (83c91cf5-15c9-4118-9ebb-eb174b9b1e8d) 3:0 (sync) cook-node-2/3050:testdb3
            async target dir: /shared/e03d7798-e26b-4e0f-ac1d-d9794fd57ff7/logs/3/83c91cf5-15c9-4118-9ebb-eb174b9b1e8d/

    cook-node-3 (slave/out of sync) async node, API URL http://cook-node-3:5030, RDB 3.0.17.0 on 3050 and AUX 3060 (cook-node-3/3050), failover enabled, priority 0
        testdb1 /data/testdb1.fdb (6a8a5fe7-9d27-43d6-998b-76c8135c9b8f) 3:0 (out of sync) cook-node-3/3050:testdb1
            async source dir: /slave_logs/e03d7798-e26b-4e0f-ac1d-d9794fd57ff7/source/3/6a8a5fe7-9d27-43d6-998b-76c8135c9b8f
        testdb2 /data/testdb2.fdb (00919a49-c1a3-4c4b-886f-a1b2ddc7bb8b) 3:0 (out of sync) cook-node-3/3050:testdb2
            async source dir: /slave_logs/e03d7798-e26b-4e0f-ac1d-d9794fd57ff7/source/3/00919a49-c1a3-4c4b-886f-a1b2ddc7bb8b
        testdb3 /data/testdb3.fdb (83c91cf5-15c9-4118-9ebb-eb174b9b1e8d) 3:0 (out of sync) cook-node-3/3050:testdb3
            async source dir: /slave_logs/e03d7798-e26b-4e0f-ac1d-d9794fd57ff7/source/3/83c91cf5-15c9-4118-9ebb-eb174b9b1e8d

Выполнение команды:

> cookctl rm-database testdb1

Removing database with alias testdb1 (6a8a5fe7-9d27-43d6-998b-76c8135c9b8f)

После удаления:

> cookctl -v status

Cluster:
    cook-cluster (e03d7798-e26b-4e0f-ac1d-d9794fd57ff7, metadata 1.0)
    generation 4 (3c013121-369d-4174-9a9f-0f17e87650cc)
    locked by cook-node-2

Databases:
    testdb2 (00919a49-c1a3-4c4b-886f-a1b2ddc7bb8b)
    testdb3 (83c91cf5-15c9-4118-9ebb-eb174b9b1e8d)

Nodes:
    cook-node-1 (slave/out of sync) async node, API URL http://cook-node-1:5030, RDB 3.0.17.0 on 3050 and AUX 3060 (cook-node-1/3050), failover enabled, priority 10
        testdb2 /data/database2.fdb (00919a49-c1a3-4c4b-886f-a1b2ddc7bb8b) 4:0 (out of sync) cook-node-1/3050:testdb2
            async source dir: /slave_logs/e03d7798-e26b-4e0f-ac1d-d9794fd57ff7/source/4/00919a49-c1a3-4c4b-886f-a1b2ddc7bb8b
        testdb3 /data/testdb3.fdb (83c91cf5-15c9-4118-9ebb-eb174b9b1e8d) 4:0 (out of sync) cook-node-1/3050:testdb3
            async source dir: /slave_logs/e03d7798-e26b-4e0f-ac1d-d9794fd57ff7/source/4/83c91cf5-15c9-4118-9ebb-eb174b9b1e8d

    cook-node-2 (master/sync) async node, API URL http://cook-node-2:5030, RDB 3.0.17.0 on 3050 and AUX 3060 (cook-node-2/3050), failover enabled, priority 0
        testdb2 /data/testdb2.fdb (00919a49-c1a3-4c4b-886f-a1b2ddc7bb8b) 4:0 (sync) cook-node-2/3050:testdb2
            async target dir: /shared/e03d7798-e26b-4e0f-ac1d-d9794fd57ff7/logs/4/00919a49-c1a3-4c4b-886f-a1b2ddc7bb8b/
        testdb3 /data/testdb3.fdb (83c91cf5-15c9-4118-9ebb-eb174b9b1e8d) 4:0 (sync) cook-node-2/3050:testdb3
            async target dir: /shared/e03d7798-e26b-4e0f-ac1d-d9794fd57ff7/logs/4/83c91cf5-15c9-4118-9ebb-eb174b9b1e8d/

    cook-node-3 (slave/out of sync) async node, API URL http://cook-node-3:5030, RDB 3.0.17.0 on 3050 and AUX 3060 (cook-node-3/3050), failover enabled, priority 0
        testdb2 /data/testdb2.fdb (00919a49-c1a3-4c4b-886f-a1b2ddc7bb8b) 4:0 (out of sync) cook-node-3/3050:testdb2
            async source dir: /slave_logs/e03d7798-e26b-4e0f-ac1d-d9794fd57ff7/source/4/00919a49-c1a3-4c4b-886f-a1b2ddc7bb8b
        testdb3 /data/testdb3.fdb (83c91cf5-15c9-4118-9ebb-eb174b9b1e8d) 4:0 (out of sync) cook-node-3/3050:testdb3
            async source dir: /slave_logs/e03d7798-e26b-4e0f-ac1d-d9794fd57ff7/source/4/83c91cf5-15c9-4118-9ebb-eb174b9b1e8d

7.2.11. shutdown

Версия: 0.5.0

Формат:

shutdown <0|1> [--wait [--reset]]

Останавливает все узлы Cook.

Опционально аргумент –wait позволяет дождаться, когда все узлы остановятся, а –reset - автоматически отменяет shutdown.

Предупреждение

Если не использовались флаги –wait –reset, то режим shutdown сохраняется и узлы не смогут стартовать.

Пример остановки кластера без ожидания остановки всех узлов:

cookctl -c configuration.yml shutdown 1

Пример остановки кластера с ожиданием остановки всех узлов и автоматической отмены режима shutdown:

cookctl -c configuration.yml shutdown 1 --wait --reset

Пример ручной отмены режима shutdown:

cookctl -c configuration.yml shutdown 0

7.2.12. logs

Для облегчения анализа и поиска логов и архивов cookctl предоставляет команды ls и find. Они оперируют каталогом репликации на текущем узле, поэтому результат выполнения команды может различаться на разных узлах.

7.2.12.1. logs ls

Версия: 0.5.0

Формат:

logs ls [--analyze] [--database <database|GUID>] [--generation <generation>]

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

Аргумент -a, --analyze позволяет вывести номер и состояние лога.

Чтобы ограничить вывод логов необходимым поколением и базой данных, можно использовать аргументы -g, --generation и -d, --database.

Предупреждение

Утилита должна быть запущена от root или от пользователя, от которого работает cookd.

Пример:

cookctl  -c configuration.yml logs ls -a -d testdb1 -g 2
Analyzing /tmp/cook/replication for node node0
Cluster directory /tmp/cook/replication/cce57a4f-abe8-49c7-ac1f-6c34a146093a

  Generation 2.
  Master is node1
  Archives directory: /tmp/cook/replication/cce57a4f-abe8-49c7-ac1f-6c34a146093a/archives/master/2
  Logs directory: /tmp/cook/replication/cce57a4f-abe8-49c7-ac1f-6c34a146093a/logs/2
    Database testdb1. Master GUID 332BBB79-A701-4C4C-3EAD-D06C3AF48FF0
      Archives in /tmp/cook/replication/cce57a4f-abe8-49c7-ac1f-6c34a146093a/archives/master/2/9413abe6-376e-4035-8d8b-51daec71ba05:
        cook_async_repl.arch-000000001 sequence: 1, state: arch
        cook_async_repl.arch-000000002 sequence: 2, state: arch
        cook_async_repl.arch-000000003 sequence: 3, state: arch
        cook_async_repl.arch-000000004 sequence: 4, state: arch
        cook_async_repl.arch-000000005 sequence: 5, state: arch
        cook_async_repl.arch-000000006 sequence: 6, state: arch
        cook_async_repl.arch-000000007 sequence: 7, state: arch
        cook_async_repl.arch-000000008 sequence: 8, state: arch
        cook_async_repl.arch-000000009 sequence: 9, state: arch
        cook_async_repl.arch-000000010 sequence: 10, state: arch
        cook_async_repl.arch-000000011 sequence: 11, state: arch
        cook_async_repl.arch-000000012 sequence: 12, state: arch
        cook_async_repl.arch-000000013 sequence: 13, state: arch
        cook_async_repl.arch-000000014 sequence: 14, state: arch
        cook_async_repl.arch-000000015 sequence: 15, state: arch
      Logs in /tmp/cook/replication/cce57a4f-abe8-49c7-ac1f-6c34a146093a/logs/2/9413abe6-376e-4035-8d8b-51daec71ba05:
        cook_async_repl.log-000 sequence: 15, state: free
      Slave logs (/tmp/cook/replication/slave_logs_0/cce57a4f-abe8-49c7-ac1f-6c34a146093a/2/9413abe6-376e-4035-8d8b-51daec71ba05:
        Control file {332BBB79-A701-4C4C-3EAD-D06C3AF48FF0} sequence: 15
        Logs not found

7.2.12.2. logs find

Версия: 0.5.0

Формат:

logs find <database|GUID> <position>

Ищет логи и архивы репликации для указанной базы данных и позиции.

База данных может быть указана как в виде псевдонима, указанного при создании кластера или ее добавлении так и GUID, сгенерированного кластером.

Позиция указывается в формате G:S, где G - поколение, S - порядковый номер лога.

Предупреждение

Утилита должна быть запущена от root или от пользователя, от которого работает cookd.

Пример:

cookctl  -c configuration.yml logs find testdb1 2:3
Analyzing /tmp/cook/replication for node node0
Found archive /tmp/cook/replication/cce57a4f-abe8-49c7-ac1f-6c34a146093a/archives/master/2/9413abe6-376e-4035-8d8b-51daec71ba05/cook_async_repl.arch-000000003 in state arch

7.2.13. recreate

Версия: 0.5.0

Формат:

recreate <node> [--force]

Удаляет и инициализирует данные узла. Все базы данных и логи реплики будут удалены, затем узел заново инициализирует их из существующего master.

Предупреждение

Для инициализации в конфигурации cookd должна присутствовать секция init.slave_database_mapping.

Предупреждение

По-умолчанию утилита не будет удалять данные текущего master. Чтобы принудительно инициализировать текущий master, можно использовать ключ –force. При этом сначала текущий master будет остановлен, а инициализация будет выполнена только после корректного выбора нового master, поэтому данный вариант не рекомендуется использовать.

Пример:

cookctl -c configuration.yml recreate node1

7.2.14. fixpermissions <owner> <group>

Версия: 0.6.0

Формат:

fixpermissions <owner> [<groups>]

Устанавливает владельца и права на файлы и директории, используемые cookd.

Предупреждение

Данная команда работает только в Linux.

Предупреждение

Для инициализации в конфигурации cookd должна присутствовать секция init.slave_database_mapping.

Предупреждение

Утилита должна быть запущена от root.

Пример:

cookctl -c configuration.yml fixpermissions firebird

7.2.15. unregister

Версия: 1.0.0

Формат:

unregister <node> [--force]

Удаляет узел node из кластера. После этого он остановит работу.

Флаг –force позволяет удалить ведущий узел (master).

Пример:

cookctl -c configuration.yml unregister cook-node-1

7.3. cookdsvc.exe (только Windows)

Служба Cook для Windows. Конфигурация cookd должна лежать в файле cookd.yml в одном каталоге с файлом cookdsvc.exe.

Инсталляция выполняется с помощью команды cookdsvc.exe install.

Полезно настроить логирование в файл с помощью опции cook.log_file, так как логирование в stdout в данном случае невозможно.