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

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

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

实施部署。

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

bash 复制代码
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程序示例:

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怎么玩,只是做一个简单的记录,以及,在使用过程中遇到的各种问题。后续待我理清楚了其中的逻辑,我再重新梳理文章的逻辑。

相关推荐
祁许8 小时前
【Golang】手搓DES加密
开发语言·golang·密码学
凡人的AI工具箱8 小时前
15分钟学 Go 实战项目六 :统计分析工具项目(30000字完整例子)
开发语言·数据库·人工智能·后端·golang
王大锤43918 小时前
golang通用后台管理系统10(退出登录,注销token)
golang
0x派大星12 小时前
【Golang】——Gin 框架中的 API 请求处理与 JSON 数据绑定
开发语言·后端·golang·go·json·gin
醒过来摸鱼13 小时前
Golang时间操作
开发语言·python·golang
yourkin66618 小时前
Go(java基础)
开发语言·golang
海风极客18 小时前
浅谈Go语言Optional模式和Builder模式
开发语言·golang·建造者模式
醒过来摸鱼18 小时前
Golang文件操作
开发语言·后端·golang
hummhumm18 小时前
第 24 章 -Golang 性能优化
java·开发语言·前端·后端·python·性能优化·golang