Prestoは、オープンソースの分散SQLクエリエンジンであり、さまざまなデータソースに対するインタラクティブな分析クエリをサポートしています。MySQL Connectorを介して、PrestoはOceanBaseデータベースに接続し、データソースを跨ぐ連携クエリやデータ分析を実現できます。本記事では、Dockerを使用してPrestoをデプロイし、OceanBaseデータベースに接続する方法について説明します。
バージョン互換性
コンポーネント |
バージョン要件 |
|---|---|
| OceanBase | ≥ 4.2.5 |
前提条件
Prestoを使用する前に、次のことを確認してください:
- Dockerがインストール済みであること。Dockerのインストールについては、Docker公式ドキュメントを参照してください。
- OceanBaseデータベースのデプロイが完了し、MySQLモードのユーザーテナントが作成されていること。ユーザーテナントの作成方法の詳細については、テナントの作成を参照してください。
手順
ステップ1:OceanBaseデータベースの接続文字列を取得する
OceanBaseデータベースのデプロイ担当者から接続文字列を取得します。例:
obclient -h$host -P$port -u$user_name -p$password -D$database_name
パラメータ説明:
$host:接続IPアドレス。ODP接続の場合はODPアドレスを使用し、直接接続の場合はOBServer IPを使用します。$port:接続ポート。ODPのデフォルトは2883、直接接続のデフォルトは2881です。$database_name:データベース名。注意
テナントに接続するユーザーには、データベースに対する
CREATE、INSERT、DROPおよびSELECT権限が付与されていなければなりません。ユーザー権限の詳細については、MySQLモードの権限分類を参照してください。$user_name:接続アカウント。ODP形式:ユーザー@テナント#クラスタまたはクラスタ:テナント:ユーザー。直接接続形式:ユーザー@テナント。$password:アカウントのパスワード。
接続文字列の詳細については、OBClientを使用してOceanBaseテナントに接続するを参照してください。
例:
obclient -hxxx.xxx.xxx.xxx -P2881 -utest_user001@mysql001 -p****** -Dtest
ステップ2:Presto設定ファイルの準備
ホスト上にPrestoの設定ディレクトリを作成し、そのディレクトリに移動します:
mkdir -p ~/presto/catalog cd ~/prestoconfig.propertiesファイルを作成し、Prestoの基本設定を記述します:
coordinator=true node-scheduler.include-coordinator=true http-server.http.port=8080 discovery-server.enabled=true discovery.uri=http://127.0.0.1:8080jvm.configファイルを作成し、JVM起動パラメータを記述します:
-server -Xmx2G -XX:+UseG1GC -XX:G1HeapRegionSize=32M -XX:+UseGCOverheadLimit -XX:+ExplicitGCInvokesConcurrent -XX:+HeapDumpOnOutOfMemoryError -XX:+ExitOnOutOfMemoryError -Djdk.attach.allowAttachSelf=truecatalog/oceanbase.propertiesファイルを作成し、OceanBase接続情報を設定します:connector.name=mysql connection-url=jdbc:mysql://$host:$port?useSSL=false&serverTimezone=UTC connection-user=$user_name connection-password=$password<user_name> と
を実際のOceanBase接続情報に置き換えてください。 パラメータ説明: connector.name:コネクタタイプ。mysqlを使用してOceanBaseに接続します。connection-url:JDBC接続文字列。$hostと$portを実際のOceanBase接続アドレスとポートに置き換えてください。詳細はステップ1を参照してください。connection-user:OceanBase接続ユーザー名。形式はユーザー@テナントです。詳細はステップ1を参照してください。connection-password:OceanBase接続パスワード。詳細はステップ1を参照してください。
ステップ3:Prestoコンテナのデプロイ
Presto Dockerイメージを取得します:
docker pull prestodb/presto:latestPrestoコンテナを起動し、ローカルの設定ファイルをマウントします:
docker run -d \ --name presto \ -v "$PWD/config.properties:/opt/presto-server/etc/config.properties" \ -v "$PWD/jvm.config:/opt/presto-server/etc/jvm.config" \ -v "$PWD/catalog:/opt/presto-server/etc/catalog" \ prestodb/presto:latestコンテナのログを確認し、Prestoが正常に起動したことを確認します:
docker logs -f prestoログに以下の内容が表示された場合、Prestoは正常に起動しています:
======== SERVER STARTED ========
ステップ4:接続性テスト
Presto CLIにアクセスします:
docker exec -it presto presto-cli現在ロードされているカタログを確認します:
SHOW CATALOGS;実行結果の例:
Catalog ----------- oceanbase system (2 rows)OceanBaseのスキーマを確認します:
SHOW SCHEMAS FROM oceanbase;実行結果の例:
Schema ------------------------ information_schema oceanbase test (3 rows)
結果の検証
Presto CLIで SHOW CATALOGS を実行した際に oceanbase が表示され、SHOW SCHEMAS FROM oceanbase を実行した際にスキーマリストが正常に返される場合、PrestoはOceanBaseデータベースに正常に接続されていることを示します。
その後、SQLクエリを実行してデータアクセス機能を検証できます。例:
SHOW TABLES FROM oceanbase.test;
SELECT * FROM oceanbase.test.your_table_name LIMIT 10;