Amazon RDS for MySQL

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

Looker では、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 パラメータ グループ](#aws_step_4) を変更し、read_only パラメータを 0 に設定する必要があります。

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

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

ステップ 4

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

ステップ 5

DB パラメータ グループ ファミリーDB パラメータ グループ名を選択し、DB パラメータ グループの説明を入力します。[作成] をクリックします。

ステップ 6

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

ステップ 7

[Filters] の [Parameters] 欄で &readt;read_only" を検索します。パラメータ値を 0 に変更します。[変更を保存] をクリックします。

ステップ 8

リードレプリカの作成が完了したら、データベース インスタンスのリストからレプリカを選択し、[Instance Action] ボタンをクリックして、インスタンス アクションの [Modify] を選択します。

ステップ 9

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

ステップ 10

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

機能のサポート

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

Looker の最新リリースでは、MySQL は次の Looker 機能をサポートしています。

次のステップ

データベースの構成が完了したら、こちらの手順に沿って Looker からデータベースに接続できます。