快速体验边缘集群

本文将为您详细介绍如何快速使用PolarDB MySQL边缘集群,包括创建集群、配置白名单、创建数据库账号以及连接数据库等相关操作。

支持的边缘地域

目前PolarDB MySQL边缘集群仅支持海口电信土耳其伊斯坦布尔-1中国澳门-2以及越南河内-3

1. 创建ENS网络

为您所需部署集群的区域创建相应的边缘服务网络。

说明

若您尚未使用过边缘节点服务ENS,则需要根据实际业务需求填写相关资料,申请开通ENS服务

  1. 前往边缘节点服务ENS控制台,选择左侧导航栏中的网络管理 > 网络,单击创建网络

  2. 创建网络页面配置,根据目前已支持的边缘地域创建对应的网络(VPC与交换机)

2. 创建边缘集群

您可以前往PolarDB边缘集群购买页,快速创建PolarDB MySQL边缘集群。配置参数如下,其他设置可保持默认。

配置项

说明

计费类型

边缘云形态目前仅支持包年包月方式购买。

说明

包年包月为预付费模式。在创建集群时,您需选择固定规格的资源,并预先支付集群的费用。购买周期越长,所享受的折扣也越大。该模式一般适用于业务需求长期稳定的场景。

边缘主机房

选择集群的所在边缘云节点

说明

请确保PolarDB与需要连接的ENS实例位于同一个地域,否则它们内网无法直接互通。

兼容性

选择集群与MySQL兼容的版本。

  • MySQL 8.0.2:完全兼容对应社区MySQL-8.0.18及更低的版本。

  • MySQL 8.0.1:完全兼容对应社区MySQL-8.0.13及更低的版本。

子系列

支持选择独享规格通用规格两种子系列:

  • 独享规格:每个集群会独占所分配到的计算资源(如CPU),而不会与同一服务器上的其他集群共享资源,性能更加稳定可靠。

  • 通用规格:同一服务器上的不同集群,会互相充分利用彼此空闲的计算资源(如CPU),通过复用计算资源享受规模红利,性价比更高。

关于两种子系列的详细对比,请参见如何选择通用规格和独享规格

网络

选择第一步创建的ENS网络。如果您已创建边缘云实例,且该实例所在VPC符合您的规划,那么您可以选择该VPC和交换机。

规格

选择对应的节点规格,不同规格间的CPU、内存、最大存储空间以及IOPS存在一定差异,您可根据实际业务需求选择。

节点个数

默认为两个节点(一读写一只读),您可以根据实际业务需求进行配置。

说明
  • 购买集群时,若只读节点的数量大于或等于1,则在购买后不支持将只读节点的数量修改为0。如果需要将现有集群的只读节点数量调整为0,建议您购买一个新集群,并通过迁移工具(如DTS)或使用大版本升级功能,将原有集群的数据迁移至新集群。

  • 节点说明:

    • 读写节点:又称主节点,负责处理写操作及部分读操作。主节点与只读节点之间采用基于物理复制同步数据。

    • 只读节点:负责处理读操作,分担主节点的压力,具备高可用性和扩展性。

    • 列存索引只读节点列存索引(IMCI)的功能节点,采用列式存储技术以加速分析查询(OLAP),分担主节点与只读节点的压力,具备高可用性和扩展性。

存储类型

PolarDB边缘云基于ENS云盘,是阿里云为边缘节点服务ENS提供的数据块级别的块存储产品,具有低时延、高性能、持久性、高可靠等特点。分以下两种规格:

  • ESSD PL0云盘:PL0性能级别的云盘

  • ESSD PL1云盘:相比PL0,PL1性能级别的云盘可提升5IOPS。

存储空间

配置需要预购的存储空间大小。默认为100 GB。

3. 创建数据库账号

您可以前往PolarDB边缘云控制台,在边缘云集群中单击目标集群ID进入集群详情页。在配置与管理 > 账号管理中创建数据库账号。

image

说明

数据库账号类型分为高权限账号普通账号,这两种账号的权限存在差异。您可以根据实际业务需求选择创建相应的数据库账号。更多信息,请参见账号权限

4. 获取集群地址

您可以前往PolarDB边缘云控制台,在边缘云集群中单击目标集群ID进入集群详情页。在数据库连接中获取数据连接地址。image

说明
  • 私网地址是您的边缘云VPC中的IP地址,系统使用负载均衡器(Load Balancer)关联各计算节点。

  • 推荐使用集群地址,默认端口号为3306。

5. 连接数据库

连接数据库集群的方法有很多种,您可以根据实际业务需求来选择适合的连接方式。以下列举了部分连接数据库集群的示例:

使用客户端连接集群

您可以使用任何通用的客户端连接PolarDB集群。此处以MySQL Workbench 8.0.29版本为例,其它客户端的操作类似。

  1. 安装MySQL Workbench。官方下载地址请参见MySQL Workbench下载页面

  2. 打开MySQL Workbench,选择Database > Connect to Database

  3. 输入连接信息,单击OK

    连接界面

    参数

    说明

    示例

    Hostname

    数据库连接地址

    pc-2***.rwlb.rds.aliyuncs.com

    Port

    数据库连接地址的端口号,与数据库连接地址相对应。

    说明

    默认端口为3306。

    3306

    Username

    数据库账号

    polardb_mysql_user

    Password

    数据库账号密码。

    Pass***233

使用命令行连接集群

如果您的服务器安装了MySQL客户端,可以通过命令行连接PolarDB MySQL数据库集群。

语法

mysql -h<连接地址> -P<端口> -u<数据库用户名> -p<数据库用户密码>

示例

mysql -h pc-2***.rwlb.rds.aliyuncs.com -P3306 -upolardb_mysql_user -pPass***233

参数

说明

示例

-h

数据库连接地址

pc-2***.rwlb.rds.aliyuncs.com

-P

数据库连接地址的端口号,与数据库连接地址相对应。

说明
  • 默认端口为3306。

  • 如果端口号为默认端口,该参数可以不填写。

3306

-u

数据库账号

polardb_mysql_user

-p

数据库账号密码。

说明

该参数为必填参数。

  • 如果不填写该参数,在Enter password后会重新要求输入密码。

  • 如果填写该参数,-p与数据库密码之间不能有空格。

Pass***233

使用应用程序连接集群

连接PolarDB MySQL集群的方式与连接其他MySQL数据库的方式一样,仅需将数据库连接地址、端口、账号及密码等进行替换即可。以下为您列举部分开发语言如何通过应用程序访问PolarDB数据库:

Java

此处以Maven项目为例,使用MySQL JDBC驱动连接PolarDB MySQL集群。

  1. 首先,您需要在pom.xml文件中添加MySQL JDBC驱动的依赖,代码示例:

    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>8.0.27</version>
    </dependency>
  2. 连接集群。请将参数<HOST>、端口号、<USER><PASSWORD><DATABASE><YOUR_TABLE_NAME><YOUR_TABLE_COLUMN_NAME>进行替换。

    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.Statement;
    
    public class DatabaseConnection {
       public DatabaseConnection() {
       }
    
       public static void main(String[] args) {
          // PolarDB集群连接地址、端口、需要连接的数据库名
          String url = "jdbc:mysql://<HOST>:3306/<DATABASE>?useSSL=false&serverTimezone=UTC";
          // 数据库账号
          String user = "<USER>";
          // 数据库账号的密码
          String password = "<PASSWORD>";
    
          try {
             Class.forName("com.mysql.cj.jdbc.Driver");
             Connection conn = DriverManager.getConnection(url, user, password);
             Statement stmt = conn.createStatement();
             // 需要检索的数据表名
             ResultSet rs = stmt.executeQuery("SELECT * FROM `<YOUR_TABLE_NAME>`");
    
             while(rs.next()) {
                // 需要检索的数据表的列名
                System.out.println(rs.getString("<YOUR_TABLE_COLUMN_NAME>"));
             }
    
             rs.close();
             stmt.close();
             conn.close();
          } catch (Exception var7) {
             var7.printStackTrace();
          }
    
       }
    }

Python

此处以Python3为例,使用PyMySQL库连接PolarDB MySQL集群。

  1. 首先,您需要安装PyMySQL库。如果您还没有安装,可以通过以下命令进行安装:

    pip3 install PyMySQL
  2. 连接集群。请将参数<HOST>、端口号、<USER><PASSWORD><DATABASE><YOUR_TABLE_NAME>进行替换。

    import pymysql
    
    # 数据库连接参数
    host = '<HOST>'  # PolarDB集群连接地址
    port = 3306  # 默认端口3306
    user = '<USER>'  # 数据库账号
    password = '<PASSWORD>'  # 数据库账号的密码
    database = '<DATABASE>'  # 需要连接的数据库名
    
    try:
        # 创建数据库连接
        connection = pymysql.connect(
            host=host,
            port=port,
            user=user,
            passwd=password,
            db=database
        )
    
        # 获取操作游标
        with connection.cursor() as cursor:
            # 执行 SQL 查询
            sql = "SELECT * FROM `<YOUR_TABLE_NAME>`"  # 需要检索的数据表名
            cursor.execute(sql)
    
            # 获取查询结果
            results = cursor.fetchall()
            for row in results:
                print(row)
    
    finally:
        # 关闭数据库连接
        if 'connection' in locals() and connection.open:
            connection.close()
    

Go

此处以go1.23.0为例,使用database/sql包和go-sql-driver/mysql驱动来连接PolarDB MySQL集群。

  1. 首先,您需要安装go-sql-driver/mysql驱动。您可以通过以下命令进行安装:

    go get -u github.com/go-sql-driver/mysql
  2. 连接集群。请将参数<HOST>、端口号、<USER><PASSWORD><DATABASE><YOUR_TABLE_NAME>进行替换。

    package main
    
    import (
        "database/sql"
        "fmt"
        "log"
        _ "github.com/go-sql-driver/mysql"
    )
    
    func main() {
        // 数据库连接参数
        dbHost := "<HOST>"       // PolarDB集群连接地址
        dbPort := "3306"         // 默认端口3306
        dbUser := "<USER>"       // 数据库账号
        dbPass := "<PASSWORD>"   // 数据库账号的密码
        dbName := "<DATABASE>"   // 需要连接的数据库名
    
        // 构建 DSN (Data Source Name)
        dsn := fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?charset=utf8mb4&parseTime=True&loc=Local", dbUser, dbPass, dbHost, dbPort, dbName)
    
        // 打开数据库连接
        db, err := sql.Open("mysql", dsn)
        if err != nil {
            log.Fatalf("Failed to connect to database: %v", err)
        }
        defer db.Close()
    
        // 测试连接
        err = db.Ping()
        if err != nil {
            log.Fatalf("Failed to ping database: %v", err)
        }
    
        // 创建一个操作游标
        var result string
        err = db.QueryRow("SELECT VERSION()").Scan(&result)
        if err != nil {
            log.Fatalf("Failed to execute query: %v", err)
        }
    
        // 输出数据库版本
        fmt.Printf("Connected to database, version: %s\n", result)
    
        // 执行 SQL 查询
        rows, err := db.Query("SELECT * FROM `<YOUR_TABLE_NAME>`") // 需要检索的数据表名
        if err != nil {
            log.Fatalf("Failed to execute query: %v", err)
        }
        defer rows.Close()
    }