API хранилища
Настройка базы данных и запуск шардирования для указанного экземпляра storage.
Параметры:
-
cfg— конфигурацияstorage -
instance_uuid— UUID экземпляра
Возвращает информацию об экземпляре хранилища. Начиная с vshard v.0.1.22, функция также принимает параметры, которые можно использовать для получения дополнительной информации.
options— nonewith_services— логическое значение. Если установлено значениеtrue, функция возвращает информацию о фоновых службах (таких как сборщик мусора, балансировщик, восстановление или аппликатор маршрутов), работающих на текущем экземпляре. Подробное описание см. в vshard.router.info.
Пример:
tarantool> vshard.storage.info()---- replicasets:c862545d-d966-45ff-93ad-763dce4a9723:uuid: c862545d-d966-45ff-93ad-763dce4a9723master:uri: admin@localhost:33021990be71-f06e-4d9a-bcf9-4514c4e0c889:uuid: 1990be71-f06e-4d9a-bcf9-4514c4e0c889master:uri: admin@localhost:3304bucket:receiving: 0active: 15000total: 15000garbage: 0pinned: 0sending: 0status: 0replication:status: masteralerts:...
Вызывает указанную функцию на текущем экземпляре storage.
bucket_id— идентификатор бакетаmode— тип функции:'read'или'write'function_name— функция для выполненияargument_list— массив аргументов функции
Возвращает
Исходное возвращаемое значение выполненной функции или nil и объект
ошибки.
Ожидает синхронизации набора данных на репликах.
timeout— время ожидания в секундах
Возвращает
true при успешной синхронизации набора данных; иначе nil и err
с описанием причины, по которой набор данных не удалось
синхронизировать.
Закрепляет бакет за набором реплик. Закрепленный бакет нельзя переместить, даже если это нарушит балансировку кластера.
bucket_id— идентификатор бакета
Возвращает
true при успешном закреплении бакета; иначе nil и err с описанием причины, по которой бакет не удалось закрепить
Возвращает закрепленный бакет в активное состояние.
bucket_id— идентификатор бакета
Возвращает
true при успешном откреплении бакета; иначе nil и err с описанием причины, по которой бакет не удалось открепить
Создает ссылку RO или RW.
-
bucket_id— идентификатор бакета -
mode— 'read' или 'write'
Возвращает
true при успешном создании ссылки на бакет; иначе nil и err с описанием причины, по которой не удалось создать ссылку
Псевдоним для vshard.storage.bucket_ref в режиме чтения.
bucket_id— идентификатор бакета
Возвращает
true при успешном создании ссылки на бакет; иначе nil и err с описанием причины, по которой не удалось создать ссылку
Псевдоним для vshard.storage.bucket_ref в режиме записи.
bucket_id— идентификатор бакета
Возвращает
true при успешном создании ссылки на бакет; иначе nil и err с описанием причины, по которой не удалось создать ссылку
Удаляет ссылку RO/RW.
bucket_id— идентификатор бакетаmode— 'read' или 'write'
Возвращает
true при успешном удалении ссылки на бакет; иначе nil и err с описанием причины, по которой не удалось удалить ссылку
Псевдоним для vshard.storage.bucket_unref в режиме чтения.
bucket_id— идентификатор бакета
Возвращает
true при успешном удалении ссылки на бакет; иначе nil и err с описанием причины, по которой не удалось удалить ссылку
Псевдоним для vshard.storage.bucket_unref в режиме записи.
bucket_id— идентификатор бакета
Возвращает
true при успешном удалении ссылки на бакет; иначе nil и err с описанием причины, по которой не удалось удалить ссылку
Находит бакет, у которого есть данные в спейсе, но он не хранится в
спейсе _bucket; либо находится в состоянии GARBAGE.
bucket_index— индекс спейса с частью идентификатора бакетаcontrol— контроллер сборщика мусора. Если поколение бакетов увеличилось, поиск следует прервать.
Возвращает
идентификатор бакета в состоянии GARBAGE, если найден; иначе nil
Возвращает информацию о каждом бакете, расположенном в хранилище.
Например:
tarantool> vshard.storage.buckets_info(1)---- 1:status: activeref_rw: 1ref_ro: 1ro_lock: truerw_lock: trueid: 1
Возвращает количество бакетов, расположенных в хранилище.
Немедленно будит файбер восстановления, если он существует.
Возвращает флаг, указывающий, выполняется ли ребалансировка. Результат равен true, если узел в данный момент применяет маршруты, полученные от узла-балансировщика, в специальном файбере.
Возвращает флаг, указывающий, скрыто ли хранилище от балансировщика.
Отключает ребалансировку. Отключенный балансировщик находится в спящем режиме, пока не будет снова включен с помощью vshard.storage.rebalancer_enable().
Включает ребалансировку.
Показывает спейсы, видимые для файберов балансировщика и сборщика мусора.
tarantool> vshard.storage.sharded_spaces()---- 513:engine: memtxbefore_replace: 'function: 0x010e50e738'field_count: 0id: 513on_replace: 'function: 0x010e50e700'temporary: falseindex:0: &0unique: trueparts:- type: numberfieldno: 1is_nullable: falseid: 0type: TREEname: primaryspace_id: 5131: &1unique: falseparts:- type: numberfieldno: 2is_nullable: falseid: 1type: TREEname: bucket_idspace_id: 513primary: *0bucket_id: *1is_local: falseenabled: truename: actorsck_constraint:...
Начиная с vshard v.0.1.22. Определяет триггер для выполнения при изменении (удалении или вставке) данных в пользовательских спейсах в процессе ребалансировки. Триггер вызывается при каждом изменении пакета данных.
trigger-function(function) — функция, которая станет функцией-триггером.old-trigger-function(function) — существующая функция-триггер, которая будет заменена наtrigger-function.
Возвращает
nil или указатель на функцию
Функция trigger-function может принимать до трех параметров:
event_type(string) – чтобы различать события, можно сравнить этот аргумент с поддерживаемыми типами событий:bucket_data_recv_txnиbucket_data_gc_txn.bucket_id(unsigned) – идентификатор бакета.data(table) – дополнительная информация о транзакции изменения данных. В настоящее время она включает только массив всех спейсов (data.spaces), затронутых транзакцией, в которой выполняется функция-триггер.
Пример:
vshard.storage.on_bucket_event(function(event, bucket_id, data)if event == 'bucket_data_recv_txn' then-- Handle it.for idx, space in ipairs(data.spaces) do...endelseif event == 'bucket_data_gc_txn' then-- Handle it....endend)
Принимает бакет, идентифицированный идентификатором бакета, от удаленного набора реплик.
bucket_id— идентификатор бакетаfrom— UUID исходного набора репликdata— данные, логически хранящиеся в бакете, идентифицированном bucket_id, в том же формате, что и возвращаемое значениеbucket_collect() <storage_api-bucket_collect>
Возвращает информацию об идентификаторе бакета:
tarantool> vshard.storage.bucket_stat(1)---- 0- status: activeid: 1...
bucket_id— идентификатор бакета
Принудительно запускает сборку мусора для бакета, идентифицированного
bucket_id, в случае, если бакет был перенесен в другой набор реплик.
bucket_id— идентификатор бакета
Собирает все данные, логически хранящиеся в бакете, идентифицированном bucket_id:
tarantool> vshard.storage.bucket_collect(1)---- 0- - - 514- - [10, 1, 1, 100, 'Account 10']- [11, 1, 1, 100, 'Account 11']- [12, 1, 1, 100, 'Account 12']- [50, 5, 1, 100, 'Account 50']- [51, 5, 1, 100, 'Account 51']- [52, 5, 1, 100, 'Account 52']- - 513- - [1, 1, 'Customer 1']- [5, 1, 'Customer 5']...
bucket_id— идентификатор бакета
Принудительно создает бакеты (один или несколько) в текущем наборе реплик. Используйте только для ручного аварийного восстановления или для начальной загрузки.
first_bucket_id— идентификатор первого бакета в диапазонеcount— количество бакетов для вставки (по умолчанию = 1)
Удаляет бакет вручную для тестов или в экстренных случаях.
bucket_id— идентификатор бакета
Отправляет указанный бакет из текущего набора реплик в удаленный набор реплик.
bucket_id— идентификатор бакетаto— UUID удаленного набора реплик
Проверяет все бакеты хранилища-источника, находящиеся в состоянии SENT или ACTIVE, и возвращает количество активных бакетов.
Возвращает
количество бакетов в активном состоянии, если они найдены; иначе nil
Собирает массив идентификаторов активных бакетов для обнаружения.