0

我尝试按照以下说明运行 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 需要多少内存?在这种情况下,运行时环境是带有桌面的 4GB Ubuntu 16.4 VirtualBox VM。您的硬件要求至少为 2GB https://docs.yugabyte.com/latest/deploy/checklist/

我怎样才能恢复这个错误?删除失败的数据库或完成数据库创建?

谢谢您的支持。

4

1 回答 1

1

运行 YugaByte 需要多少内存?在这种情况下,运行时环境是带有桌面的 4GB Ubuntu 16.4 VirtualBox VM。您的硬件要求至少为 2GB https://docs.yugabyte.com/latest/deploy/checklist/

实际上,2GB最小值是针对每个节点的。由于您3在一台机器上运行 -node 集群,因此应该有助于将其增加到6GB或更多。

或者,如果增加内存不是一个选项,您可以调整进程的内存限制。默认情况下,Yugabyte 将10%总内存分配给yb-master进程(元数据服务器)和85%进程yb-tserver(平板电脑服务器)。

在您的情况下,内存问题很可能与yb-master进程有关(CREATE DATABASE命令将初始化新数据库的元数据)。您可以使用 Web UI 检查当前内存设置和使用情况以进行确认。

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

注意:对于3-nodeyb-ctl集群,节点 IP 通常是127.0.0.1127.0.0.2127.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]并且应该在下一个版本中(尽管我无法确认他们是否会解决这个特定问题)。

于 2019-12-30T23:51:51.397 回答