1. 简介
Amazon Aurora 是一款兼容 MySQL 和 PostgreSQL 的云原生关系型数据库,它融合了高端商业数据库的高性能与高可用性,同时具备开源数据库的简洁性和成本效益。
在本教程中,我们将重点介绍如何通过 Java 创建并操作 Amazon RDS 实例,并连接执行 SQL 测试。适合有一定经验的开发者快速上手 Aurora 的开发与集成。
我们从项目搭建开始。
2. Maven 依赖配置
首先创建一个 Maven 项目,并添加 AWS SDK 的依赖:
<dependency>
<groupId>software.amazon.awssdk</groupId>
<artifactId>aws-sdk-java</artifactId>
<version>2.24.9</version>
</dependency>
最新版本可以前往 Maven Central 查看。
3. 准备工作(Prerequisites)
在使用 AWS SDK 之前,需要准备以下内容:
✅ AWS 账户:如果你还没有 AWS 账户,请前往 AWS 官网注册
✅ 安全凭证(Security Credentials):
✅ 选择 AWS 区域(Region):
- RDS 实例需要部署在特定区域,不同区域价格可能不同
- 更多信息请参考 官方定价文档
- 本教程使用 **Asia Pacific (Sydney)**,即
ap-southeast-2
4. 连接 AWS RDS 服务
我们需要创建一个客户端连接来访问 Amazon RDS Web 服务:
RdsClient rdsClient = RdsClient.builder()
.region(Region.AP_SOUTHEAST_2)
.credentialsProvider(ProfileCredentialsProvider.create("default"))
.build();
5. 创建 Aurora 实例
5.1. 创建 RDS 实例
创建 RDS 实例前,需要构建一个 CreateDbInstanceRequest
对象,包含如下关键属性:
- DB 实例标识符:全局唯一的名称
- 实例类型(Instance Class):CPU、内存等配置,参考 实例类型表
- 数据库引擎:支持 MySQL 或 PostgreSQL,这里我们使用 PostgreSQL
- 主用户名和密码
- 初始数据库名称
- 存储类型:如 gp2(通用 SSD),参考 EBS 类型说明
- 存储空间大小(GiB)
示例代码如下:
CreateDbInstanceRequest instanceRequest = CreateDbInstanceRequest.builder()
.dbInstanceIdentifier("Sydney")
.engine("postgres")
.multiAZ(false)
.masterUsername(db_username)
.masterUserPassword(db_password)
.dbName(db_database)
.storageType("gp2")
.allocatedStorage(10)
.build();
然后调用 createDBInstance()
方法创建实例:
CreateDbInstanceResponse createDbInstanceResponse = rdsClient.createDBInstance(instanceRequest);
⚠️ 注意:该调用是异步的,响应中不会立即返回 Endpoint URL。
5.2. 查询已创建的 DB 实例
使用 describeDBInstances()
方法列出所有实例信息:
DescribeDbInstancesResponse response = rdsClient.describeDBInstances();
List<DBInstance> instances = response.dbInstances();
for (DBInstance instance : instances) {
String identifier = instance.dbInstanceIdentifier();
String engine = instance.engine();
String status = instance.dbInstanceStatus();
Endpoint endpoint = instance.endpoint();
String endpointUrl = "Endpoint URL not available yet.";
if (endpoint != null) {
endpointUrl = endpoint.toString();
}
logger.info(identifier + "\t" + engine + "\t" + status);
logger.info("\t" + endpointUrl);
}
其中,Endpoint URL 是连接数据库时所需的主机地址。
5.3. JDBC 测试连接
接下来我们通过 JDBC 连接数据库并执行基本操作。
首先创建 db.properties
文件,填写数据库连接信息:
db_hostname=<Endpoint URL>
db_username=username
db_password=password
db_database=mydb
加载配置并连接数据库:
Properties prop = new Properties();
InputStream input = AwsRdsDemo.class.getClassLoader().getResourceAsStream("db.properties");
prop.load(input);
String db_hostname = prop.getProperty("db_hostname");
String db_username = prop.getProperty("db_username");
String db_password = prop.getProperty("db_password");
String db_database = prop.getProperty("db_database");
建立连接并创建表:
Connection conn = DriverManager.getConnection(jdbc_url, db_username, db_password);
Statement statement = conn.createStatement();
String sql = "CREATE TABLE IF NOT EXISTS jdbc_test (id SERIAL PRIMARY KEY, content VARCHAR(80))";
statement.executeUpdate(sql);
插入数据:
PreparedStatement preparedStatement = conn.prepareStatement("INSERT INTO jdbc_test (content) VALUES (?)");
String content = "" + UUID.randomUUID();
preparedStatement.setString(1, content);
preparedStatement.executeUpdate();
查询数据:
String sql = "SELECT count(*) as count FROM jdbc_test";
ResultSet resultSet = statement.executeQuery(sql);
while (resultSet.next()) {
String count = resultSet.getString("count");
Logger.log("Total Records: " + count);
}
5.4. 删除实例
删除 DB 实例需要构建 DeleteDbInstanceRequest
,并传入实例标识符和是否跳过快照参数:
DeleteDbInstanceRequest request = DeleteDbInstanceRequest.builder()
.dbInstanceIdentifier(identifier)
.skipFinalSnapshot(true)
.build();
DeleteDbInstanceResponse response = rdsClient.deleteDBInstance(request);
⚠️ 如果设置 skipFinalSnapshot = false
,则会在删除前自动创建一个快照用于备份。
6. 总结
本文介绍了如何使用 AWS SDK 通过 Java 与 Amazon Aurora(PostgreSQL)进行交互,涵盖了从创建实例、连接数据库、执行 SQL 到删除实例的完整流程。
Aurora 相比原生 MySQL 和 PostgreSQL,性能提升明显(最高可达 5 倍于 MySQL,3 倍于 PostgreSQL),是很多企业级应用的首选方案。
更多详情请访问 Amazon Aurora 官方页面。
代码示例可在 GitHub 仓库 获取。