MatrixOne 是一款超融合异构分布式数据库,与 MySQL 高度兼容,通过云原生化和存储、计算、事务分离的架构构建 HSTAP 超融合数据引擎,实现单一数据库系统支持 OLTP、OLAP、流计算等多种业务负载,通过为用户提供一站式超融合数据解决方案,可以将过去由多个数据库完成的工作合并到一个数据库里,从而简化开发运维,消减数据碎片,提高开发敏捷度。

MatrixOne 支持使用 Golang 连接,本文将介绍如何进行安全连接。

准备工作

  1. 本地安装 MO 数据库,或者已开通 MO Cloud 服务。
  2. 安装 mysql 客户端,用于连接 MO 数据库创建基础数据。
mysql -h127.1 -P3306 -uroot -p1
create schema mytest;
create table mytest.t (id int primary key auto_increment, name varchar(10));
  1. 安装 Golang 包。
$ go version
go version go1.21.8 linux/amd64

Go-MySQL-Driver (入门篇)

Go-MySQL-Driver 是一个用于 Go 语言的 MySQL 驱动程序,它实现了 Go 标准库中 database/sql 接口的方法,使得 Go 语言程序可以通过这个驱动程序连接和操作 MySQL 数据库。

  1. 初始化项目 mygo-mo
go mod init github.com/shawn0915/mygo-mo
  1. 安装 Go-MySQL-Driver
go get -u github.com/go-sql-driver/mysql
go: added github.com/go-sql-driver/mysql v1.8.1
  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.")
    }
}
  1. 运行代码,可以看到输出显示连接成功。
[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 数据库。

更多内容可参阅官方文档:

本文由mdnice多平台发布


严少安
6 声望4 粉丝

DBA