Ошибка YugaByte CREATE DATABASE

Я попытался запустить демонстрацию быстрого запуска yugabyte 2.0.8.0 по этой инструкции:

https://docs.yugabyte.com/latest/quick-start/install/< /а>

https://docs.yugabyte.com/latest/quick-start/create-local-cluster/

с 3 локальными узлами

./bin/yb-ctl --rf 3 create

А затем изучите ysql:

https://docs.yugabyte.com/latest/quick-start/explore-ysql/

но создание БД не удается:

yugabyte=# CREATE DATABASE yb_demo;
CREATE DATABASE yb_demo;
ERROR:  Timed out: Write(tablet: 00000000000000000000000000000000, num_ops: 1, num_attempts: 9, txn: 00000000-0000-0000-0000-000000000000) passed its deadline 3393.992s (passed: 65.317s): Remote error (yb/rpc/outbound_call.cc:440): Service unavailable (yb/tserver/tablet_service.cc:291): Soft memory limit exceeded (at 93.81% of capacity), score: 0.00

yugabyte=# CREATE DATABASE yb_demo;
CREATE DATABASE yb_demo;
ERROR:  Already present: Keyspace 'yb_demo' already exists

yugabyte=# DROP DATABASE yb_demo;
DROP DATABASE yb_demo;
ERROR:  database "yb_demo" does not exist

yugabyte=# \c yb_demo;
FATAL:  database "yb_demo" does not exist
Previous connection kept

Таким образом, создание БД не удалось. Я не могу воссоздать его, но кажется, что я также не могу ни удалить его, ни подключиться к нему. Сообщение об ошибке намекает, что не хватило памяти.

бесплатный вывод:

              total        used        free      shared  buff/cache   available
Mem:        4045992     1400276     1419504       64104     1226212     2319448
Swap:       4194300           0     4194300

Вопросы:

Сколько памяти требуется для запуска YugaByte? В этом случае среда выполнения представляет собой виртуальную машину Ubuntu 16.4 VirtualBox объемом 4 ГБ с рабочим столом. В ваших требованиях к оборудованию указано минимум 2 ГБ https://docs.yugabyte.com/latest/deploy/checklist /.

Как я могу восстановить эту ошибку? Либо удалить неудавшуюся базу данных, либо завершить создание базы данных?

Спасибо за Вашу поддержку.


person user4955663    schedule 30.12.2019    source источник
comment
Когда я создал только 1 узел, команда CREATE DATABASE завершилась успешно. Так что, возможно, 3 узла в одной виртуальной машине объемом 4 ГБ — это слишком много. Но как я могу исправить ошибку?   -  person user4955663    schedule 30.12.2019
comment
Да, как вы правильно указали, требуется 2 ГБ на узел (или экземпляр процесса). Кстати, эти рекомендации предназначены для многоузловых кластеров, которые вы собираетесь использовать в течение длительного времени. * Если вам не нужны данные, просто выполните yb-ctl destroy и создайте заново. * Если вы хотите спасти его, не могли бы вы открыть проблему на github? Было бы хорошо, если бы мы поработали там.   -  person Karthik Ranganathan    schedule 31.12.2019
comment
Вы также можете получить дополнительную помощь в режиме реального времени на нашем форуме. Тем не менее, я также попрошу более знающих людей присоединиться сюда, чтобы помочь.   -  person Karthik Ranganathan    schedule 31.12.2019
comment
Это всего лишь демонстрация, поэтому в этом случае я уничтожу данные, но в целом должен быть способ восстановления без потери данных.   -  person user4955663    schedule 31.12.2019
comment
Да согласен. Над этим определенно работают, мы можем попробовать добавить эти типы тестов в наш набор регрессионных анализов.   -  person Karthik Ranganathan    schedule 03.01.2020


Ответы (1)


Сколько памяти требуется для запуска YugaByte? В этом случае среда выполнения представляет собой виртуальную машину Ubuntu 16.4 VirtualBox объемом 4 ГБ с рабочим столом. В ваших требованиях к оборудованию указано минимум 2 ГБ https://docs.yugabyte.com/latest/deploy/checklist /.

Действительно, минимум 2GB предназначен для каждого узла. Поскольку вы запускаете кластер из 3 узлов на одном компьютере, это должно помочь увеличить его до 6GB или более.

В качестве альтернативы, если увеличение памяти невозможно, вы можете настроить ограничения памяти для процессов. По умолчанию Yugabyte выделяет 10% общей памяти процессу yb-master (сервер метаданных) и 85% процессу yb-tserver (планшет-сервер).

В вашем случае проблема с памятью, скорее всего, связана с процессом yb-master (команда CREATE DATABASE инициализирует метаданные для новой базы данных). Вы можете проверить текущие настройки и использование памяти, используя веб-интерфейс для подтверждения.

  • yb-master: <node-ip>/7000/mem-trackers
  • yb-tserver: <node-ip>:9000/memz

Примечание. Для кластера из 3 узлов yb-ctl IP-адреса узлов обычно равны 127.0.0.1, 127.0.0.2 и 127.0.0.3.

Чтобы обновить лимит памяти yb-master, вы можете использовать флаг memory_limit_hard_bytes (тот же флаг можно использовать для yb-tserver). Например, чтобы увеличить его до 600MB:

./bin/yb-ctl stop && ./bin/yb-ctl start --master_flags="memory_limit_hard_bytes=629145600"

Примечание. Вы также можете использовать те же параметры непосредственно при создании кластера:

./bin/yb-ctl destroy && ./bin/yb-ctl create --master_flags="memory_limit_hard_bytes=629145600"

Как я могу восстановить эту ошибку? Либо удалить неудавшуюся базу данных, либо завершить создание базы данных?

Что касается проблемы с памятью, из-за которой новая база данных остается в этом состоянии, это может произойти в некоторых крайних случаях в 2.0.8, если команда DDL (CREATE DATABASE завершается с ошибкой системы в середине).

На данный момент самое простое решение, если это тестовый кластер, состоит в том, чтобы уничтожить кластер, а затем создать его заново (либо на машине с большим объемом памяти, либо с обновленными флагами, как показано выше). В противном случае вы можете использовать инструмент yb-admin для очистки частичных метаданных.

./bin/yb-admin delete_namespace ysql.yb_demo

Примечание. Некоторые коммиты для исправления таких случаев появились недавно [1], [2] и должен быть в следующем выпуске (хотя я не могу подтвердить если они исправят эту конкретную проблему).

person Mihnea Iancu    schedule 30.12.2019
comment
delete_namespace работал после того, как я впервые добавил память виртуальной машины на 6 ГБ. - person user4955663; 01.01.2020