LoginSignup
2
1

[OCI]Autonomous DatabaseからAurora MySQLに対するデータベース・リンクを作成して直接データを参照してみた

Last updated at Posted at 2023-05-22

はじめに

Autonomous DatabaseではAmazon Redshift、MySQL、PostgreSQL、SnowflakeといったOracle以外のデータベースに対するデーターベース・リンクが作成できます。

現時点では、以下の前提条件があります。
・ターゲット・データベースがパブリック・インターネットからアクセスできること
・ターゲット・データベースがSSL/TLS接続を許可する設定になっていること

最近のアップデートで、MySQL Community Editionに対するデータベース・リンクの作成が可能になったので、今回はAutonomous DatabaseからMySQL Community Editionを使用しているAurora MySQLに対してデータベース・リンクを作成し、Autonomous DatabaseからAurora MySQL内のデータを参照してみました。

1.Aurora MySQLの準備

今回はAWSの東京リージョン(ap-northeast-1)にAurora MySQLを作成し、Autonomous DatabaseのアウトバウンドIPアドレスからの接続を許可しました。
Aurora MySQLはデフォルトでSSL/TLS接続を許可する設定になっています。

mysqlクライアントからAurora MySQLに接続します。

[opc@tools ~]$ mysql -h testdb.cluster-xxxxxxxxxxxx.ap-northeast-1.rds.amazonaws.com -P 3306 -u admin -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 15
Server version: 5.7.12 MySQL Community Server (GPL)

Copyright (c) 2000, 2023, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> 

データベース testdb を作成します

mysql> CREATE DATABASE testdb;
Query OK, 1 row affected (0.02 sec)

mysql> 

接続先を testdb に切り替えます。

mysql> use testdb;
Database changed
mysql> 

テーブル dept を作成し、データを追加します。

mysql> CREATE TABLE dept (
    -> deptno INT,
    -> dname VARCHAR(14),
    -> loc VARCHAR(13),
    -> PRIMARY KEY (deptno)
    -> );
Query OK, 0 rows affected (0.05 sec)

mysql> INSERT INTO dept VALUES (10,'ACCOUNTING','NEW YORK');
Query OK, 1 row affected (0.03 sec)

mysql> 
mysql> INSERT INTO dept VALUES (20,'RESEARCH','DALLAS');
Query OK, 1 row affected (0.01 sec)

mysql> 
mysql> SELECT * FROM dept;
+--------+------------+----------+
| deptno | dname      | loc      |
+--------+------------+----------+
|     10 | ACCOUNTING | NEW YORK |
|     20 | RESEARCH   | DALLAS   |
+--------+------------+----------+
2 rows in set (0.00 sec)

mysql> 

mysqlクライアントを終了します。

mysql> exit
Bye
[opc@tools ~]$ 

2. Autonomous Databaseへの接続

SQL*PlusからAutonomous Databaseに接続します。

[opc@tools ~]$ sqlplus admin/Demo#1Demo#1@testatp1_medium

SQL*Plus: Release 19.0.0.0.0 - Production on 月 5月 22 10:45:45 2023
Version 19.16.0.0.0

Copyright (c) 1982, 2022, Oracle.  All rights reserved.

最終正常ログイン時間: 月 5月  22 2023 09:53:23 +09:00


Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.19.0.1.0
に接続されました。
SQL> 

3. Autonomous DatabaseからAurora MySQLに接続するためのクレデンシャルの作成

DBMS_CLOUD.CREATE_CREDENTIALプロシージャを使用して、Autonomous DatabaseからAurora MySQLに接続するためのクレデンシャル AURORA_MYSQL_CRED を作成します。
usernameにAurora MySQLのユーザ名、passwordにそのユーザのパスワードを指定します。

SQL> BEGIN
  2    DBMS_CLOUD.CREATE_CREDENTIAL(
  3       credential_name => 'AURORA_MYSQL_CRED',
  4       username => 'admin',
  5       password => 'Demo#1Demo#1');
  6  END;
  7  /

PL/SQL procedure successfully completed.

SQL>

4. Autonomous DatabaseからAurora MySQLに接続するデータベース・リンクの作成

DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK プロシージャを使用して、Autonomous DatabaseからAurora MySQLに接続するデータベース・リンクを作成します。
DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINKの各パラメータは以下のように指定します。

a b
db_link_name 作成するデータベース・リンクの名前
hostname RDSマネジメントコンソールに表示されるAurora MySQLのエンドポイント
port RDSマネジメントコンソールに表示されるAurora MySQLのポート
service_name データベース名
credential_name 3.で作成したAurora MySQLに接続するためのクレデンシャルの名前
gateway_params 接続先DBに応じてdb_typeを設定、MySQL Community Editionを使用しているAurora MySQLの場合は'MYSQL_COMMUNITY'。詳細はこちらを参照
directory_name NULL
ssl_server_cert_dn NULL
SQL> BEGIN
  2    DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK(
  3            db_link_name => 'AURORA_MYSQL_LINK', 
  4            hostname => 'testdb.cluster-xxxxxxxxxx.ap-northeast-1.rds.amazonaws.com', 
  5            port => '3306',
  6            service_name => 'testdb',
  7            credential_name => 'AURORA_MYSQL_CRED',
  8            gateway_params => JSON_OBJECT('db_type' value 'MYSQL_COMMUNITY'),
  9            directory_name => NULL,
 10            ssl_server_cert_dn => NULL);
 11  END;
 12  /

PL/SQL procedure successfully completed.

SQL>

5. Autonomous Databaseからデータベース・リンク経由でAurora MySQL内のデータを参照

Autonomous DatabaseからAurora MySQLへのデータベースリンクが作成できたので、Autonomous Databaseからデータベース・リンク経由でAurora MySQL内のデータを参照してみます。

参照先のテーブルを指定する際は、"dept"のようにテーブル名を小文字で記述してダブルクウォートで囲む必要があります。
スキーマを指定してテーブルを参照する際は、同様に、"スキーマ名"."テーブル名"のように記述する必要があります。

SQL> col dname for a20
SQL> col loc for a20
SQL> SELECT * FROM "dept"@AURORA_MYSQL_LINK;

    deptno dname		        loc
---------- -------------------- --------------------
	    10 ACCOUNTING		    NEW YORK
	    20 RESEARCH		        DALLAS

SQL> 

Autonomous Databaseからデータベース・リンク経由でAurora MySQL内のデータを参照することができました。

参考

Create Database Links to Non-Oracle Databases with Oracle-Managed Heterogeneous Connectivity
CREATE_CREDENTIAL Procedure
CREATE_DATABASE_LINK Procedure
Access Amazon Redshift, Snowflake and Other Non-Oracle Databases from Your Autonomous Database
Step-by-Step guide to querying data in Snowflake using Autonomous Database

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1