Справочник по API
В этом разделе представлен общедоступный и внутренний API для роутера и для хранилища.
-
vshard.router.
bootstrap
() Инициализация кластера и распределение всех сегментов по наборам реплик.
Параметры: - timeout – количество секунд ожидания до признания попытки инициализации неуспешной. Пересоздайте кластер в случае блокировки инициализации по истечении времени ожидания.
- if_not_bootstrapped – По умолчанию
false
, то есть «вызвать ошибку, если кластер уже был инициализирован».True
значит «если кластер уже был инициализирован, то ничего не делать.»
Пример:
vshard.router.bootstrap({timeout = 4, if_not_bootstrapped = true})
Примечание
Чтобы определить, инициализирован ли кластер , vshard ищет по крайней мере один сегмент во всем кластере. Если кластер был инициализирован частично (например, из-за ошибки при первой инициализации),то он все равно будет считаться инициализированным при следующей попытке инициализации с флагом
if_not_bootstrapped
. Поэтому лучше избегать вызоваbootstrap()
несколько раз.
-
vshard.router.
cfg
(cfg) Настройка базы данных и начало шардинга указанного
роутера
. См. образец конфигурации.Параметры: - cfg – конфигурационная таблица
-
vshard.router.
new
(name, cfg) Создание нового экземпляра роутера.
vshard
поддерживает работу нескольких роутеров в отдельном экземпляре Tarantool’а. Каждый роутер может подключаться к любом кластеруvshard
, несколько роутеров могут подключаться к одному кластеру.Роутер, созданный с помощью
vshard.router.new()
, работает так же, как и статичный роутер, но перед его методами указывается двоеточие (vshard.router:имя_метода(...)
), а перед методами статичного роутера – точка (vshard.router.имя_метода(...)
).Статичный роутер можно получить при помощи метода
vshard.router.static()
, а затем использовать его как роутер, созданный с помощью методаvshard.router.new()
.Примечание
box.cfg
используется всеми роутерами одного экземпляра.Параметры: - name – имя экземпляра роутера, которое используется в качестве префикса в журналах роутера и должно быть уникальным в пределах экземпляра
- cfg – конфигурационная таблица. См. образец конфигурации.
Возвращается: экземпляр роутера, если он создан; в противном случае, nil и ошибка
-
vshard.router.
call
(bucket_id, mode, function_name, {argument_list}, {options}) Вызов функции по имени функции (function-name) на шарде, где хранится сегмент с указанным идентификатором (bucket_id). Для получения подробной информации о работе функции см. раздел Обработка запросов.
Параметры: - bucket_id – идентификатор сегмента
- mode – либо строка = „read“|“write“ (чтение|запись), либо ассоциативный массив с параметром mode =“read“|“write“ (чтение|запись) и/или prefer_replica=true|false (правда|ложь), и/или balance=true|false (правда|ложь).
- function_name – выполняемая функция
- argument_list – массив аргументов функции
- options –
timeout
– время ожидания запроса в секундах. Еслироутер
не может определить шард с указанным идентификатором сегментаbucket_id
, операция повторяется до истечения времени ожидания.- другие net.box опции, такие как
is_async
,buffer
,on_push
также поддерживаются.
У параметра режима mode есть две доступные формы: строка или ассоциативный массив. Примеры строки:
'read'
(чтение),'write'
(запись). Примеры ассоциативного массива:{mode='read'}
,{mode='write'}
,{mode='read', prefer_replica=true}
,{mode='read', balance=true}
,{mode='read', prefer_replica=true, balance=true}
.Если указать значение
'write'
(запись), то целью будет мастер.Если указать
prefer_replica=true
, то предпочитаемая цель – одна из реплик; если же доступной реплики нет, то целью будет мастер.Удобно указать
prefer_replica=true
для ресурсозатратных функций во избежание замедления работы мастера.Если задать
balance=true
, добавится балансировка нагрузки – запросы на чтение распределяются по всем узлам набора реплик по кругу, предпочтение отдается репликам, если также заданоprefer_replica=true
.Возвращается: Исходное возвращаемое значение выполняемой функции или
nil
и ошибка. Объект ошибки содержит атрибут типа, который равенShardingError
или одной из стандартных ошибок Tarantool’а(ClientError
,OutOfMemory
,SocketError
и т.д.).ShardingError
возвращается в случае ошибок шардинга: отсутствует мастер, неверный идентификатор сегмента и т.д. Такая ошибка содержит код с одним из значений из Lua-таблицыvshard.error.code.*
, необязательный атрибут сообщения с удобным для восприятия описанием ошибки и другие атрибуты, специфичные для данного кода ошибки.Примеры:
Для вызова функции
customer_add
изvshard/example
выполните команду:vshard.router.call(100, 'write', 'customer_add', {{customer_id = 2, bucket_id = 100, name = 'name2', accounts = {}}}, {timeout = 5}) -- or, the same thing but with a map for the second argument vshard.router.call(100, {mode='write'}, 'customer_add', {{customer_id = 2, bucket_id = 100, name = 'name2', accounts = {}}}, {timeout = 5})
-
vshard.router.
callro
(bucket_id, function_name, {argument_list}, {options}) Вызов функции по имени функции (function-name) на шарде, где хранится сегмент с указанным идентификатором (bucket_id) в режиме только для чтения (аналогично вызову vshard.router.call в режиме mode=“read“). Для получения подробной информации о работе функции см. раздел Обработка запросов.
Параметры: - bucket_id – идентификатор сегмента
- function_name – выполняемая функция
- argument_list – массив аргументов функции
- options –
timeout
– время ожидания запроса в секундах. Еслироутер
не может определить шард с идентификатором сегмента, операция повторяется до истечения времени ожидания.- другие net.box опции, такие как
is_async
,buffer
,on_push
также поддерживаются.
Возвращается: Исходное возвращаемое значение выполняемой функции или
nil
и ошибка. Объект ошибки содержит атрибут типа, который равенShardingError
или одной из стандартных ошибок Tarantool’а(ClientError
,OutOfMemory
,SocketError
и т.д.).ShardingError
возвращается в случае ошибок шардинга: набор реплик недоступен, отсутствует мастер, неверный идентификатор сегмента и т.д. Такая ошибка сб.одержит код с одним из значений из Lua-таблицыvshard.error.code.*
, необязательный атрибут сообщения с удобным для восприятия описанием ошибки и другие атрибуты, специфичные для данного кода ошибки.
-
vshard.router.
callrw
(bucket_id, function_name, {argument_list}, {options}) Вызов функции по имени функции (function-name) на шарде, где хранится сегмент с указанным идентификатором (bucket_id) в режиме чтения и записи (аналогично вызову vshard.router.call в режиме mode=“write“). Для получения подробной информации о работе функции см. раздел Обработка запросов.
Параметры: - bucket_id – идентификатор сегмента
- function_name – выполняемая функция
- argument_list – массив аргументов функции
- options –
timeout
– время ожидания запроса в секундах. Еслироутер
не может определить шард с идентификатором сегмента, операция повторяется до истечения времени ожидания.- другие net.box опции, такие как
is_async
,buffer
,on_push
также поддерживаются.
Возвращается: Исходное возвращаемое значение выполняемой функции или
nil
и ошибка. Объект ошибки содержит атрибут типа, который равенShardingError
или одной из стандартных ошибок Tarantool’а(ClientError
,OutOfMemory
,SocketError
и т.д.).ShardingError
возвращается в случае ошибок шардинга: набор реплик недоступен, отсутствует мастер, неверный идентификатор сегмента и т.д. Такая ошибка сб.одержит код с одним из значений из Lua-таблицыvshard.error.code.*
, необязательный атрибут сообщения с удобным для восприятия описанием ошибки и другие атрибуты, специфичные для данного кода ошибки.
-
vshard.router.
callre
(bucket_id, function_name, {argument_list}, {options}) Вызов функции по имени функции (function-name) на шарде, где хранится сегмент с указанным идентификатором (bucket_id) в режиме только для чтения (аналогично вызову
vshard.router.call
в режиме чтенияmode='read'
), когда предпочтение отдается реплике, а не мастеру (аналогично вызовуvshard.router.call
с параметромprefer_replica = true
). Для получения подробной информации о работе функции см. раздел Обработка запросов.Параметры: - bucket_id – идентификатор сегмента
- function_name – выполняемая функция
- argument_list – массив аргументов функции
- options –
timeout
– время ожидания запроса в секундах. Еслироутер
не может определить шард с идентификатором сегмента, операция повторяется до истечения времени ожидания.- другие net.box опции, такие как
is_async
,buffer
,on_push
также поддерживаются.
Возвращается: Исходное возвращаемое значение выполняемой функции или
nil
и ошибка. Объект ошибки содержит атрибут типа, который равенShardingError
или одной из стандартных ошибок Tarantool’а(ClientError
,OutOfMemory
,SocketError
и т.д.).ShardingError
возвращается в случае ошибок шардинга: набор реплик недоступен, отсутствует мастер, неверный идентификатор сегмента и т.д. Такая ошибка сб.одержит код с одним из значений из Lua-таблицыvshard.error.code.*
, необязательный атрибут сообщения с удобным для восприятия описанием ошибки и другие атрибуты, специфичные для данного кода ошибки.
-
vshard.router.
callbro
(bucket_id, function_name, {argument_list}, {options}) Эквивалент vshard.router.call() с параметром mode =
{mode='read', balance=true}
.
-
vshard.router.
callbre
(bucket_id, function_name, {argument_list}, {options}) Эквивалент vshard.router.call() с параметром режима mode =
{mode='read', balance=true, prefer_replica=true}
.
-
vshard.router.
route
(bucket_id) Возврат объекта набора реплик для сегмента с указанным значением идентификатора сегмента (bucket id).
Параметры: - bucket_id – идентификатор сегмента
Возвращается: объект набора реплик
Пример:
replicaset = vshard.router.route(123)
-
vshard.router.
routeall
() Возврат всех доступных объектов наборов реплик.
Возвращается: ассоциативный массив следующего вида: {UUID = replicaset}
Тип возвращаемого значения: ассоциативный массив объектов набора реплик Пример:
function selectall() local resultset = {} shards, err = vshard.router.routeall() if err ~= nil then error(err) end for uid, replica in pairs(shards) do local set = replica:callro('box.space.*space-name*:select', {{}, {limit=10}}, {timeout=5}) for _, item in ipairs(set) do table.insert(resultset, item) end end table.sort(resultset, function(a, b) return a[1] < b[1] end) return resultset end
-
vshard.router.
bucket_id
(key) Объявлено устаревшим. Записывает в журнал предупреждение при использовании, так как не согласуется с числами cdata.
В частности, возвращает 3 различных значения для обычных чисел Lua, таких как 123, для unsigned long long cdata (например
123ULL
, илиffi.cast('unsigned long long',123))
, и для signed long long cdata (например123LL
, илиffi.cast('long long', 123)
). И это важно.vshard.router.bucket_id(123) vshard.router.bucket_id(123LL) vshard.router.bucket_id(123ULL)
Для float и double cdata (
ffi.cast('float', number)
,ffi.cast('double', number)
) эти функции возвращают разные значения даже для тех же чисел того же типа с плавающей точкой. Это связано с тем, что функцияtostring()
для числа cdata с плавающей точкой возвращает не число, а указатель на него. Разное при каждом вызове.vshard.router.bucket_id_strcrc32()
имеет такое же поведение, но не записывает предупреждение. Для случаев, когда такое поведение действитльно необходимо.
-
vshard.router.
bucket_id_strcrc32
(key) Вычисление идентификатора сегмента с помощью простой встроенной хеш-функции.
Параметры: - key – хеш-ключ. Это может быть любой Lua-объект (число, таблица, строка).
Возвращается: идентификатор сегмента
Тип возвращаемого значения: число
Пример:
tarantool> vshard.router.bucket_count() --- - 3000 ... tarantool> vshard.router.bucket_id_strcrc32("18374927634039") --- - 2032 ... tarantool> vshard.router.bucket_id_strcrc32(18374927634039) --- - 2032 ... tarantool> vshard.router.bucket_id_strcrc32("test") --- - 1216 ... tarantool> vshard.router.bucket_id_strcrc32("other") --- - 2284 ...
Примечание
Помните, что это небезопасно. См. bucket_id()
-
vshard.router.
bucket_id_mpcrc32
(key) Эта функция безопаснее, чем bucket_id_strc32. Она берет CRC32 из кодированного значения MessagePack. То есть bucket id целых чисел не зависит от их типа Lua. В случае строкового ключа, он не кодирует его в MessagePack, а берет хэш прямо из строки.
Параметры: - key – хеш-ключ. Это может быть любой Lua-объект (число, таблица, строка).
Возвращается: идентификатор сегмента
Тип возвращаемого значения: число
Однако он все равно может возвращать разные значения для не одинакового типа с плавающей точкой. То есть,
ffi.cast('float', number)
может быть отражено в bucket id, не равномffi.cast('double', number)
. Это не может быть исправлено, так как значение с плавающей точкой, даже будучи приведенным к double, может иметь мусор в своей дробной части.Ключи с плавающей точкой обычно не должны использоваться для вычисления идентификатора сегмента.
Будьте очень осторожны, если вы храните типы с плавающей точкой в спейсе. Когда данные возвращаются из спейса, они приводятся к Lua числам. А если это значение имело пустую дробную часть, то оно будет обработано как целое число функцией
bucket_id_mpcrc32()
. Поэтому в таких случаях необходимо выполнять явное приведение. Приведем пример проблемы:tarantool> s = box.schema.create_space('test', {format = {{'id', 'double'}}}); _ = s:create_index('pk') --- ... tarantool> inserted = ffi.cast('double', 1) --- ... -- Value is stored as double tarantool> s:replace({inserted}) --- - [1] ... -- But when returned to Lua, stored as Lua number, not cdata. tarantool> returned = s:get({inserted}).id --- ... tarantool> type(returned), returned --- - number - 1 ... tarantool> vshard.router.bucket_id_mpcrc32(inserted) --- - 1411 ... tarantool> vshard.router.bucket_id_mpcrc32(returned) --- - 1614 ...
-
vshard.router.
bucket_count
() Возврат общего количества сегментов, указанных в
vshard.router.cfg()`
.Возвращается: общее количество сегментов Тип возвращаемого значения: число tarantool> vshard.router.bucket_count() --- - 10000 ...
-
vshard.router.
sync
(timeout) Ожидание синхронизации набора данных на репликах.
Параметры: - timeout – время ожидания в секундах
возвращает: true
(правда), если выполнена синхронизация набора данных; или жеnil
и ошибкаerr
с объяснением причины невозможности синхронизации набора данных.
-
vshard.router.
discovery_set
(mode) Запуск/выключение фонового файбера, используемого роутером для обнаружения сегментов.
Параметры: - mode – режим работы файбера обнаружения. Существует три режима:
on
,off
иonce
В режиме
on
(по умолчанию) файбер обнаружения работает в течение всего жизненного цикла роутера. Даже после того, как все сегменты были найдены, он продолжает проверять хранилища и загружать сегменты с некоторой большой периодичностью (DISCOVERY_IDLE_INTERVAL). Это полезно, если топология сегментов часто меняется, а их число небольшое. Роутер будет поддерживать свою таблицу маршрутов в актуальном состоянии даже тогда, когда никакие запросы не обрабатываются.В режиме
off
обнаружение сегментов не производится.В режиме
once
файбер обнаружения найдет локации всех сегментов, а затем ликвидируется. Это полезно для большого числа сегментов и для кластеров, в которых редко происходит балансировка.Этот метод подойдет для включения/выключения обнаружения после того, как роутер уже запущен, но по умолчанию обнаружение включено. Возможно, вы захотите никогда не включать его даже на короткое время – тогда задайте значение опции
discovery_mode
при конфигурации. Она принимает те же значения, что иvshard.router.discovery_set(mode)
.Вы можете решить, что лучше отключить обнаружение или осуществить его в режиме
once
, если у вас много роутеров или очень много сегментов (сотни тысяч и более), и вы видите, что процесс обнаружения потребляет заметное количество ресурса CPU на роутерах и хранилищах. В этом случае, возможно, было бы разумно отключить обнаружение, когда в кластере нет балансировки. И включать его для новых роутеров, а также для всех роутеров, когда начинается балансировка.- mode – режим работы файбера обнаружения. Существует три режима:
-
vshard.router.
info
() Возврат информации по каждому экземпляру.
Возвращается: Параметры набора реплик:
- UUID набора реплик
- параметры мастер-экземпляра
- параметры реплики
Параметры экземпляра:
uri
– URI экземпляраuuid
– UUID экземпляраstatus
– статус экземпляра:available
(доступный),unreachable
(недоступный),missing
(отсутствующий)network_timeout
– время ожидания запроса. Данное значение обновляется автоматически на каждом 10 выполненном запросе и на каждом 2 невыполненном запросе.
Параметры сегмента:
available_ro
– количество сегментов, известных роутеру и доступных для запросов чтенияavailable_rw
– количество сегментов, известных роутеру и доступных для запросов чтения и записиunavailable
– количество сегментов, известных роутеру, но недоступных для любых запросовunreachable
– количество сегментов, для которых роутер не знает соответствующие наборы реплик
Пример:
tarantool> vshard.router.info() --- - replicasets: ac522f65-aa94-4134-9f64-51ee384f1a54: replica: &0 network_timeout: 0.5 status: available uri: storage@127.0.0.1:3303 uuid: 1e02ae8a-afc0-4e91-ba34-843a356b8ed7 uuid: ac522f65-aa94-4134-9f64-51ee384f1a54 master: *0 cbf06940-0790-498b-948d-042b62cf3d29: replica: &1 network_timeout: 0.5 status: available uri: storage@127.0.0.1:3301 uuid: 8a274925-a26d-47fc-9e1b-af88ce939412 uuid: cbf06940-0790-498b-948d-042b62cf3d29 master: *1 bucket: unreachable: 0 available_ro: 0 unknown: 0 available_rw: 3000 status: 0 alerts: [] ...
-
vshard.router.
buckets_info
() Возврат информации по каждому сегменту. Поскольку массив сегментов может быть огромен, можно указать только необходимый ряд сегментов.
Параметры: - offset – начальное значение выборки сегментов
- limit – максимальное количество показываемых сегментов
Возвращается: ассоциативный массив следующего вида:
{bucket_id = 'unknown'/replicaset_uuid}
tarantool> vshard.router.buckets_info() --- - - uuid: aaaaaaaa-0000-4000-a000-000000000000 status: available_rw - uuid: aaaaaaaa-0000-4000-a000-000000000000 status: available_rw - uuid: aaaaaaaa-0000-4000-a000-000000000000 status: available_rw - uuid: bbbbbbbb-0000-4000-a000-000000000000 status: available_rw - uuid: bbbbbbbb-0000-4000-a000-000000000000 status: available_rw - uuid: bbbbbbbb-0000-4000-a000-000000000000 status: available_rw - uuid: bbbbbbbb-0000-4000-a000-000000000000 status: available_rw ...
-
object
replicaset_object
-
replicaset_object:
call
(function_name, {argument_list}, {options}) Вызов функции с указанными аргументами на ближайшем доступном мастере (расстояние определяется с помощью матрицы
replica.zone
иcfg.weights
).Примечание
Метод
replicaset_object:call
аналогиченreplicaset_object:callrw
.Параметры: - function_name – выполняемая функция
- argument_list – массив аргументов функции
- options –
timeout
– время ожидания запроса в секундах. Еслироутер
не может определить шард с идентификатором сегмента, операция повторяется до истечения времени ожидания.- другие net.box опции, такие как
is_async
,buffer
,on_push
также поддерживаются.
возвращает: - результат вызываемой функции при успехе
- nil, err иначе
-
replicaset_object:
callrw
(function_name, {argument_list}, {options}) Вызов функции с указанными аргументами на ближайшем доступном мастере (расстояние определяется с помощью матрицы
replica.zone
иcfg.weights
).Примечание
Метод
replicaset_object:callrw
аналогиченreplicaset_object:call
.Параметры: - function_name – выполняемая функция
- argument_list – массив аргументов функции
- options –
timeout
– время ожидания запроса в секундах. Еслироутер
не может определить шард с идентификатором сегмента, операция повторяется до истечения времени ожидания.- другие net.box опции, такие как
is_async
,buffer
,on_push
также поддерживаются.
возвращает: - результат вызываемой функции при успехе
- nil, err иначе
tarantool> local bucket = 1; return vshard.router.callrw( > bucket, > 'box.space.actors:insert', > {{ > 1, bucket, 'Renata Litvinova', > {theatre="Moscow Art Theatre"} > }}, > {timeout=5} > )
-
replicaset_object:
callro
(function_name, {argument_list}, {options}) Вызов функции с указанными аргументами на ближайшей доступной реплике (расстояние определяется с помощью матрицы
replica.zone
иcfg.weights
). С помощьюreplicaset_object:callro()
рекомендуется вызывать исключительно функции, доступные только для чтения. поскольку такие функции можно выполнять не только на мастере, но и на репликах.Параметры: - function_name – выполняемая функция
- argument_list – массив аргументов функции
- options –
timeout
– время ожидания запроса в секундах. Еслироутер
не может определить шард с идентификатором сегмента, операция повторяется до истечения времени ожидания.- другие net.box опции, такие как
is_async
,buffer
,on_push
также поддерживаются.
возвращает: - результат вызываемой функции при успехе
- nil, err иначе
-
replicaset:
callre
(function_name, {argument_list}, {options}) Вызов функции с указанными аргументами на ближайшей доступной реплике (расстояние определяется с помощью матрицы
replica.zone
иcfg.weights
), предпочтение отдается реплике, а не мастеру (аналогично вызову vshard.router.call с параметром prefer_replica = true). С помощьюreplicaset_object:callre()
рекомендуется вызывать исключительно функции, доступные только для чтения, поскольку такие функции можно выполнять не только на мастере, но и на репликах.Параметры: - function_name – выполняемая функция
- argument_list – массив аргументов функции
- options –
timeout
– время ожидания запроса в секундах. Еслироутер
не может определить шард с идентификатором сегмента, операция повторяется до истечения времени ожидания.- другие net.box опции, такие как
is_async
,buffer
,on_push
также поддерживаются.
возвращает: - результат вызываемой функции при успехе
- nil, err иначе
-
-
vshard.router.
bucket_discovery
(bucket_id) Поиск сегмента по всему кластеру. Если сегмент не обнаружен, скорее всего, он не существует. Также сегмент также может быть перемещен во время балансировки и в данный момент находится в статусе получения RECEIVING.
Параметры: - bucket_id – идентификатор сегмента
-
vshard.storage.
cfg
(cfg, name) Конфигурация базы данных и начало шардинга на указанном экземпляре хранилища.
Параметры: - cfg – конфигурация хранилища
- instance_uuid – UUID экземпляра
-
vshard.storage.
info
() Возврат информации по экземпляру хранилища в следующем формате:
tarantool> vshard.storage.info() --- - buckets: 2995: status: active id: 2995 2997: status: active id: 2997 2999: status: active id: 2999 replicasets: 2dd0a343-624e-4d3a-861d-f45efc571cd3: uuid: 2dd0a343-624e-4d3a-861d-f45efc571cd3 master: state: active uri: storage:storage@127.0.0.1:3301 uuid: 2ec29309-17b6-43df-ab07-b528e1243a79 c7ad642f-2cd8-4a8c-bb4e-4999ac70bba1: uuid: c7ad642f-2cd8-4a8c-bb4e-4999ac70bba1 master: state: active uri: storage:storage@127.0.0.1:3303 uuid: 810d85ef-4ce4-4066-9896-3c352fec9e64 ...
-
vshard.storage.
call
(bucket_id, mode, function_name, {argument_list}) Вызов указанной функции на текущем экземпляре хранилища.
Параметры: - bucket_id – идентификатор сегмента
- mode – тип функции: „read“ или „write“ (чтение или запись)
- function_name – выполняемая функция
- argument_list – массив аргументов функции
Возвращается: Исходное возвращаемое значение выполняемой функции или
nil
и ошибка.
-
vshard.storage.
sync
(timeout) Ожидание синхронизации набора данных на репликах.
Параметры: - timeout – время ожидания в секундах
возвращает: true
(правда), если выполнена синхронизация набора данных; или жеnil
и ошибкаerr
с объяснением причины невозможности синхронизации набора данных.
-
vshard.storage.
bucket_pin
(bucket_id) Закрепление сегмента в наборе реплик. Закрепленный сегмент нельзя перемещать, даже если это нарушает баланс в кластере.
Параметры: - bucket_id – идентификатор сегмента
возвращает: true
(правда), если выполнено закрепление сегмента; или жеnil
и ошибкаerr
с объяснением причины невозможности закрепления сегмента
-
vshard.storage.
bucket_unpin
(bucket_id) Возврат закрепленного сегмента в активное состояние.
Параметры: - bucket_id – идентификатор сегмента
возвращает: true
(правда), если выполнено открепление сегмента; или жеnil
и ошибкаerr
с объяснением причины невозможности открепления сегмента
-
vshard.storage.
bucket_ref
(bucket_id, mode) Создание ссылки типа RO или RW.
Параметры: - bucket_id – идентификатор сегмента
- mode – „read“ или „write“ (чтение или запись)
возвращает: true
(правда), если выполнено создание ссылки; или жеnil
и ошибкаerr
с объяснением причины невозможности создания ссылки
-
vshard.storage.
bucket_refro
() Псевдоним для vshard.storage.bucket_ref в режиме только чтения.
-
vshard.storage.
bucket_refrw
() Псевдоним для vshard.storage.bucket_ref в режиме чтения и записи.
-
vshard.storage.
bucket_unref
(bucket_id, mode) Удаление ссылки RO/RW.
Параметры: - bucket_id – идентификатор сегмента
- mode – „read“ или „write“ (чтение или запись)
возвращает: true
(правда), если выполнено удаление ссылки; или жеnil
и ошибкаerr
с объяснением причины невозможности удаления ссылки
-
vshard.storage.
bucket_unrefro
() Псевдоним для vshard.storage.bucket_unref в режиме только чтения.
-
vshard.storage.
bucket_unrefrw
() Псевдоним для vshard.storage.bucket_unref в режиме чтения и записи.
-
vshard.storage.
find_garbage_bucket
(bucket_index, control) Поиск сегмента, который хранит данные в спейсе, но не указан в спейсе
_bucket
, или находится в статусе мусора (GARBAGE).Параметры: - bucket_index – индекс спейса с частью идентификатора спейса
- control – контроллер сборщика мусора. Если увеличивается масштаб создания сегментов, поиск следует прервать.
возвращает: идентификатор сегмента в статусе мусора, если таковой обнаружен; в противном случае, nil
-
vshard.storage.
buckets_info
() Возврат информации по каждому сегменту, расположенному в хранилище. Например:
tarantool> vshard.storage.buckets_info(1) --- - 1: status: active ref_rw: 1 ref_ro: 1 ro_lock: true rw_lock: true id: 1
-
vshard.storage.
rebalancing_is_in_progress
() Возврат флага, указывающего на ход процесса балансировки. Результатом будет true (правда), если в данный момент узел применяет маршруты, полученные от узла балансировки в специальном файбере.
-
vshard.storage.
is_locked
() Возврат флага, указывающего на недоступность хранилища для балансировщика.
-
vshard.storage.
rebalancer_disable
() Отключение балансировки. Отключенный балансировщик находится в режиме ожидания до повторного запуска с помощью vshard.storage.rebalancer_enable().
-
vshard.storage.
sharded_spaces
() Отображение спейсов, которые доступны балансировщику и файберам сборщика мусора.
tarantool> vshard.storage.sharded_spaces() --- - 513: engine: memtx before_replace: 'function: 0x010e50e738' field_count: 0 id: 513 on_replace: 'function: 0x010e50e700' temporary: false index: 0: &0 unique: true parts: - type: number fieldno: 1 is_nullable: false id: 0 type: TREE name: primary space_id: 513 1: &1 unique: false parts: - type: number fieldno: 2 is_nullable: false id: 1 type: TREE name: bucket_id space_id: 513 primary: *0 bucket_id: *1 is_local: false enabled: true name: actors ck_constraint: [] ...
-
vshard.storage.
bucket_recv
(bucket_id, from, data) Получение сегмента по идентификатору сегмента (bucket id) из удаленного набора реплик.
Параметры: - bucket_id – идентификатор сегмента
- from – UUID исходного набора реплик
- data – данные, которые хранятся логически в сегменте, определенном по идентификатору сегмента (bucket_id), в том же формате, что и возвращаемое значение метода
bucket_collect() <storage_api-bucket_collect>
-
vshard.storage.
bucket_stat
(bucket_id) Возврат информации об идентификаторе сегмента (bucket id):
tarantool> vshard.storage.bucket_stat(1) --- - 0 - status: active id: 1 ...
Параметры: - bucket_id – идентификатор сегмента
-
vshard.storage.
bucket_delete_garbage
(bucket_id) Принудительная сборка мусора для сегмента, найденного по идентификатору (bucket_id), если сегмент был перемещен в другой набор реплик.
Параметры: - bucket_id – идентификатор сегмента
-
vshard.storage.
bucket_collect
(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 – идентификатор сегмента
-
vshard.storage.
bucket_force_create
(first_bucket_id, count) Принудительное создание сегментов (одного или нескольких) в текущем наборе реплик. Используется только для ручного аварийного восстановления или для начальной настройки.
Параметры: - first_bucket_id – идентификатор первого сегмента в диапазоне
- count – количество вставляемых сегментов (по умолчанию, 1)
-
vshard.storage.
bucket_force_drop
(bucket_id) Удаление сегмента вручную для тестирования или в аварийной ситуации.
Параметры: - bucket_id – идентификатор сегмента
-
vshard.storage.
bucket_send
(bucket_id, to) Отправка указанного сегмента из текущего набора реплик в удаленный набор реплик.
Параметры: - bucket_id – идентификатор сегмента
- to – UUID удаленного набора реплик