问题标签 [vitess]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
mysql - 如何使用两个 Docker 镜像将 MySQL 数据库与 Vitess 分片?
我发现了 Vitess,它可以让你对 MySQL 数据库进行分片。我想同时使用 MariaDB 和 Vitess 的 docker 映像,但我不太确定下一步该做什么。我正在使用 CentOS 7。
我安装了图像
登录 vitess 图像
正如网站所说,make build
我设置了变量
手册说它在主目录中,但在映像中它位于根目录中。
但在那之后我被困住了。我 laucnh 动物园管理员:./zk-up.sh
哦,好吧,让我们继续……
./vtctld-up.sh 用于网络接口
显然我无法访问该链接,因为它位于无头服务器上的 docker 中
./vttablet-up.sh 假设会调出 3 个 vttablet,但 MariaDB 在另一个 docker 中,尚未启动,如果我打开文件,则不清楚如何设置它。
有没有更容易安装的 MySQL 或 PostgreSQL 分片解决方案?或者我该如何设置?
(Docker 菜鸟在这里抱歉)
谢谢!
kubernetes - ./kvtctl.sh 处的 vitess 安装失败远程错误:rpc 错误:代码 = 不可用 desc = 传输正在关闭
我正在 minikube 中安装 vitess。我按照在 kubernetes 中安装 vitess 的说明进行操作,第 6 节。使用 vtctlclient 向 vtctld 发送命令。我收到以下错误:
我被困住了。任何人都可以在这里帮忙吗?
kubernetes - 为什么 pod 仍处于“待处理”状态?
我对为什么我的 pod 处于待处理状态感到非常困惑。
Vitess 似乎在节点上调度 vtttablet pod 时遇到问题。我构建了一个 2-worker-node Kubernetes 集群(节点 A 和 B),并在集群上启动了 vttablets,但只有两个 vttablet 正常启动,其他三个处于挂起状态。
当我允许主节点调度 pod 时,三个待处理的 vttablet 都在 master 上启动(第一个错误,然后正常运行),我创建表,两个 vttablet 执行失败。
当我向我的 kubernetes 集群添加两个新节点(节点 C 和 D),拆除 vitess 并重新启动 vttablet 时,我发现三个 vttablet pod 仍处于挂起状态,如果我启动节点 A 或节点 B,我得到vttablet lost
,并且它不会在新节点上重新启动。我拆掉了vitess,也拆掉了k8s集群,重建它,这次我使用节点C&D构建了一个2-worker-node k8s集群,现在所有的vttablet都处于待处理状态。
mysql - Vitess:使用 SQL 文件初始化键空间模式
我正在使用 helm 和 Vitess 示例中的文件101_initial_cluster.yaml来设置我的初始集群。该示例使用 SQL 字符串进行模式初始化,如下所示:
我想用一个文件替换它initial: my_initial_keyspace_schema.sql
。从 Vitess 文档中,我可以看到 Vitess 确实允许使用 ApplySchema -sql_file=user_table.sql user
,但我想使用 helm 文件进行初始化。
这将非常有帮助,因为将架构组织和粘贴为string
. 必须先粘贴依赖于其他的表,然后再粘贴其余的表。忘记会使 Vitess 抛出错误。
kubernetes-helm - 使用 etcd 在 vitess 上打开拓扑服务器失败
我正在使用 Helm 运行一个简单的示例。看看下面的values.yaml
文件:
看看下面运行的当前 pod 的输出:
运行日志我看到这个错误:
我在 vagrant 后面跑,有 1 个主节点和 2 个节点。我怀疑这是eth1
.
存储配置为使用 NFS。
mysql - 避免表扫描并在查询中使用索引
我正在设计一个新的数据库,并注意到我的查询没有像应有的那样扩展。当我的聚合涉及数百条记录时,我发现响应时间显着增加。我想知道我的查询是否存在严重缺陷,或者我只是没有使用正确的索引。
我对我的查询做了很多调整,但还没有想出一种方法来消除全表扫描,而是使用索引。当我使用类似于EXPLAIN
查询的工具时,我看到以下内容:
- 全表扫描通常效率低下,避免使用它们。
- 您的查询使用 MySQL 的“文件排序”操作。这往往会减慢查询速度。
- 您的查询使用 MySQL 的临时表。这可能需要额外的 I/O,并且往往会减慢查询速度。
桌子:
询问:
PK:id, userId, col1, col2, col3
索引:createdAt
解释:
col1
此查询查找and col2
、orders by分组中的最新记录createdAt
,并将条目限制为 10。
javascript - 通过节点js将大blob插入vitess
我正在使用这种方法将一个大 blob 插入我的 mySQL 数据库(Blob 大小 ~40MB) 约 15 秒后,它会引发异常或 CPU 利用率达到 100%,并且在 ~25-50 秒内保持 100%。这里的整个事情都适用于小于~7MB的blob。
我正在使用节点 js,mysql
sql - 带有分片(Vitess)的 mysql 会比任何没有 SQL 数据库都快吗?
我一直试图理解为什么 nosql db 被认为比 RDBMS 更快。我知道 nosql dbs 不遵循 ACID 属性,而是遵循 BASE 原则,这就是 nosql 能够水平扩展的原因。
我在这里想了解的是,如果类似查询存在很大差异。例如,假设我们有一个搜索来搜索我们数据库中所有匹配的用户。我们在 MySQL 和任何 nosql 数据库中都有相同的数据,让我们假设对于 nosql,我们只有 1 个分片。那么查询速度是否仍然存在差异,还是会相同?
vitess - 我们可以分片特定的表而不在 vitess 中创建新的键空间吗?
例如:我想在一个键空间中创建 40 个表。在 40 个表中,我想对 3 个表进行分片。是否可以在不创建新键空间的情况下对特定表进行分片。我已经看到如何使用 vitess 仅对特定表进行分片 但为此我们需要创建新的键空间。我不想创建新的键空间。我想要一个键空间中的分片和非分片表,这可能吗?
mysql - 如何创建多个 Vitess 索引
谁能指出如何更改 Vitess 中的 VSchema 以适应多个 VIndex。