Как добавить еще один осколок в производство для базы данных tarantool, без простоев? - PullRequest
1 голос
/ 07 июня 2019

Мы используем базу данных tarantool (sharded, используя vshard) в производстве.Мы начали прямо с 4 осколков.Теперь мы хотим увеличить его до 6 без простоя.Но после добавления еще двух осколков включается ребалансировщик, который не позволяет выполнять чтение / запись.Есть ли способ, что перебалансировка может произойти, поддерживая все виды операций?Мы можем позволить себе увеличить время работы.Но это должен быть успех.Как лучше всего добавлять осколок в tarantool с минимальными неудобствами, возникающими в передней части продукта?

В настоящее время единственное решение, которое мы можем придумать, - это перейти в режим обслуживания и восстановить балансировку за минимально возможное время !!!

1 Ответ

1 голос
/ 07 июня 2019

Вы не можете писать в корзину, которая передается прямо сейчас, но вы не можете писать в другие корзины (так что не похоже, что весь осколок заблокирован).

Кроме того, вы можете смягчить эффект путем - сделать ведра меньше (увеличить bucket_count) - сделать ребалансировку медленнее, чтобы одновременно передавалось меньше сегментов (конфигурация ребалансера).

Предположим, у вас есть 16384 сегмента, и ваш набор данных составляет 75 ГБ. Это означает, что средний размер корзины составляет около 5 Мб. Если вы уменьшите параметр rebalancer_max_receiving до 10, у вас будет одновременно передаваться только 10 сегментов (50 МБ) (что делает его заблокированным для записи).

Таким образом, восстановление баланса будет довольно медленным, НО, учитывая, что ваши клиенты могут выполнять повторные попытки и ваша сеть между шардами достаточно быстра, эффект 'блокировки записи' должен вообще остаться незамеченным.

...