[Java] Amazon Aurora にJDBC接続してみる

2017.01.24

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

Amazon Auroraに久しぶりに触ってみました。 今回はJavaのプログラムからAmazon Auroraに接続してみます。

準備する

まずはAmazon Auroraを起動します。私はt2.medium のシングルAZで構築しました。 その次にプログラムで使うJDBCドライバをダウンロードします。今回はMariaDBのドライバを使いました。他にはMySQLのJDBCも使えます。MariaDBのドライバは以下からダウンロードしました。 MariaDB Connector/J - MariaDB

Auroraには他のRDSと違いクラスターという複数のインスタンスをまとめたグループのような概念があります。 クラスターとインスタンスにそれぞれエンドポイントがあります。今回はシングルAZなのでどちらを指定しても同じになります。 詳しくは以下のページのAmazon RDSの基本構成のAuroraのところをご覧ください。 AWS再入門 Amazon RDS編

Amazon Auroraが起動したらプログラムから接続するテーブルを作成して準備完了です。

create table sample(
  column1 int
);

実装する

準備ができたのでJDBCドライバにビルドパスを通して以下のように実装します。実行してテーブルの件数が標準出力に出力されたら成功です。何もInsertしていなければ0と表示されると思います。ハイライトの部分以外はMySQLに接続する場合と変わりません。

import java.sql.*;

public class SampleAurora {

	public static void main(String[] args) {
		Connection conn = null;
		try {
			Class.forName("org.mariadb.jdbc.Driver");
			conn = DriverManager.getConnection("jdbc:mysql:aurora://[エンドポイント]:[ポート番号]/[DB名]?user=[ユーザ名]&password=[パスワード]");

			Statement statement = conn.createStatement();
			ResultSet resultSet = statement.executeQuery("SELECT count(*) FROM sample;");
			resultSet.next();
			System.out.println(resultSet.getInt(1));
			conn.close();

		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

最後に

マルチAZ構成のAuroraにMariaDBのJDBCドライバを使って接続すると、障害発生時に高速にフェールオーバーできるようです。 以下のページで説明しているようにgetConnectionの引数にインスタンスのエンドポイントを複数指定します。ぜひこちらの記事もご覧ください。 MariaDB Connector/JによるAmazon RDS for Auroraの高速フェイルオーバー