Обновление Tarantool Database
Для обновления версии Tarantool DB 3.x рекомендуется использовать инсталлятор Ansible Tarantool Enterprise (ATE).
См. также: Установка через Ansible Tarantool Enterprise.
Обновить Tarantool DB можно, используя один из способов ниже:
Для обновления Tarantool DB рекомендуется использовать первый способ — обновление приложения без простоя.
Для обновления Tarantool DB без простоя (поплечевого обновления) используется стандартный порядок обновления узлов:
- Обновление узлов-реплик хранилища
- Обновление мастер-узлов хранилища
- Обновление роутеров
Для обновления Tarantool DB без простоя через инсталлятор ATE используется сценарий continuous_update.yml.
Чтобы выполнить обновление продукта до версии 3.2.0 или выше:
-
Выполните обновление версии Tarantool DB в обычном порядке через ATE, используя сценарий
continuous_update.yml. При работе этого сценария обновление схемы БД черезbox.schema.upgrade()выполняется автоматически. Описание сценария приведено в разделе Tarantool 3.x: Обновление приложения без простоя документации ATE. -
При обновлении Tarantool DB до версии 3.2.0 Tarantool Cluster Manager (TCM) обновляется до версии 1.10.0. В TCM 1.10.0 изменён формат хранения подписи объектов TCM. Если TCM 1.10.0 запускается на уже существующем хранилище конфигурации (etcd или TbCS), например при обновлении с TCM 1.9.1 или более ранней версии, после завершения сценария обновления TDB необходимо однократно выполнить переподписание данных (
resign-data) в хранилище новым ключом. Без этого TCM не запустится из-за ошибки верификации подписи. При установке TCM 1.10.0 с нуля на новом хранилище или обновлении до версии выше 3.2.0 выполнятьresign-dataне требуется.Чтобы успешно обновить TCM до версии 1.10.0 через ATE, необходимо выполнить следующие шаги в указанном порядке:
-
Остановите TCM, если он запущен. Выполните запуск сценария обновления TCM через ATE
playbooks/tcm/install.yml. После запуска скрипта сервис TCM не запустится. Это нормальная реакция системы перед выполнением критических шагов безопасности. -
Выполните команду
/app/tarantool/cluster-manager/tcm resign-data, указав параметры подключения к хранилищу TCM — etcd или TbCS (аналогично тому, как они передаются при запуске TCM):./tarantool-cluster-manager resign-dataПараметры могут быть переданы одним из способов ниже, в зависимости от вашей конфигурации:
- через опцию
-configс путем к YAML-файлу или строкой конфигурации. Пример:resign_data -config /path/to/config.yaml; - через переменные окружения.
Если скрипт чтения конфигурации использует YAML-файл, убедитесь, что он доступен и корректен;
- через опцию
-
После выполнения команды
resign_dataповторно запустите скрипт установкиplaybooks/tcm/install.ymlили перезапустите службу TCM.
-
-
После завершения обновления задайте для пользователя, от имени которого выполняются CRUD-операции через роутер, права для выполнения CRUD-операций на чтение и запись данных. Минимальный набор прав включает доступ на чтение и запись в необходимые пользовательские спейсы, доступ на чтение системных спейсов
_bucket,_ddl_sharding_keyи_ddl_sharding_func, а также доступ на выполнение необходимых методовcrud.*. Минимальный набор необходимых разрешений приведен в разделе Модель безопасности Tarantool DB.На стороне роутера точечно выдайте права на выполнения (
execute) на методыcrud.*, которые вызываются черезlua_call:credentials:users:db_user:password: 'secret'privileges:- permissions: [execute]lua_call:- crud.select- crud.get- crud.insert- crud.replace- crud.update- crud.upsert- crud.deleteНа стороне хранилища выдайте:
- права на чтение и запись в пользовательские спейсы;
- доступ к системным спейсам для маршрутизации (
_bucket,_ddl_sharding_key,_ddl_sharding_func).
credentials:users:db_user:password: 'secret'privileges:- permissions: [read]spaces: [_bucket]- permissions: [read]spaces: [_ddl_sharding_key, _ddl_sharding_func]- permissions: [read, write]spaces: [bands]Если в кластере используется архивация данных через модуль
cooler, дополнительно требуются права на чтение системного спейса_cooler:box.schema.user.grant('db_user', 'read', 'space', '_cooler')
Инструкция по обновлению TDB до версий 3.1.x отличается от общей процедуры и требует выполнения дополнительных шагов. При обновлении до версий TDB 3.1.0 и 3.1.1:
-
Перед началом обновления создайте с помощью миграции на всех экземплярах хранилища спейс
_crud_settings_local, используя скрипт миграции ниже:local config = require('config')local fun = require('fun')local function is_storage()return fun.index('roles.crud-storage', config:get('roles')) ~= nilendlocal function apply()if is_storage() thenlocal settings_space = box.schema.space.create('_crud_settings_local', {engine = 'memtx',is_local = true,if_not_exists = true,format = {{ name = 'key', type = 'string' },{ name = 'value', type = 'any' },},})settings_space:create_index('primary', { parts = { 'key' }, if_not_exists = true })endreturn trueendreturn {apply = {scenario = apply,}} -
После завершения миграции выполните обновление версии Tarantool DB в обычном порядке через ATE. Для обновления используйте сценарий
continuous_update.ymlиз документации ATE: Tarantool 3.x: Обновление приложения без простоя. При работе этого сценария обновление схемы БД черезbox.schema.upgrade()выполняется автоматически. -
После завершения обновления задайте для пользователя, от имени которого выполняются CRUD-операции через роутер, права для выполнения CRUD-операций на чтение и запись данных. Минимальный набор прав включает доступ на чтение и запись в необходимые пользовательские спейсы, доступ на чтение системных спейсов
_bucket,_ddl_sharding_keyи_ddl_sharding_func, а также доступ на выполнение необходимых методовcrud.*. Минимальный набор необходимых разрешений приведен в разделе Модель безопасности Tarantool DB.На стороне роутера точечно выдайте права на выполнения (
execute) на методыcrud.*, которые вызываются черезlua_call:credentials:users:db_user:password: 'secret'privileges:- permissions: [execute]lua_call:- crud.select- crud.get- crud.insert- crud.replace- crud.update- crud.upsert- crud.deleteНа стороне хранилища выдайте:
- права на чтение и запись в пользовательские спейсы;
- доступ к системным спейсам для маршрутизации (
_bucket,_ddl_sharding_key,_ddl_sharding_func).
credentials:users:db_user:password: 'secret'privileges:- permissions: [read]spaces: [_bucket]- permissions: [read]spaces: [_ddl_sharding_key, _ddl_sharding_func]- permissions: [read, write]spaces: [bands]Если в кластере используется архивация данных через модуль
cooler, дополнительно требуются права на чтение системного спейса_cooler:box.schema.user.grant('db_user', 'read', 'space', '_cooler')
Для обновления Tarantool DB с простоем используется сценарий install_3_0.yml.
Описание сценария приведено в разделе Tarantool 3.x: Установка приложения документации по инсталлятору ATE.
При работе этого сценария метод box.schema.upgrade() не выполняется автоматически.
Метод нужно вызвать явно после выполнения сценария install_3_0.yml, используя команду tt replicaset upgrade.