MatrixOne 是一款超融合异构分布式数据库,与 MySQL 高度兼容,通过云原生化和存储、计算、事务分离的架构构建 HSTAP 超融合数据引擎,实现单一数据库系统支持 OLTP、OLAP、流计算等多种业务负载,通过为用户提供一站式超融合数据解决方案,可以将过去由多个数据库完成的工作合并到一个数据库里,从而简化开发运维,消减数据碎片,提高开发敏捷度。
![alt](https://img-blog.csdnimg.cn/img_convert/b79afc8c8c7c169f58dcd2a2808aeb16.png)
MatrixOne 支持使用 Golang 连接,本文将介绍如何进行安全连接。
准备工作
-
本地安装 MO 数据库,或者已开通 MO Cloud 服务。
-
安装 mysql 客户端,用于连接 MO 数据库创建基础数据。
mysql -h127.1 -P3306 -uroot -p1
create schema mytest;
create table mytest.t (id int primary key auto_increment, name varchar(10));
-
安装 Golang 包。
$ go version
go version go1.21.8 linux/amd64
Go-MySQL-Driver (入门篇)
Go-MySQL-Driver 是一个用于 Go 语言的 MySQL 驱动程序,它实现了 Go 标准库中 database/sql 接口的方法,使得 Go 语言程序可以通过这个驱动程序连接和操作 MySQL 数据库。
-
初始化项目 mygo-mo
go mod init github.com/shawn0915/mygo-mo
-
安装 Go-MySQL-Driver
go get -u github.com/go-sql-driver/mysql
go: added github.com/go-sql-driver/mysql v1.8.1
-
创建主文件,写入如下代码。
package main
import (
"database/sql"
"fmt"
_ "github.com/go-sql-driver/mysql"
)
func main() {
db, _ := sql.Open("mysql", "root:1@tcp(127.0.0.1:3306)/mytest")
defer db.Close()
err := db.Ping()
if err != nil {
fmt.Println("DB Connection Failed.")
return
} else {
fmt.Println("DB Connection Succeed.")
}
}
-
运行代码,可以看到输出显示连接成功。
[mysql@centos7 mygo-mo]$ go run main.go
DB Connection Succeed.
Go-MySQL-Driver (基础篇)
下面演示如何使用 Go-MySQL-Driver 对 MO 中的数据进行增删改查操作。
部分代码如下:
// Insert a record
stmt, err := db.Prepare("INSERT t (id, name) VALUES (?, ?)")
res, err := stmt.Exec(1, "mo")
insertedId, err := res.LastInsertId()
fmt.Println("Inserted id:", insertedId)
// Update a record
stmt, err = db.Prepare("UPDATE t SET name=? WHERE id=?")
res, err = stmt.Exec("mo cloud", insertedId)
affect, err := res.RowsAffected()
fmt.Println("Affected rows:", affect)
// Query all records
rows, err := db.Query("SELECT * FROM t")
// Delete a record
stmt, err = db.Prepare("DELETE FROM t WHERE id=?")
res, err = stmt.Exec(insertedId)
affect, err = res.RowsAffected()
fmt.Println("Affected rows:", affect)
运行代码:
[mysql@centos7 mygo-mo]$ go run main.go
Inserted row ID: 1
Affected rows: 1
1 mo cloud
Affected rows: 1
Go-MySQL-Driver (加密篇)
在 Go 中支持连接到 MO 时使用 TLS 认证设定,以此来简历安全连接。
可以在 DSN 中进行配置,使驱动在连接数据库时应用 TLS 配置。
db, err := sql.Open("mysql", "root:1@tcp(127.0.0.1:3306)/mytest?tls=preferred")
运行代码:
[mysql@centos7 mygo-mo]$ go run main.go
Ssl_version TLSv1.3
小结
本节内容介绍了如何使用 Go 语言驱动 Go-MySQL-Driver 连接 MatrixOne 数据库。
更多内容可参阅官方文档:
-
https://docs.matrixorigin.cn/ -
https://pkg.go.dev/github.com/go-sql-driver/mysql
本文由 mdnice 多平台发布