连接到 Amazon Aurora 数据库集群 - Amazon Aurora

连接到 Amazon Aurora 数据库集群

您可以使用用于连接到 MySQL 或 PostgreSQL 数据库的同一工具来连接到 Aurora 数据库集群。您可以使用连接到 MySQL 或 PostgreSQL 数据库实例的任何脚本、实用程序或应用程序指定连接字符串。您可以使用同一个公有密钥进行安全套接字层 (SSL) 连接。

在连接字符串中,通常使用与数据库集群关联的特殊端点的主机和端口信息。借助这些端点,无论集群中有多少个数据库实例,您都可以使用相同的连接参数。您还可以将 Aurora 数据库集群中特定数据库实例的主机和端口信息用于专业任务,例如故障排除。

注意

对于 Aurora Serverless 数据库集群,您可以连接到数据库端点而非数据库实例。您可以在 Aurora Serverless 的 Connectivity & security (连接和安全) 选项卡上找到 AWS Management Console 数据库集群的数据库端点。有关更多信息,请参阅“使用 Amazon Aurora Serverless v1”。

无论您使用哪种 Aurora 数据库引擎和特定工具来处理数据库集群或实例,端点都必须可访问。Aurora 数据库集群只能在基于 Amazon VPC 服务的虚拟私有云(VPC)中创建。这意味着您可以使用以下方法之一从 VPC 内部或 VPC 外部访问端点。

  • 从 VPC 内部访问 Aurora 数据库集群 – 通过 VPC 访问 Aurora 数据库集群。为实现此目的,您可以编辑 VPC 的安全组上的入站规则以允许访问特定 Aurora 数据库集群。要了解更多信息,包括如何为不同的 Aurora 数据库集群场景配置 VPC,请参阅 Amazon Virtual Private Cloud VPC 和 Amazon Aurora

  • 从 VPC 外部访问 Aurora 数据库集群 – 要从 VPC 外部访问 Aurora 数据库集群,请使用数据库集群的公有端点地址。

有关更多信息,请参阅 排除 Aurora 连接故障

使用 AWS 驱动程序连接到 Aurora 数据库集群

借助 AWS 驱动程序套件,可显著缩短切换和故障转移时间,并支持使用 AWS Secrets Manager、AWS Identity and Access Management(IAM)和联合身份进行身份验证。AWS 驱动程序依靠监控数据库集群状态和了解集群拓扑,来确定新的写入器。这种方法将切换和故障转移时间缩短到几秒钟,而开源驱动程序的切换和故障转移时间则为几十秒。

下表列出了每个驱动程序支持的功能。随着新服务功能的推出,使用 AWS 驱动程序套件可为这些服务功能提供内置支持。

功能 AWS JDBC 驱动程序 AWS Python 驱动程序 适用于 MySQL 的 AWS ODBC 驱动程序
故障转移支持
增强了故障转移监控功能
读/写分离 不支持
Aurora Connection Tracker 不支持
驱动程序元数据连接 不适用 不适用
遥测 不支持
Secrets Manager
IAM 身份验证
联合身份验证(AD FS) 不支持
联合身份(Okta)

有关 AWS 驱动程序的更多信息,请参阅 Aurora MySQLAurora PostgreSQL 数据库集群的相应语言驱动程序。

连接到 Amazon Aurora MySQL 数据库集群

要对 Aurora 数据库集群进行身份验证,您可以使用 MySQL 用户名和密码身份验证或 AWS Identity and Access Management(IAM)数据库身份验证。有关使用 MySQL 用户名和密码身份验证的更多信息,请参阅 MySQL 文档中的访问控制和账户管理。有关使用 IAM 数据库身份验证的更多信息,请参阅 的 IAM 数据库身份验证

在连接到与 MySQL 8.0 兼容的 Amazon Aurora 数据库集群时,您可以运行与 MySQL 8.0 版兼容的 SQL 命令。最低兼容版本是 MySQL 8.0.23。有关 MySQL 8.0 SQL 语法的更多信息,请参阅 MySQL 8.0 参考手册。有关适用于 Aurora MySQL 版本 3 的限制的信息,请参阅 比较 Aurora MySQL 版本 3 和 MySQL 8.0 社群版

在连接到与 MySQL 5.7 兼容的 Amazon Aurora 数据库集群时,您可以运行与 MySQL 5.7 版兼容的 SQL 命令。有关 MySQL 5.7 SQL 语法的更多信息,请参阅 MySQL 5.7 参考手册。有关适用于 Aurora MySQL 5.7 的限制的信息,请参阅与 MySQL 5.7 兼容的 Aurora MySQL 版本 2

注意

有关连接到 Amazon Aurora MySQL 数据库集群的实用详细指南,您可以参阅 Aurora 连接管理手册。

在数据库集群的详细信息视图中,您可以找到集群端点,可在 MySQL 连接字符串中使用此端点。该端点由数据库集群的域名和端口组成。例如,如果端点值为 mycluster.cluster-123456789012.us-east-1.rds.amazonaws.com:3306,则需要在 MySQL 连接字符串中指定以下值:

  • 对于主机或主机名,请指定 mycluster.cluster-123456789012.us-east-1.rds.amazonaws.com

  • 对于端口,请指定 3306 或在创建数据库集群时使用的端口值

集群端点将您连接到数据库集群的主实例。可使用集群端点执行读取和写入操作。数据库集群还可以具有最多 15 个 Aurora 副本,这些副本支持对数据库集群中的数据进行只读访问。主实例和每个 Aurora 副本具有唯一的端点,该端点独立于集群端点,允许您直接连接到集群中的特定数据库实例。集群端点始终指向主实例。如果主实例发生故障并被替换,则集群端点将指向新的主实例。

要查看集群端点(写入器端点),请在 Amazon RDS 控制台中选择 Databases (数据库),然后选择数据库集群的名称以显示数据库集群详细信息。

Aurora MySQL 写入器端点。

适用于 Aurora MySQL 的连接实用程序

以下是您可以使用的一些连接实用程序:

使用 MySQL 实用程序连接到 Aurora MySQL

使用以下流程。假设您在 VPC 的私有子网中配置了数据库集群。您可以使用根据教程:创建 Web 服务器和 Amazon Aurora 数据库集群中的教程配置的 Amazon EC2 实例进行连接。

注意

在本教程中,此过程不要求安装 Web 服务器,但要求安装 MariaDB 10.5。

使用 MySQL 实用程序连接到数据库集群
  1. 登录到您要用于连接到数据库集群的 EC2 实例。

    您应该可以看到类似于如下所示的输出内容。

    Last login: Thu Jun 23 13:32:52 2022 from xxx.xxx.xxx.xxx __| __|_ ) _| ( / Amazon Linux 2 AMI ___|\___|___| https://aws.amazon.com/amazon-linux-2/ [ec2-user@ip-10-0-xxx.xxx ~]$
  2. 在命令提示符处键入以下命令,以连接到数据库集群的主数据库实例。

    将参数 -h 替换为主实例的端点 DNS 名称。将参数 -u 替换为数据库用户账户的用户 ID。

    mysql -h primary-instance-endpoint.AWS_account.AWS_Region.rds.amazonaws.com -P 3306 -u database_user -p

    例如:

    mysql -h my-aurora-cluster-instance.c1xy5example.123456789012.eu-central-1.rds.amazonaws.com -P 3306 -u admin -p
  3. 输入数据库用户的密码。

    您应该可以看到类似于如下所示的输出内容。

    Welcome to the MariaDB monitor. Commands end with ; or \g. Your MySQL connection id is 1770 Server version: 8.0.23 Source distribution Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MySQL [(none)]>
  4. 输入 SQL 命令。

使用 Amazon Web Services(AWS)JDBC 驱动程序连接到 Aurora MySQL

Amazon Web Services(AWS)JDBC 驱动程序已重新设计为高级 JDBC 包装器。此包装器补充并扩展了现有 JDBC 驱动程序的功能,来协助应用程序利用集群数据库(例如 Aurora MySQL)的特征。该驱动程序与社区 MySQL Connector/J 驱动程序和社区 MariaDB Connector/J 驱动程序兼容。

要安装 AWS JDBC 驱动程序,请附加 AWS JDBC 驱动程序.jar 文件(位于应用程序 CLASSPATH 中),并保留对相应社区驱动程序的引用。按如下方式更新相应的连接 URL 前缀:

  • jdbc:mysql://jdbc:aws-wrapper:mysql://

  • jdbc:mariadb://jdbc:aws-wrapper:mariadb://

有关 AWS JDBC 驱动程序的更多信息及其完整使用说明,请参阅 Amazon Web Services (AWS) JDBC Driver GitHub repository

注意

版本 3.0.3 的 MariaDB Connector/J 实用程序放弃了对 Aurora 数据库集群的支持,因此我们强烈建议改用 AWS JDBC 驱动程序。

使用 Amazon Web Services(AWS)Python 驱动程序连接到 Aurora MySQL

Amazon Web Services(AWS)驱动程序设计为高级 Python 包装器。这款包装器是对开源 Psycopg 驱动程序的各项功能的补充和扩展。AWS Python 驱动程序支持 Python 3.8 及更高版本。您可以使用 pip 命令和 psycopg 开源软件包安装 aws-advanced-python-wrapper 程序包。

有关 AWS JDBC 驱动程序的更多信息及其完整使用说明,请参阅 Amazon Web Services(AWS)Python 驱动程序 GitHub 存储库

使用适用于 MySQL 的 Amazon Web Services(AWS)ODBC 驱动程序连接到 Aurora MySQL

适用于 MySQL 的 AWS ODBC 驱动程序是专为实现 Aurora MySQL 的高可用性而设计的客户端驱动程序。该驱动程序可以与 MySQL 连接器/ODBC 驱动程序并存,并且与相同的工作流程兼容。

有关适用于 MySQL 的 AWS ODBC 驱动程序的更多信息及其完整安装和使用说明,请参阅 Amazon Web Services (AWS) ODBC Driver for MySQL GitHub 存储库。

使用 SSL 连接到 Aurora MySQL

您可以在连接到 Aurora MySQL 数据库实例时使用 SSL 加密功能。有关信息,请参阅 与 Aurora MySQL 数据库集群的 TLS 连接

要使用 SSL 进行连接,请使用以下过程中所述的 MySQL 实用程序。要使用 IAM 数据库身份验证,您必须使用 SSL 连接。有关信息,请参阅 的 IAM 数据库身份验证

注意

要使用 SSL 连接到集群端点,您的客户端连接实用程序必须支持主题替代名称 (SAN)。如果您的客户端连接实用程序不支持 SAN,则可以直接连接到 Aurora 数据库集群中的实例。有关 Aurora 端点的更多信息,请参阅Amazon Aurora 端点连接

使用 MySQL 实用程序通过 SSL 连接到加密的数据库集群

  1. 下载 Amazon RDS 签名证书的公有密钥。

    有关下载证书的信息,请参阅使用 SSL/TLS 加密与数据库集群的连接

  2. 在命令提示符处键入以下命令,以便使用 MySQL 实用程序连接到带 SSL 的数据库集群的主实例。将参数 -h 替换为主实例的端点 DNS 名称。将参数 -u 替换为数据库用户账户的用户 ID。将参数 --ssl-ca 替换为相应的 SSL 证书文件名。根据系统提示键入主用户密码。

    mysql -h mycluster-primary.123456789012.us-east-1.rds.amazonaws.com -u admin_user -p --ssl-ca=[full path]global-bundle.pem --ssl-verify-server-cert

您应该可以看到类似于如下所示的输出内容。

Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 350 Server version: 8.0.26-log MySQL Community Server (GPL) Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql>

有关构建 RDS for MySQL 连接字符串和查找 SSL 连接的公有密钥的一般说明,请参阅连接到运行 MySQL 数据库引擎的数据库实例

连接到 Amazon Aurora PostgreSQL 数据库集群

您可以使用用于连接到 PostgreSQL 数据库的同一工具来连接到 Amazon Aurora PostgreSQL 数据库集群中的数据库实例。在连接过程中,您使用相同的公有密钥进行安全套接字层 (SSL) 连接。在连接到 PostgreSQL 数据库实例的任何脚本、实用程序或应用程序的连接字符串中,您可以使用 Aurora PostgreSQL 数据库集群中的主实例或 Aurora 副本的端点和端口信息。在连接字符串中,请指定主实例或 Aurora 副本端点中的 DNS 地址以作为主机参数。指定该端点中的端口号以作为端口参数。

在连接到 Amazon Aurora PostgreSQL 数据库集群中的数据库实例时,您可以运行与 PostgreSQL 兼容的任何 SQL 命令。

您可以在 Aurora PostgreSQL 数据库集群详细信息视图中找到集群端点名称、状态、类型和端口号。请在您的 PostgreSQL 连接字符串中使用端点和端口号。例如,如果端点值为 mycluster.cluster-123456789012.us-east-1.rds.amazonaws.com,则需要在 PostgreSQL 连接字符串中指定以下值:

  • 对于主机或主机名,请指定 mycluster.cluster-123456789012.us-east-1.rds.amazonaws.com

  • 对于端口,请指定 5432 或在创建数据库集群时使用的端口值

集群端点将您连接到数据库集群的主实例。可使用集群端点执行读取和写入操作。数据库集群还可以具有最多 15 个 Aurora 副本,这些副本支持对数据库集群中的数据进行只读访问。Aurora 集群中的每个数据库实例(即,主实例和每个 Aurora 副本)具有唯一的端点,该端点独立于集群端点。这个唯一的端点允许您与集群中特定的数据库实例直接连接。集群端点始终指向主实例。如果主实例发生故障并替换该实例,集群端点将指向新的主实例。

要查看集群端点(写入器端点),请在 Amazon RDS 控制台中选择 Databases (数据库),然后选择数据库集群的名称以显示数据库集群详细信息。

Aurora PostgreSQL 写入器端点。

适用于 Aurora PostgreSQL 的连接实用程序

以下是您可以使用的一些连接实用程序:

使用 Amazon Web Services(AWS)JDBC 驱动程序连接到 Aurora PostgreSQL

Amazon Web Services(AWS)JDBC 驱动程序已重新设计为高级 JDBC 包装器。此包装器补充并扩展了现有 JDBC 驱动程序的功能,以帮助应用程序充分利用集群数据库(如 Aurora PostgreSQL)的功能。该驱动程序与社区 pgJDBC 驱动程序兼容。

要安装 AWS JDBC 驱动程序,请附加 AWS JDBC 驱动程序.jar 文件(位于 CLASSPATH 应用程序中),并保留对 pgJDBC 社区驱动程序的引用。将连接 URL 前缀从 jdbc:postgresql:// 更新为 jdbc:aws-wrapper:postgresql://

有关 AWS JDBC 驱动程序的更多信息及其完整使用说明,请参阅 Amazon Web Services (AWS) JDBC Driver GitHub repository

使用 Amazon Web Services(AWS)Python 驱动程序连接到 Aurora PostgreSQL

Amazon Web Services(AWS)驱动程序设计为高级 Python 包装器。这款包装器是对开源 Psycopg 驱动程序的各项功能的补充和扩展。AWS Python 驱动程序支持 Python 3.8 及更高版本。您可以使用 pip 命令和 psycopg 开源软件包安装 aws-advanced-python-wrapper 程序包。

有关 AWS JDBC 驱动程序的更多信息及其完整使用说明,请参阅 Amazon Web Services(AWS)Python 驱动程序 GitHub 存储库

排除 Aurora 连接故障

导致新 Aurora 数据库集群连接故障的常见原因包括:

  • VPC 中的安全组不允许访问 – 您的 VPC 需要通过正确地配置 VPC 中的安全组来允许来自您的设备或 Amazon EC2 实例的连接。要解决问题,请修改 VPC 的安全组入站规则以允许连接。有关示例,请参阅教程:创建 VPC 以用于数据库集群(仅限 IPv4)

  • 防火墙规则阻止的端口 – 检查为 Aurora 数据库集群配置的端口值。如果防火墙规则阻止该端口,则可以使用不同的端口重新创建实例。

  • 不完整或不正确的 IAM 配置 – 如果您创建了 Aurora 数据库实例以使用基于 IAM– 的身份验证,请确保其配置正确。有关更多信息,请参阅“ 的 IAM 数据库身份验证”。

有关 Aurora 数据库连接问题排查的更多信息,请参阅 无法连接到 Amazon RDS 数据库实例