当前位置: 首页 > article >正文

vitess使用:从部署到go客户端连接查询

网络上似乎没有一个简易的教程,官方的资料又是纯英文版本的,我只有一步步摸着石头过河,还有很多问题没有解决,如果有熟悉vitess的大佬,还请帮忙指点一二。这篇文章目前还没有什么逻辑,主要是记录一下我在学习过程中遇到的问题。

我是基于docker部署,首先体验一下这个组件的功能边界。主要是基于官方文档The Vitess Docs | Vttestserver Docker Image

实施部署。

目前是按照官方提供的命令运行的vitessserver。

docker run --name=vttestserver \
  -p 33574:33574 \
  -p 33575:33575 \
  -p 33577:33577 \
  -e PORT=33574 \
  -e KEYSPACES=test,unsharded \
  -e NUM_SHARDS=2,1 \
  -e MYSQL_MAX_CONNECTIONS=70000 \
  -e MYSQL_BIND_HOST=0.0.0.0 \
  -e VTCOMBO_BIND_HOST=0.0.0.0 \
  --health-cmd="mysqladmin ping -h127.0.0.1 -P33577" \
  --health-interval=5s \
  --health-timeout=2s \
  --health-retries=5 \
  vitess/vttestserver:mysql80

通过navicat连接,查看数据库内容会报错。

安装了mysql workbench能够正常打开数据库,也能执行查看表结构等操作。

简单的go程序示例:

package main

import (
	"fmt"
	"log"

	"vitess.io/vitess/go/vt/vitessdriver"
)

func main() {
	// 连接 vtgate
	/*

		// Open is a Vitess helper function for sql.Open().
		//
		// It opens a database connection to vtgate running at "address".
		func Open(address, target string) (*sql.DB, error) {
			c := Configuration{
				Address: address,
				Target:  target,
			}
			return OpenWithConfiguration(c)
		}
		关于target参数的说明:
		- target参数是一个逗号分隔的字符串,用于指定查询的目标,格式为:keyspace@primary
		- keyspace:指定要查询的数据库实例
		- primary:指定要查询的数据库实例的主分片
	*/
	db, err := vitessdriver.Open("localhost:33575", "unsharded@primary")
	if err != nil {
		panic(err)
	}
	defer db.Close()

	// 执行查询
	rows, err := db.Query("SELECT * FROM user WHERE id = 1")
	if err != nil {
		panic(err)
	}
	defer rows.Close()

	// 处理查询结果
	// 输出查询结果
	for rows.Next() {
		var column1 int64
		var column2 string
		if err := rows.Scan(&column1, &column2); err != nil {
			log.Fatal(err)
		}
		fmt.Println(column1, column2)
	}
}

总结

这篇文章写的完全没有逻辑,主要是我目前还不清楚vitess怎么玩,只是做一个简单的记录,以及,在使用过程中遇到的各种问题。后续待我理清楚了其中的逻辑,我再重新梳理文章的逻辑。


http://www.kler.cn/a/403507.html

相关文章:

  • AUTOSAR_EXP_ARAComAPI的7章笔记(6)
  • Halo 正式开源: 使用可穿戴设备进行开源健康追踪
  • ESP8266 STA模式TCP客户端 电脑手机网络调试助手
  • windows下,用CMake编译qt项目,出现错误By not providing “FindQt5.cmake“...
  • 学习路之phpstudy--安装mysql5.7后在my.ini文件中无法修改sql_mode
  • 【接口封装】—— 1、加载样式表
  • 深入解析PostgreSQL中的PL/pgSQL语法
  • React Native 全栈开发实战班 - 用户界面之手势系统应用
  • Android ConstraintLayout 基础
  • Day03_AJAX原理 (黑马笔记)
  • Python从0到100(七十三):Python OpenCV-OpenCV实现手势虚拟拖拽
  • 2025年软考初级【信息处理技术员】考试大纲
  • SELinux 的端口号权限以及使用 semanage 工具添加权限
  • 《TCP/IP网络编程》学习笔记 | Chapter 12:I/O 复用
  • Ubuntu 22.04 上快速搭建 Samba 文件共享服务器
  • 微信小程序的医院预约挂号系统
  • netcore Kafka
  • 【SQL 实现计算已历完整月份不同日期的场景】
  • JDK安装和Linux常见设置详细版教程
  • springboot第82集:消息队列kafka,kafka-map
  • VRT: 关于视频修复的模型
  • 佛山三水戴尔R740服务器黄灯故障处理
  • 使用docker compose安装部署gitlab
  • SQL 数据库管理:提升数据管理效率的关键
  • 【ChatGPT】如何通过角色扮演让ChatGPT回答更贴合实际场景
  • Android 功耗分析(底层篇)