Amazon RDS for MySQL

ネットワークトラフィックの暗号化

Looker アプリケーションとデータベース間のネットワーク トラフィックを暗号化することをおすすめします。セキュアなデータベースアクセスを可能にするドキュメント ページに記載されているオプションのいずれかを検討してください。

SSL 暗号化の使用を検討している場合は、MySQL RDS のドキュメントをご覧ください。

オプション

パフォーマンス上の理由から、Looker では読み取り専用レプリカ データベース(リードレプリカとも呼ばれます)を使用するのが一般的です。これにより、本番環境データベースが解放され、クエリを遅延させることなく、プライマリ機能を実行できます。

このドキュメントでは、次のいずれかを行う方法を説明します。

  • Looker と連携するように既存のレプリカ データベースを変更する
  • 新しいリードレプリカ データベースを作成し、Looker と連携するように構成する

既存のレプリカの変更

ユーザーとセキュリティ

<some_password_here> を一意の安全なパスワードに変更します。

CREATE USER looker;
SET PASSWORD FOR looker = PASSWORD ('<some_password_here>');
GRANT SELECT ON database_name.* TO 'looker'@'%';

RDS テーブルと一時テーブル

RDS リードレプリカでは、デフォルトで読み取り専用フラグが有効になっており、Looker は一時テーブルに書き込むことができません。Looker が実際に既存のデータを変更することはありませんが、MySQL では一時テーブルを使用するための書き込みアクセス権が引き続き必要です。これは、RDS のフラグを変更することで解決できます。RDS に関するよくある質問:

Q: リードレプリカは、データベースの読み取りオペレーションのみを受け入れることはできますか?

リードレプリカは、リード トラフィックを処理するように設計されています。ただし、上級ユーザーがリードレプリカに対してデータ定義言語(DDL)SQL ステートメントを実行する場合もあります。たとえば、対応するソース DB インスタンスに同じインデックスを追加せずに、ビジネス レポートに使用されるリードレプリカにデータベース インデックスを追加する場合があります

Amazon RDS for MySQL は、リードレプリカに対して DDL SQL ステートメントを許可するように構成できます。特定のリードレプリカに対する読み取り以外のオペレーションを有効にする場合は、read_only パラメータを 0 に設定して、リードレプリカのアクティブな DB パラメータ グループを変更します。

Amazon RDS for PostgreSQL では現在、リードレプリカに対する DDL SQL ステートメントの実行はサポートされていません。

DB パラメータ グループを変更した場合は、変更を有効にするためにリードレプリカを再起動する必要があります。

データベースを作成して権限を付与する

一時データベースを作成し、looker ユーザーに書き込み権限を付与します。MySQL の CREATE TEMPORARY ステートメントは、権限の目的で DB に関連付ける必要があります。

CREATE SCHEMA looker_tmp;
GRANT
  SELECT,
  INDEX,
  INSERT,
  UPDATE,
  DELETE,
  CREATE,
  DROP,
  ALTER,
  CREATE TEMPORARY TABLES
ON looker_tmp.* TO 'looker'@'%';

新しいレプリカの作成

AWS RDS は、バックアップ保持期間が有効になっているデータベース インスタンスでのみリードレプリカを作成できます。

AWS の前に行う手順

ステップ 1

mysql を、プライマリ データベース インスタンスとなるデータベースに追加します。

mysql -h hostname.uid.region.rds.amazonaws.com -P 3306 -u root -p

ステップ 2

looker という名前のユーザーを作成します(<some_password_here> を一意の安全なパスワードに置き換えます)。

CREATE USER looker IDENTIFIED BY '<some_password_here>';

ステップ 3

一時データベースを作成し、Looker に他のデータベースとテーブルの読み取り権限を付与します。通常、Looker は looker_tmp データベースへの書き込みは行いませんが、CREATE TEMPORARY TABLE コマンドを実行するためにこれを使用します。

CREATE SCHEMA looker_tmp;
GRANT
  SELECT,
  INDEX,
  INSERT,
  UPDATE,
  DELETE,
  CREATE,
  DROP,
  ALTER,
  CREATE TEMPORARY TABLES
ON looker_tmp.* TO 'looker'@'%';

GRANT
  SELECT,
  SHOW DATABASES
ON *.* TO 'looker'@'%';

ステップ 4

権限をフラッシュする

FLUSH PRIVILEGES;

AWS の手順

ステップ 1

ログインして AWS ダッシュボードに移動します。[データベース] セクションで、[RDS] を選択します。

ステップ 2

RDS ダッシュボードで、プライマリ データベースとして指定するデータベース インスタンスを選択します。[インスタンスの操作] を選択し、つづいて [リードレプリカを作成] を選択します。

ステップ 3

[リードレプリカ DB インスタンスの作成] ポップアップで、リードレプリカ データベースを構成して [はい。リードレプリカを作成します] を選択します。

ステップ 4

リードレプリカ データベースの作成を待機している間に、DB パラメータ グループを設定できます。このグループに、リードレプリカ データベース インスタンスに適用されるエンジン構成値が格納されます。サイドバーで [DB Parameter Groups] ページを選択し、[Create DB Parameter Group] ボタンを選択します。

ステップ 5

[DB パラメータ グループ ファミリー] と [DB パラメータ グループ名] を選択し、[DB パラメータグループの説明] を入力します。次に、[はい、作成する] を選択します。

ステップ 6

リードレプリカ データベースのパラメータ グループを含む行で虫メガネ アイコンを選択するか、その行を選択して [パラメータを編集] を選択します。

ステップ 7

[フィルタ] の [パラメータ] で、「read_only」を検索します。パラメータ値を 0 に変更します。次に、[Save Changes] を選択します。

ステップ 8

リードレプリカの作成が完了したら、データベース インスタンスのリストからレプリカを選択し、[インスタンス操作] ボタンを選択して、インスタンス操作で [変更] を選択します。

ステップ 9

[DB インスタンスの変更] ポップアップで、DB インスタンスのパラメータ グループを新しいリードレプリカ パラメータ グループに変更します。[すぐに適用] チェックボックスをオンにし、[続行] を選択してから、[DB インスタンスを変更] を選択します。

ステップ 10

MySQL クライアントを使用してリードレプリカ データベース インスタンスに looker に接続し、データがアクセス可能かどうかをテストします。

データベースへの Looker 接続の作成

Looker の [管理者] セクションで [接続] を選択し、[新しい接続] をクリックします。

接続の詳細を入力します。設定の大部分は、ほとんどのデータベース言語に共通するものです。詳細については、Looker をデータベースに接続するのドキュメント ページをご覧ください。

接続が成功したことを確認するには、[テスト] をクリックします。トラブルシューティング情報については、データベース接続のテストのドキュメント ページをご覧ください。

これらの設定を保存するには、[接続] をクリックします。

機能のサポート

一部の機能については、Looker でサポートするには、データベース言語が同じ機能に対応している必要があります。

MySQL は、Looker 24.16 の時点で、次の機能をサポートしています。

機能 サポート対象
サポート レベル
サポート対象
Looker(Google Cloud コア)
いいえ
対称集計
はい
派生テーブル
はい
永続的な SQL 派生テーブル
はい
永続的なネイティブ派生テーブル
はい
安定したビュー
はい
クエリの強制終了
はい
SQL ベースのピボット
はい
タイムゾーン
はい
SSL
はい
Subtotals
はい
JDBC の追加パラメータ
はい
大文字と小文字を区別
いいえ
ロケーション タイプ
はい
リストのタイプ
はい
パーセンタイル
はい
個別のパーセンタイル
はい
SQL Runner の表示プロセス
はい
SQL Runner の説明テーブル
はい
SQL Runner 表示インデックス
はい
SQL Runner Select 10
はい
SQL ランナーの数
はい
SQL の説明
はい
Oauth 認証情報
いいえ
コンテキスト コメント
はい
接続プーリング
いいえ
HLL スケッチ
いいえ
集計認識
はい
増分PDT
はい
ミリ秒
はい
マイクロ秒
はい
マテリアライズド ビュー
いいえ
Approximate Count Distinct
いいえ