Alibaba Cloud で RDS (MySQL)の立ち上げおよびDMSを使う


Alibaba CloudのDatabase製品を触れてみたら、DMS（Data Management Service）が結構使いやすくて良いなと感じたので、記事にしました。

# **RDSとは？**

RDS (Relational Database Service) とは、Alibaba Cloudが提供する、クラウド上でのリレーショナルデータベースのホスティングサービスです。RDSは、ユーザーがデータベースのインフラ管理を心配することなく、データベースの作成、運用、スケーリングを簡単に行えるようにすることを目的としています。

## **RDSがサポートするデータベースエンジン**

RDSは以下のデータベースエンジンに対応しています：

- MySQL
- SQL Server
- PostgreSQL
- MariaDB

## **各エンジンの対応バージョン**

RDSは各エンジンの複数のバージョンに対応しています。2024年5月現在の対応状況になります。

例えば：

- **MySQL**: 5.5, 5.6, 5.7, 8.0
- **SQL Server**: 2012, 2014, 2016, 2017, 2019, 2022
- **PostgreSQL**: 11, 12, 13, 14, 15, 16
- **MariaDB**: 10.3

## **RDSとPolarDBの使い分け**

Alibaba Cloud上でDBを利用する場合、RDS の他にPolarDB の2つの選択肢があります。それぞれの使い分けについて説明します。今回はDMSの動作をメインで利用したい為、RDSを利用します。

### **RDS**

- **コスト重視**: 予算を抑えたい場合に適しています。
- **性能面そこまで重要ではない**: 極端な高性能が不要な場合に適しています。
- **PolarDB MySQL非対応バージョンの利用**: PolarDB MySQLが対応していないMySQLバージョンを利用したい場合に適しています。
- **Oracleの利用が選択できない:** Oracleを利用するには、PolarDBを選択する必要があります。

### **PolarDB**

- **性能重視**: 高性能が求められる場合に適しています。PolarDBは、クラスタ化されたデータベースサービスで、リードとライトのパフォーマンスを大幅に向上させます。
- **スケーラビリティ**: 自動スケーリングが必要な場合に適しています。
- **コストより性能優先**: コストが高くても性能が重要な場合に適しています。
- **SQLServerおよびMariaDBが選択できない:** これらを利用する際、RDSを選択する必要があります。

# DMSとは？

公式にもこのように説明されているように、統合的なDatabaseの管理を行うサービスになています。

> DMSは、MySQL、SQL Server、PostgreSQL、PolarDB、DRDS、OceanBase、Oracleなどのリレーショナルデータベース、AnalyticDB、Data Lake Analytics、ClickHouseなどのOLAPデータベースなどのデータウェアハウス関連データベース、MongoDB、RedisなどのNoSQLデータベースを含む複数のデータベースの統合管理をサポートします。これは、データ管理、構造管理、ユーザー認証、セキュリティ監査、傾向分析、およびデータトレースをカバーする包括的なデータ管理サービスです。DMSは、データベースとサーバーを一元管理するための使いやすいポータルを提供し、より安全なデータ、より効率的な管理、より明確なデータ価値を保証します
> 

DMSのサービス・機能はとても多く、全てを伝えることは難しい為、いくつかの機能をよく利用する機能に絞って説明していきます。

[https://www.alibabacloud.com/help/en/dms/product-overview/features-1](https://www.alibabacloud.com/help/en/dms/product-overview/features-1)

![Untitled.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/25772/eb1460ae-ac11-21f1-f1c0-3ad2a76bbad1.png)


# 作業詳細

今回は下記の作業を行っていきます。

1. **RDS (MySQL)を立ち上げ**
2. **RDSのアカウントを作成する**
3. **RDSにデータをインポートする**
    
    DMSを利用して、RDSにデータをインポートします。データのインポート画面から、SQLファイルをアップロードし、インポートタスクを実行します。
    
4. **RDSからデータをエクスポートする**
    
    DMSを利用して、RDSからデータをエクスポートします。データエクスポート画面から、エクスポートするデータベース名やテーブルを選択し、エクスポートタスクを実行します。
    
5. **RDS内でSQL操作を行う**
    
    DMSのSQLコンソールを利用して、RDS内でSQL操作を行います。クエリの実行、結果の確認、データの可視化などが可能です。
    


## RDS（MySQL）を立ち上げる

ApsaraDB RDS を利用します。

[https://rdsnext.console.aliyun.com/dashboard/](https://rdsnext.console.aliyun.com/dashboard/)

インスタンス作成の基本設定画面では、必要な選択のみを行います。

![rdsbuy.console.aliyun.com_create_bards_mysql.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/25772/80e9ab59-259c-54da-f2d0-d23c8797b243.png)

インスタンス作成時にいくら掛かるかが分かるのが、とてもありがたいですね。

今回はデモ用で作るので、VPCも自動で割り振られたものを利用します。

![rdsbuy.console.aliyun.com_create_bards_mysql_(1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/25772/7976d67c-8592-16a8-80e5-28cdb99b7f4e.png)

確認画面から、今すぐ支払いを押します。他のサービスと違って言葉が新鮮ですね。

![rdsbuy.console.aliyun.com_create_bards_mysql_(2).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/25772/b8dc2c3c-ad51-c720-6ee3-caedc66b2ed6.png)

インスタンスリストの画面で少々待ち、画面リロードをすると実行中のステータスになっていることを確認します。

[https://rdsnext.console.aliyun.com/rdsList/ap-northeast-1/basic/normal](https://rdsnext.console.aliyun.com/rdsList/ap-northeast-1/basic/normal)

![rdsnext.console.aliyun.com_rdsList_ap-northeast-1_basic_normal_(1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/25772/7df70762-a984-ff35-d95c-a41f00775e8a.png)

RDSにアカウント `adb_test` アカウントを作成します。

![rdsnext.console.aliyun.com_detail_rm-0iw7786r3ihd2893v_account_list_spm5176.28369458.0.0.6fb9a33a5zkdfnregionap-northeast-1DedicatedHostGroupId_(1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/25772/56d1027e-2bec-cf25-8ccc-537d3c53bc8b.png)

## RDSにデータをインポートする

DMSというAlibaba Cloudのデータベースを管理するWebブラウザベースのツールを起動します。

作成したDatabase Account `adb_test` とパスワードを入力し、 `Test Connection` で接続が問題ない事を確認し、Loginします。

![dms.alibabacloud.com__spm5176.19908259.0.0.3f5fa33ayOQkNgregionIdap-northeast-1dbTypemysqlinstanceIdrm-0iw7786r3ihd2893vinstanceSourceRDS.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/25772/59e534ab-4097-cd22-1970-4f00b8ccfb1b.png)

テストデータをインポートします。

`Data Import` の画面が用意されており、SQLファイルを投入し、Submit します。

![dms.alibabacloud.com__spm5176.19908259.0.0.3f5fa33ayOQkNgregionIdap-northeast-1dbTypemysqlinstanceIdrm-0iw7786r3ihd2893vinstanceSourceRDS_(6).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/25772/5f691cc3-20bd-65ad-0405-a93f26a93ad5.png)

確認画面を経て、Taskの実行を行います。スケジュールで行うか、即時実行を行うか。今回は即時実行で行いました。

![dms-ap-northeast-1.alibabacloud.com___uid5160309003758438_regionap-northeast-1_fromcn-hangzhouspm5176.19908978.0.0.6fb97d33d6XjmMinstanceSourceRDStypeconsole_(8).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/25772/ce18774c-7451-c7e5-e7d1-ba3fb632f1fe.png)

`world` データベースが作成され、データの中身も確認出来ることが確認できれば、完了になります。

![dms.alibabacloud.com__spm5176.19908259.0.0.3f5fa33ayOQkNgregionIdap-northeast-1dbTypemysqlinstanceIdrm-0iw7786r3ihd2893vinstanceSourceRDS_(9).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/25772/82d22175-d2e9-7f6e-b4a0-662cce0ac1a8.png)

## RDSからExport

Web ブラウザ上からDatabase のデータをエクスポートします。

データエクスポートの画面へ移り、データベース名や出力テーブルの単位などを選択します。

今回は、contryテーブルのみをエクスポートしました。

![dms-ap-northeast-1.alibabacloud.com___uid5160309003758438_regionap-northeast-1_fromcn-hangzhouspm5176.19908978.0.0.6fb97d33d6XjmMinstanceSourceRDStypeconsole_(2).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/25772/ffc50238-f35e-3e1d-cbb7-69c31b80243d.png)

作業指示リストにチケットとして反映され、エクスポートタスクが実行されます。

その後、ファイルのダウンロードを行い、エクスポートデータを取得可能となります。

![dms-ap-northeast-1.alibabacloud.com___uid5160309003758438_regionap-northeast-1_fromcn-hangzhouspm5176.19908978.0.0.6fb97d33d6XjmMinstanceSourceRDStypeconsole_(3).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/25772/81b623a7-170c-2b3e-3aa7-fd61af71754d.png)

UIも分かりやすく、エクスポートが簡単に出来ました。

タスクの指定を細かく行うことで、定期的なエクスポートも可能なようでした。

## RDS内でSQL操作

SQL Consoleを利用していきます。接続しているデータベースに対して、クエリを発行できます。

コンソール上ではとても細かい設定が可能で、Format機能や実行計画を簡易的に呼べたしたり、実行結果をExcelやCSV、選択した箇所のみをInsert文でコピーしてくれる機能などのあったら嬉しい機能が満載でした。特に、実行後のデータを視覚的に出来るVisualoizeボタンは、数値だけで見ることでは分からない部分も発見につながる可能性があり、とても使い勝手が良いです。

いくつかのSQLを実行していきます。

### **1. 国別の都市数ランキング**

世界の各国には、大小さまざまな都市があります。どの国が最も多くの都市を持っているのかをランキング形式で表示するSQLクエリ

![dms-ap-northeast-1.alibabacloud.com___uid5160309003758438_regionap-northeast-1_fromcn-hangzhouspm5176.19908978.0.0.6fb97d33d6XjmMinstanceSourceRDStypeconsole_(4).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/25772/6d085e61-07b3-f6f3-e332-b3505ed493de.png)

BarChartを表示しています。

![dms-ap-northeast-1.alibabacloud.com___uid5160309003758438_regionap-northeast-1_fromcn-hangzhouspm5176.19908978.0.0.6fb97d33d6XjmMinstanceSourceRDStypeconsole_(9).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/25772/4d2bc461-e71b-bb9f-cb7d-0bdadf9a000f.png)

### **国別言語の話者数ランキング**

世界各国で話されている言語の中で、最も多くの人々によって話されている言語は何かを見つけることができます。これは、**`Country`**テーブルと**`Language`**テーブルを結合して計算します。

![dms-ap-northeast-1.alibabacloud.com___uid5160309003758438_regionap-northeast-1_fromcn-hangzhouspm5176.19908978.0.0.6fb97d33d6XjmMinstanceSourceRDStypeconsole_(5) 1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/25772/12d1aa7d-b4f5-03a2-4224-c4b89e4f5bc1.png)

データの使い方としては余り正しくありませんが、レーダーチャートを表示しています。

![dms-ap-northeast-1.alibabacloud.com___uid5160309003758438_regionap-northeast-1_fromcn-hangzhouspm5176.19908978.0.0.6fb97d33d6XjmMinstanceSourceRDStypeconsole_(6).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/25772/7b0ab581-b60e-f818-076b-5ba6cafba418.png)

### **人口密度が高い国ランキング**

国の人口と面積を比較することで、人口密度が高い国をランキングできます。これは、**`Country`**テーブルから計算することが可能です。

![dms.alibabacloud.com__spm5176.19908259.0.0.3f5fa33ayOQkNgregionIdap-northeast-1dbTypemysqlinstanceIdrm-0iw7786r3ihd2893vinstanceSourceRDS_(8).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/25772/24d6db40-0638-d390-03de-b67b7f69dd73.png)

Pie Chartで表示しています。

![dms-ap-northeast-1.alibabacloud.com___uid5160309003758438_regionap-northeast-1_fromcn-hangzhouspm5176.19908978.0.0.6fb97d33d6XjmMinstanceSourceRDStypeconsole_(5).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/25772/ecde7c2c-5be3-2be3-2e5c-ab4abbe9acda.png)

### **GDPランキング**

国ごとのGDP（国内総生産）をランキング形式で表示します。これは、経済の大きさや国の富を比較する一つの方法です。

![dms-ap-northeast-1.alibabacloud.com___uid5160309003758438_regionap-northeast-1_fromcn-hangzhouspm5176.19908978.0.0.6fb97d33d6XjmMinstanceSourceRDStypeconsole_(7).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/25772/bd83c1e5-b901-3951-7c93-565fc3d2647d.png)

Word Cloud を表示しています。

![dms-ap-northeast-1.alibabacloud.com___uid5160309003758438_regionap-northeast-1_fromcn-hangzhouspm5176.19908978.0.0.6fb97d33d6XjmMinstanceSourceRDStypeconsole_(15).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/25772/f9c216d5-2d0f-2a97-d98e-cb56d6a9c004.png)

## まとめ

DMSを利用することで、データベースの管理から簡易的なBIツールとしても利用する事が出来ました。様々なデータベースツールを使ってきましたが、速度も早く使い勝手やUIはとても良かった。今後もAlibaba Cloudでデータベース関連を利用する際は利用していきます。