VSCode 远程调试 Vitess

通过 Vitess 自带的 docker-compose 在本地拉起 Vitess 环境倒是很方便,但是调试起来很痛苦,本地编译的vtgate可以跑起来,连接到 compose 运行的 consul,但因为 vttablet 注册到counsul的地址是容器内的hostname,宿主机运行的vtgate会连接不上。同理,调试vttablet会更痛苦。于是尝试在服务器linuxlocal运行(参照这里,在 MacOS 上用vscode远程调试。

Linux 运行 Vitess

参考官方文档一步步执行,不过还是会踩到坑,和本地运行的kubernetesetcd组件有端口冲突,尝试通过修改etcd启动端口绕过,修改了 env.shscripts/etcd-up.sh,这里是diff:

diff --git a/env.sh b/env.sh
index c0b982a..b0c6b9e 100644
--- a/env.sh
+++ b/env.sh
@@ -62,7 +62,8 @@ elif [ "${TOPO}" = "k8s" ]; then
     # shellcheck disable=SC2034
     TOPOLOGY_FLAGS="-topo_implementation k8s -topo_k8s_kubeconfig ${K8S_KUBECONFIG} -topo_global_server_address ${K8S_ADDR}:${K8S_PORT} -topo_global_root /vitess/global"
 else
-    ETCD_SERVER="localhost:2379"
+    ETCD_SERVER="localhost:22379"
+    ETCD_PEERS="localhost:22380"
     TOPOLOGY_FLAGS="-topo_implementation etcd2 -topo_global_server_address $ETCD_SERVER -topo_global_root /vitess/global"
 
     mkdir -p "${VTDATAROOT}/etcd"
diff --git a/scripts/etcd-up.sh b/scripts/etcd-up.sh
index d8c0a86..1dc15d6 100755
--- a/scripts/etcd-up.sh
+++ b/scripts/etcd-up.sh
@@ -24,7 +24,7 @@ export ETCDCTL_API=2
 # Check that etcd is not already running
 curl "http://${ETCD_SERVER}" > /dev/null 2>
08-03
Vitess 是一个用于水平分片 MySQL 的数据库中间件,最初由 YouTube 开发并开源,后来得到了包括谷歌在内的多家公司支持。它旨在解决大规模 MySQL 部署中的扩展性问题,并提供类似于 NoSQL 数据库的可伸缩性,同时保留传统关系型数据库的优势。Vitess 的架构设计允许它在不牺牲一致性的情况下进行水平扩展,非常适合处理高流量的应用场景。 ### 最新版本 截至最近的更新,Vitess 的最新稳定版本为 15.x 系列,该版本引入了多项改进和新特性,以增强其作为现代云原生数据库中间件的能力。这些改进包括更好的 Kubernetes 集成、增强的查询优化器、改进的分片迁移工具等。 ### 功能介绍 Vitess 提供了一系列强大的功能来支持大规模 MySQL 部署,包括但不限于: - **水平分片**:Vitess 支持将单个数据库表水平分割成多个部分,每个部分可以存储在不同的物理服务器上,从而实现数据的分布式存储。 - **自动重分片**:当数据量增长到一定程度时,Vitess 可以自动将现有的分片进一步拆分为更小的分片,以适应不断增长的数据需求。 - **查询路由**:Vitess 能够智能地将查询路由到正确的分片,确保查询高效执行。 - **故障转移**:Vitess 支持自动故障检测和恢复,确保服务的高可用性。 - **Kubernetes 集成**:Vitess 提供了与 Kubernetes 的深度集成,使得在 Kubernetes 上部署和管理 Vitess 变得简单快捷。 ### 使用指南 对于希望开始使用 Vitess 的用户,官方提供了详细的文档和示例,帮助用户快速搭建和配置 Vitess 环境。例如,配置一个简单的分片规则可能涉及如下 YAML 文件的编辑: ```yaml shardingRule: tables: user: actualDataNodes: ds${0..1}.user${0..2} tableStrategy: inline: shardingColumn: user_id algorithmExpression: user${user_id % 3} ``` 此配置示例定义了一个名为 `user` 的表,该表被水平分片到两个数据源 `ds0` 和 `ds1` 中,每个数据源包含三个分片表 `user0`, `user1`, 和 `user2`。分片键为 `user_id`,并且使用简单的模运算来决定数据应该被分配到哪个分片。 通过上述介绍,可以看出 Vitess 是一个强大且灵活的数据库中间件解决方案,特别适合那些需要处理大量数据和高并发请求的应用场景。随着其社区的不断发展和技术的进步,Vitess 正逐渐成为越来越多企业和开发者的首选方案之一。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值