お客様がホストする Looker インスタンスからのデータのエクスポート

セルフホスト型の Looker インスタンスの管理者は、インフラストラクチャ管理のオーバーヘッドを、利便性の向上、機能の可用性の向上、マネージド サービスの信頼性に置き換えることを主な目的として、Looker ホスト型環境への移行を検討する場合があります。Looker ホスト型のインスタンスを利用することで、Looker アプリケーションに関連するすべての必要な IT 機能が実行されるため、インストール、構成、メンテナンスに必要な労力を大幅に削減できます。

セルフホスト型インスタンスを Looker ホスト型環境に移行する主な手順は次のとおりです。

  1. 取り込みと設定: Looker チームにチケットを発行し、Looker On-Prem Migration アンケートに回答します。Looker チームは、アンケートの回答に基づいて新しいホスト型インスタンスを作成します。
  2. 暗号化: Looker SRE が GnuPG(GPG)鍵ペアを生成し、公開鍵を共有します。
  3. エクスポート: Looker インスタンスを停止し、そのデータ(データベース、ファイル システム、顧客管理の鍵(CMK))をエクスポートします。
  4. データ転送とインポート: Looker チームがバックアップを Looker ホスト型インスタンスにインポートして検証します。

このページでは、ステップ 3: エクスポート に必要なタスクを行う方法について説明します。

始める前に

このページのスクリプトを使用してインスタンスのデータをバックアップするには、Looker インスタンス、データベース、暗号化構成が移行要件を満たしていることを確認する必要があります。

必要な構成

このページで説明するスクリプトを実行するには、次の Looker バージョンとデータベース バージョンが必要です。

  • Looker インスタンスは、サポートされている Looker リリース バージョンを実行している必要があります。
  • インスタンスは、MySQL バージョン 8.0.0 以降と互換性のあるデータベースを使用する必要があります。これにより、エクスポートされたデータベース スキーマ ファイルを Looker で使用できます。

AWS KMS を使用している場合は、Looker の暗号鍵の変更のドキュメント ページの手順に沿って、Looker の AES-256 GCM 暗号化に移行します。

データの適切な保存と文字の表示を確保するには、データベースの照合順序を utf8mb4(推奨)または utf8 に設定する必要があります。他の照合順序を使用すると、特殊文字を保存するときにデータが破損したり、エラーが発生したりする可能性があります。

移行のためにインスタンスを評価する

セルフホスト型の Looker インスタンスを Looker ホスト型の Looker インスタンス(オリジナル)に移行できるかどうかを判断するには、インスタンスのデータベースとファイル システムのサイズとパフォーマンスを評価する必要があります。この評価では、バックアップ生成プロセス中に発生するデータ抽出を移行元の環境で処理できるかどうかも評価します。この情報は、Looker チームがターゲットの Looker ホスト型インスタンスに十分なリソースを割り当てるのに役立ちます。

評価を行うには、Looker インスタンスのコンピューティング使用量とファイル システムのパフォーマンスを評価するための Looker スクリプトを含む GitHub リポジトリのクローンを作成する必要があります。このスクリプトは Go Looker SDK に依存しており、GitHub の Looker O2C Migration Evaluation リポジトリで入手できます。

以降のセクションでは、インスタンスを評価するスクリプトを実行するために必要な手順について説明します。これには次のタスクが含まれます。

  1. スクリプトを含むリポジトリのクローンを作成します。
  2. API 認証情報を生成します。
  3. コマンドを実行してコンピューティング使用量を確認します。
  4. コマンドを実行してファイル システムのパフォーマンスを確認します。

評価ツールをインストールする

Looker インスタンス データをバックアップするマシンに、次のツール、言語、SDK をインストールします。

  1. Git
  2. Go プログラミング言語
  3. Go Looker SDK

Looker O2C Migration Evaluation リポジトリのクローンを作成する

評価スクリプトを含むリポジトリのクローンを作成するには、分析とバックアップを実行するユーザーのホーム ディレクトリから次のコマンドを実行します。

git clone https://github.com/looker-open-source/looker-o2c-migration-tool.git

API 認証情報を生成する

評価スクリプトは Looker SDK を使用してデータを取得します。これは、ネットワーク経由で Looker サーバーにリクエストを送信する API クライアントとして機能します。スクリプトを実行する管理ユーザーには、Looker API クライアント ID とクライアント シークレットが必要です。Looker 管理者アカウントの API 認証情報を生成する手順は次のとおりです。

  1. [管理] パネルの [ユーザー] ページに移動します。
  2. アカウントの [編集] を選択します。
  3. アカウントの詳細ページで、[API3 鍵] セクションを見つけて [鍵を編集] を選択します。
  4. [新しい API キー] を選択します。
  5. Looker に [クライアント ID] と [クライアント シークレット] が表示されます。これらの値をコピーして安全な場所に保存します。

コンピューティング使用量情報を生成する

移行評価スクリプトを使用してインスタンスのコンピューティング使用量に関する情報を返すには、Looker アプリケーションの API エンドポイントに直接ネットワーク接続されているマシンで次のコマンドを実行します。

cd looker-o2c-migration-tool
go run main.go --client-id API_CLIENT_ID --client-secret API_CLIENT_SECRET --looker-instance-address LOOKER_INSTANCE_ADDRESS --output-csv-path OUTPUT_CSV_PATH --ssl=SSL

次のように置き換えます。

  • API_CLIENT_ID: 前のステップで取得したクライアント ID。
  • API_CLIENT_SECRET: 前のステップで取得したクライアント シークレット。
  • LOOKER_INSTANCE_ADDRESS: プロトコルを含む Looker インスタンスのアドレス。
  • OUTPUT_CSV_PATH: CSV 出力のパス(例: /content/compute_usage_info.csv)。
  • SSL: マシンと Looker インスタンス間の接続で SSL 証明書を使用するかどうか。デフォルト値は true です。

このコマンドは、Looker インスタンスの使用状況の詳細を含む CSV ファイルを出力します。

ファイル システムのパフォーマンス情報を生成する

このスクリプトは、個々のモデル関連ディレクトリのサイズとファイル数、ディスク書き込み速度テストを表示します。Looker アプリケーションのインストールのドキュメント ページの説明に従って、Looker がユーザー名 looker のユーザーのホームディレクトリにインストールされていることを前提としています。

移行評価スクリプトを使用してインスタンスのファイル システムのパフォーマンスに関する情報を返すには、Looker インスタンスがホストされているマシンで次のコマンドを実行します。

cd looker-o2c-migration-tool
go run main.go --file-system-evaluation --output-csv-path OUTPUT_CSV_PATH

次のように置き換えます。

  • OUTPUT_CSV_PATH: CSV 出力のパス(例: /content/fs_perf_info.csv)

このコマンドは、Looker インスタンスのファイル システムのパフォーマンスを含む CSV ファイルを出力します。

バックアップ用にインスタンスを準備する

このページで説明するスクリプトを実行するために必要なパッケージと依存関係をインストールして、インスタンスデータのバックアップを準備します。環境変数を設定して、コマンドの記述を簡素化することもできます。

依存関係をインストールして確認する

Looker インスタンス データのバックアップに必要な依存関係をインストールする場合は、Linux ディストリビューションの標準のパッケージ マネージャーを使用します。次のバージョンは Debian 12(Bookworm) で提供されるパッケージに対応しており、必要な各パッケージの最小バージョンを表しています。

Looker インスタンス データをバックアップするマシンに次のパッケージをインストールします。

  1. bash 5.2.15

  2. gpg 2.2.40(GnuPG)- バックアップ生成プロセスでは、Looker チームと共有する前に gpg を使用してデータベースとファイル システムのバックアップを暗号化します。

  3. libgcrypt 1.10.2

  4. Gpg-agent 2.2.40(GnuPG)

  5. GNU tar 1.34

  6. gzip 1.12

  7. md5sum 9.1(GNU coreutils)

  8. GNU grep 3.11(PCRE2 10.42 2022-12-11 以降をサポート)

  9. GNU sed 4.9

  10. mariadb-client-core(MySQL 8.X に接続する必要があります)

たとえば、Debian ベースの Linux システムに必要なパッケージをインストールするには、次のコマンドを実行します。

sudo apt-get update
sudo apt-get install -y \
    bash \
    gnupg \
    libgcrypt20 \
    gnupg-agent \
    tar \
    gzip \
    coreutils \
    grep \
    sed \
    mariadb-client-core

変数を定義する

次のコマンドは、バックアップ生成プロセス全体で使用される変数を定義します。追加のコマンドを実行する予定のターミナルで構成します。

環境変数: バックアップ ディレクトリのパスを設定する

次のコマンドは、ファイルの作成先となるバックアップ ディレクトリのパスを設定します。ディレクトリ固有のバックアップ生成タスクを実行する予定のターミナルで、次のコマンドを実行します。

BACKUP_DIRECTORY="DIRECTORY_PATH"
BACKUP_DIRECTORY="${BACKUP_DIRECTORY%/}"

次のように置き換えます。

  • DIRECTORY_PATH: バックアップ ファイルが作成されるパス。このディレクトリがバックアップを保持するのに十分な大きさであることを確認してください。パスの先頭に / を含めないでください。

環境変数: ファイル システムのバックアップのソースパスを設定する

ファイル システムのバックアップのソースパスの変数定義では、looker が Looker アプリケーションをインストールしたユーザーのユーザー名であり、Looker アプリケーションのインストールのドキュメントページの説明に従って、ユーザーのホームディレクトリにインストールされていることを前提としています。別のディレクトリに Looker をインストールした場合は、変数を変更する必要があります。Looker ファイル システムのバックアップを実行するターミナルで、この変数を設定します。

  LOOKER_USER="looker"
  ROOT_LOOKER_FS_DIRECTORY="$(getent passwd "$LOOKER_USER" | cut -d: -f 6)"

環境変数: 新しい Looker インスタンスを定義する

インポートするインスタンスの名前と一意の ID を表す変数を定義します。これらの変数の値は Looker チームから提供されます。

export luid='LOOKER_HOSTED_INSTANCE_ID'
export customer='LOOKER_HOSTED_INSTANCE_NAME'

次のように置き換えます。

  • LOOKER_HOSTED_INSTANCE_ID: 移行先の Looker インスタンスの一意の識別子
  • LOOKER_HOSTED_INSTANCE_NAME: 移行先の新しい Looker インスタンスの名前

環境変数: 暗号鍵

次のコマンドは、インスタンスに公開 GPG 鍵をインストールします。インスタンスのバックアップ コマンドを実行するターミナルで構成します(この変数の値は Looker から提供されます)。

base64_encryption_key="BASE64_ENCRYPTION_KEY"

次のように置き換えます。

  • BASE64_ENCRYPTION_KEY: バックアップ スクリプトがバックアップの暗号化に使用する暗号鍵。この変数の値は Looker チームから提供されます。

公開暗号鍵を生成する

次のコマンドは、インスタンスに公開 pgp 鍵をインストールします。バックアップ スクリプトはこの鍵を使用してバックアップを暗号化します。インスタンスをバックアップするコマンドを実行するターミナルで構成します。

echo -n "${base64_encryption_key}" | base64 -d | gpg --import

インスタンス データをバックアップする

次のコマンドを実行して、インスタンスのファイル システムとデータベース スキーマの重要なコンポーネントを安全にパッケージ化し、新しい Looker ホスト型の Looker インスタンス(オリジナル)に転送して復元できるようにします。スクリプトはバックアップを実行し、md5sum を使用してバックアップの整合性を検証します。最後に、GnuPG を使用してバックアップを暗号化し、結果を MD5 ファイル形式でエクスポートします。

インスタンスのファイル システム データをバックアップする

バックアップ データをエクスポートするディレクトリから、環境変数を設定したターミナルで次のコマンドを実行します。移行先の Looker ホスト型インスタンスのタイプのタブを選択します。

Looker(オリジナル)

このコマンドを実行して、データ検証またはワークフローの自動化に使用されるカスタム Git サーバーサイド フックがバックアップに含まれていることを確認します。

cd "${BACKUP_DIRECTORY}"

function findHookPath() {
rootPath=$1

find \
    ${rootPath}/models{-user-*,}/*/.git/config \
    -maxdepth 0 \
    -type f \
    -xtype f \
  | xargs -I {} grep hooksPath {} \
  | sort \
  | uniq \
  | sed -r -e 's/^.+hooksPath = //g' \
  | xargs -I {} dirname {} \
  | sort \
  | uniq \
  | sed -r -e "s#\.\.\/\.\.\/#${rootPath}/#g"

}

hooksPath=$(findHookPath "${ROOT_LOOKER_FS_DIRECTORY}" | sort | uniq | head -1)

このコマンドを実行して、必要なディレクトリをすべて一覧表示してバックアップします。

time find "${ROOT_LOOKER_FS_DIRECTORY}" \
  -maxdepth 1 \
  -type d \
  \( \
         -name marketplace \
      -o -name bare_models \
      -o -name deploy_keys \
      -o -name models \
      -o -name remote_dependencies \
      -o -name models-self-service \
      -o -name "models-user-*" \
      -o -wholename "${hooksPath}" \
  \) | tar \
  --gzip \
  --create \
  --file="${customer}_looker_fs_backup.tar.gz" \
  --files-from=-

このコマンドを実行して、暗号化前にバックアップの「フィンガープリント」を取得します。

time md5sum "${customer}_looker_fs_backup.tar.gz" > "${customer}_fs_backup.md5"

このコマンドを実行して、バックアップを暗号化します。

time gpg --encrypt --yes \
  --output "${customer}_looker_fs_backup.tar.gz.enc" \
  --recipient "looker-devops+migration-${luid}@google.com" \
  "${customer}_looker_fs_backup.tar.gz"

このコマンドを実行して、暗号化後に別の「フィンガープリント」を取得します。

time md5sum "${customer}_looker_fs_backup.tar.gz.enc" >> "${customer}_fs_backup.md5"

チェックサムは、Looker がデータ バックアップの整合性を検証するのに役立ちます。

Looker(Google Cloud コア)

このコマンドを実行して、データ検証またはワークフローの自動化に使用されるカスタム Git サーバーサイド フックがバックアップに含まれていることを確認します。

cd "${BACKUP_DIRECTORY}"

function findHookPath() {
rootPath=$1

find \
    ${rootPath}/models{-user-*,}/*/.git/config \
    -maxdepth 0 \
    -type f \
    -xtype f \
  | xargs -I {} grep hooksPath {} \
  | sort \
  | uniq \
  | sed -r -e 's/^.+hooksPath = //g' \
  | xargs -I {} dirname {} \
  | sort \
  | uniq \
  | sed -r -e "s#\.\.\/\.\.\/#${rootPath}/#g"

}

hooksPath=$(findHookPath "${ROOT_LOOKER_FS_DIRECTORY}" | sort | uniq | head -1)

このコマンドを実行して、必要なディレクトリをすべて一覧表示してバックアップします。

time find "${ROOT_LOOKER_FS_DIRECTORY}" \
  -maxdepth 1 \
  -type d \
  \( \
         -name marketplace \
      -o -name bare_models \
      -o -name deploy_keys \
      -o -name models \
      -o -name remote_dependencies \
      -o -name models-self-service \
      -o -name "models-user-looker" \
      -o -wholename "${hooksPath}" \
  \) | tar \
  --gzip \
  --create \
  --file="${customer}_looker_fs_backup.tar.gz" \
  --files-from=-

このコマンドを実行して、暗号化前にバックアップの「フィンガープリント」を取得します。

time md5sum "${customer}_looker_fs_backup.tar.gz" > "${customer}_fs_backup.md5"

このコマンドを実行して、バックアップを暗号化します。

time gpg --encrypt --yes \
  --output "${customer}_looker_fs_backup.tar.gz.enc" \
  --recipient "looker-devops+migration-${luid}@google.com" \
  "${customer}_looker_fs_backup.tar.gz"

このコマンドを実行して、暗号化後に別の「フィンガープリント」を取得します。

time md5sum "${customer}_looker_fs_backup.tar.gz.enc" >> "${customer}_fs_backup.md5"

チェックサムは、Looker がデータ バックアップの整合性を検証するのに役立ちます。

このスクリプトは、移行のファイル システム部分に対して次のファイルを生成します。

  1. ${customer}_looker_fs_backup.tar.gz.enc: 暗号化された圧縮ファイル システムのバックアップ。
  2. ${customer}_fs_backup.md5: 検証用のチェックサムを含むファイル。

インスタンス データベース スキーマをバックアップする

これらのコマンドは、移行ツールが Looker インスタンスの内部データベースに接続できるようにする一時構成ファイルを作成して、Looker インスタンスのデータベース スキーマをバックアップするための環境を準備します。このスクリプトは、ユーザー名やホスト名などのセンシティブ データをコマンドに直接渡すのではなく、構成ファイルに書き込みます。これにより、mysqldumpmysql などのツールで読み取ることができます。

次のコマンドを実行して、一時構成ファイルを作成し、さまざまな設定を行います。

export database_name="DATABASE_SCHEMA_NAME"
temporary_cnf_file="$(mktemp --tmpdir=. --suffix .cnf)"
echo "[client]
host=DATABASE_HOST
port=DATABASE_PORT
user=DATABASE_USER
password=PASSWORD

[mariadb-dump]
no-sandbox

[mysql]
no-auto-rehash

[mysqldump]
no-tablespaces
loose_set-gtid-purged=OFF
single-transaction
quick
max_allowed_packet=1G
ignore-table=${database_name}.LookerQ_LookerBQ_ACTIVEMQ_ACKS
ignore-table=${database_name}.LookerQ_LookerBQ_ACTIVEMQ_LOCK
ignore-table=${database_name}.LookerQ_LookerBQ_ACTIVEMQ_MSGS

[Server-specific settings - mostly for mysqld/mariadbd processes]
max_allowed_packet = 1024M
" > ${temporary_cnf_file}

次のように置き換えます。

  • DATABASE_HOST: Looker データベースの DNS または IP。
  • DATABASE_PORT: データベース ポート。
  • DATABASE_USER: エクスポートを実行するデータベース ユーザー名。
  • PASSWORD: エクスポートを実行するユーザーのパスワードの平文値。Looker はこのパスワードを確認しません。ただし、プレーンテキストのパスワード要件を省略する場合は、この変数を空白のままにすると、バックアップ コマンドの実行時にパスワードの入力を強制的に求められます。
  • DATABASE_SCHEMA_NAME: データベースまたはスキーマの名前。

データベースへの接続に SSL 証明書が必要な場合は、一時構成ファイルに次のパスを追加します。

認証局(CA)ファイルのパスを設定します。

ssl-ca=/etc/mysql/certs/ca.pem

クライアント SSL 証明書のパスを設定します。

ssl-cert=/etc/mysql/certs/client-cert.pem

クライアント SSL 秘密鍵のパスを設定します。

ssl-key=/etc/mysql/certs/client-key.pem

MySQL データベースの場合は、SSL を必須とし、サーバー証明書を検証します。

loose-ssl-mode=VERIFY_CA

MariaDB データベースの場合は、SSL を必須とし、サーバー証明書を検証します。

loose-ssl-verify-server-cert=ON

次のコマンドを実行して、データベース スキーマのバックアップを実行、暗号化、検証します。

バックアップを保存するディレクトリに移動します。

cd "${BACKUP_DIRECTORY}"

次のコマンドを実行して、データベースをバックアップします。

time mysqldump \
    --defaults-file="${temporary_cnf_file}" \
    "${database_name}" \
  | gzip > "${customer}_looker_db_backup.sql.gz"

このコマンドを実行して、暗号化前にバックアップの「フィンガープリント」を取得します。

time md5sum "${customer}_looker_db_backup.sql.gz" >> "${customer}_db_backup.md5"

このコマンドを実行して、バックアップを暗号化します。

time gpg --encrypt --yes \
    --output "${customer}_looker_db_backup.sql.gz.enc" \
    --recipient "looker-devops+migration-${luid}@google.com" \
    "${customer}_looker_db_backup.sql.gz"

このコマンドを実行して、暗号化後に別の「フィンガープリント」を取得します。

time md5sum "${customer}_looker_db_backup.sql.gz.enc" >> "${customer}_db_backup.md5"

このスクリプトは、移行のデータベース スキーマ部分に対して次のファイルを生成します。

  1. ${customer}_looker_db_backup.sql.gz.enc: 暗号化された圧縮データベース スキーマのバックアップ。
  2. ${customer}_db_backup.md5: 検証用のチェックサムを含むファイル。

顧客管理の暗号鍵(CMK)を暗号化する

次のコマンドは、CMK の検証、フォーマット、暗号化を行います。この暗号化を行わないと、移行したデータベースを新しい Looker 環境で復号できません。

注意: 次の CMK コマンドは、内部データベースをホストするマシンまたは Looker インスタンスをホストするマシンのいずれか 1 回だけ実行する必要があります。両方のマシンで実行しないでください。

まず、現在の CMK を使用して変数を設定します。これは base64 形式にする必要があります。

CMK="CUSTOMER_CMK_KEY"

次のように置き換えます。

  • CUSTOMER_CMK_KEY: CMK の値

次に、次のコマンドを実行して、CMK 鍵ファイルの生成、復号された CMK のチェックサムの生成、CMK ファイルの暗号化、暗号化された CMK のチェックサムの生成を行います。

echo -n "${CMK}" > "${customer}_looker_cmk_key"

time md5sum "${customer}_looker_cmk_key" >> "${customer}_cmk_key.md5"

time gpg --encrypt --yes \
  --output "${customer}_looker_cmk_key.enc" \
  --recipient "looker-devops+migration-${luid}@google.com" \
  "${customer}_looker_cmk_key"

time md5sum "${customer}_looker_cmk_key.enc" >> "${customer}_cmk_key.md5"

このスクリプトは、移行の CMK 部分に対して次のファイルを生成します。

  • ${customer}_looker_cmk_key.enc: 暗号化された CMK ファイル
  • ${BACKUP_DIRECTORY}/${customer}_cmk_key.md5: 検証用のチェックサムを含むファイル

移行ファイルを準備する

この時点で実行したスクリプトにより、次のファイルが生成されています。

  • compute_usage_info.csv: インスタンスのコンピューティング使用量に関する情報を含む CSV ファイル
  • fs_perf_info.csv: インスタンスのファイル システムのパフォーマンスに関する情報を含む CSV ファイル
  • ${customer}_looker_fs_backup.tar.gz.enc: 暗号化された圧縮ファイル システムのバックアップ
  • ${customer}_fs_backup.md5: 検証用のチェックサムを含むファイル
  • ${customer}_looker_db_backup.sql.gz.enc: 暗号化された圧縮データベース スキーマのバックアップ
  • ${customer}_db_backup.md5: 検証用のチェックサムを含むファイル
  • ${customer}_cmk_key.md5: 検証用のチェックサムを含むファイル
  • ${customer}_looker_cmk_key.enc: 暗号化された CMK ファイル

MD5 ファイルを ${customer}_backup.md5 という 1 つのファイルに結合するには、バックアップ ディレクトリで次のコマンドを実行します。

cat \
    "${customer}_db_backup.md5" \
    "${customer}_fs_backup.md5" \
    "${customer}_cmk_key.md5" \
  | sort | uniq \
  > "${customer}_backup.md5"

バックアップ アーティファクトを検証する

バックアップ ファイルが完全で安全であり、移行の準備ができていることを確認するには、Looker On-Prem Data Verifier ツールを使用します。このツールは、MD5 チェックサム、GPG 暗号鍵、データベース構造、CMK の有効性の確認など、包括的な検証を行います。

検証ツールをインストールする

検証ツールを実行するには、マシンに GoGnuPG がインストールされている必要があります。

リポジトリのクローンを作成してツールをビルドするには、次のコマンドを実行します。

git clone https://github.com/looker-open-source/customer-scripts.git
cd customer-scripts/onprem-data-verifier
go build -o onprem-verifier main.go

検証ツールを実行する

このツールは、バックアップ ファイルを含むディレクトリで動作します。ツールの実行前に、必要なファイル(4 つの暗号化されたアーティファクトと 3 つの復号されたアーティファクト)が ${BACKUP_DIRECTORY} にあることを確認してください。

次のコマンドを実行して、アーティファクトを検証します。

./onprem-verifier \
  --backupDir "${BACKUP_DIRECTORY}" \
  --customerName "${customer}" \
  --luid "${luid}"

成功すると、ツールは metadata.json ファイルを生成します。バックアップ アーティファクトを Looker チームに引き渡す際は、このファイルを含める必要があります。

ファイルを引き渡す

バックアップと暗号化のプロセスの最後に、次のファイルが作成されます。

  • ${customer}_looker_db_backup.sql.gz.enc
  • ${customer}_looker_fs_backup.tar.gz.enc
  • ${customer}_looker_cmk_key.enc
  • ${customer}_backup.md5
  • metadata.json
  • compute_usage_info.csv
  • fs_perf_info.csv

これらのファイルを Looker チームに提供して、Looker ホスト型インスタンスにインポートします。