Exportar dados de uma instância do Looker hospedada pelo cliente

Os administradores de instâncias do Looker hospedadas pelo cliente podem migrar para um ambiente hospedado pelo Looker principalmente para trocar a sobrecarga da administração de infraestrutura por mais conveniência, maior disponibilidade de recursos e confiabilidade gerenciada. Usar uma instância hospedada pelo Looker reduz muito o esforço necessário para instalar, configurar e manter o aplicativo, porque todas as funções de TI necessárias relacionadas a ele são processadas para você.

A migração de uma instância hospedada pelo cliente para um ambiente hospedado pelo Looker envolve estas etapas principais:

  1. Ingestão e configuração: você abre um tíquete com a equipe do Looker e preenche o questionário de migração local do Looker. A equipe do Looker cria uma nova instância hospedada com base nas suas respostas ao questionário.
  2. Criptografia: os SREs do Looker geram um par de chaves GnuPG (GPG) e compartilham a chave pública com você.
  3. Exportar: você interrompe a instância do Looker e exporta os dados dela (banco de dados, sistema de arquivos e chave gerenciada pelo cliente [CMK]).
  4. Trânsito e importação de dados: a equipe do Looker importa o backup para a instância hospedada pelo Looker e o verifica.

Nesta página, descrevemos como realizar as tarefas necessárias para a Etapa 3: exportação:

Antes de começar

Antes de usar os scripts desta página para fazer backup dos dados da instância, verifique se a instância do Looker, o banco de dados e a configuração de criptografia atendem aos requisitos de migração.

Configurações obrigatórias

As seguintes versões do Looker e do banco de dados são necessárias para executar os scripts descritos nesta página:

  • Sua instância do Looker precisa estar executando uma versão de lançamento do Looker compatível.
  • Sua instância precisa usar um banco de dados compatível com o MySQL versão 8.0.0 ou posterior para que o Looker possa consumir o arquivo de esquema do banco de dados exportado.

Se você estiver usando o AWS KMS, migre para a criptografia AES-256 GCM do Looker seguindo as etapas descritas na página de documentação Como mudar as chaves de criptografia do Looker.

Para garantir o armazenamento adequado de dados e a exibição de caracteres, a ordenação do banco de dados precisa ser definida como utf8mb4 (recomendado) ou utf8. O uso de outras ordenações pode resultar em corrupção de dados ou erros ao salvar caracteres especiais.

Avaliar sua instância para migração

Para determinar se a instância do Looker hospedada pelo cliente pode ser migrada para uma instância do Looker hospedada pelo Looker (original), avalie o tamanho e o desempenho do banco de dados e do sistema de arquivos da instância. Essa avaliação também verifica se o ambiente de origem pode processar a extração de dados que ocorre durante o processo de geração de backup. Essas informações ajudam a equipe do Looker a alocar recursos suficientes para a instância de destino hospedada pelo Looker.

Para realizar a avaliação, clone o repositório do GitHub que contém o script do Looker para avaliar o uso de computação e o desempenho do sistema de arquivos de uma instância do Looker. Esse script depende do SDK do Looker para Go e está disponível no repositório Avaliação da migração do Looker O2C no GitHub.

As seções a seguir descrevem as etapas necessárias para executar o script que avalia sua instância, incluindo as seguintes tarefas:

  1. Clone o repositório que contém o script.
  2. Gere credenciais de API.
  3. Execute o comando para verificar o uso de computação.
  4. Execute o comando para verificar o desempenho do sistema de arquivos.

Instalar ferramentas de avaliação

Instale as seguintes ferramentas, linguagens e SDKs na máquina em que você fará backup dos dados da instância do Looker:

  1. Git
  2. Linguagem de programação Go
  3. SDK do Looker para Go

Clone o repositório de avaliação da migração do Looker O2C

Para clonar o repositório que contém o script de avaliação, execute o seguinte comando no diretório inicial do usuário que vai executar a análise e o backup:

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

Gerar credenciais de API

O script de avaliação usa o SDK do Looker para recuperar dados, atuando como um cliente de API que envia solicitações pela rede ao seu servidor do Looker. O usuário administrador que executa o script precisa ter um ID do cliente e uma chave secreta do cliente da API Looker. Para gerar credenciais da API da sua conta de administrador do Looker, siga estas etapas:

  1. Acesse a página Usuários no painel Administrador.
  2. Selecione Editar na sua conta.
  3. Na página de detalhes da conta, localize a seção Chaves de API3 e selecione Editar chaves.
  4. Selecione Nova chave de API.
  5. O Looker vai mostrar um ID do cliente e uma chave secreta do cliente. Copie esses valores e salve-os em um local seguro.

Gerar informações de uso de computação

Para usar o script de avaliação da migração e retornar informações sobre o uso de computação da sua instância, execute o seguinte comando em uma máquina com uma conexão de rede direta ao endpoint de API do aplicativo Looker:

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

Substitua:

  • API_CLIENT_ID: seu ID do cliente da etapa anterior.
  • API_CLIENT_SECRET: a chave secreta do cliente da etapa anterior.
  • LOOKER_INSTANCE_ADDRESS: o endereço da sua instância do Looker, incluindo o protocolo.
  • OUTPUT_CSV_PATH: o caminho para a saída CSV, como /content/compute_usage_info.csv.
  • SSL: se a conexão entre sua máquina e a instância do Looker deve usar um certificado SSL. O valor padrão é true.

Esse comando gera um arquivo CSV com os detalhes de uso da instância do Looker.

Gerar informações de performance do sistema de arquivos

Esse script mostra o tamanho e a contagem de arquivos de diretórios individuais relacionados ao modelo, além de um teste de velocidade de gravação no disco. Ele pressupõe que o Looker esteja instalado no diretório inicial de um usuário com o nome de usuário looker, conforme descrito na página de documentação Instalar o aplicativo Looker.

Para usar o script de avaliação da migração e retornar informações sobre a performance do sistema de arquivos da sua instância, execute o seguinte comando na máquina em que a instância do Looker está hospedada:

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

Substitua:

  • OUTPUT_CSV_PATH: o caminho para a saída CSV, como /content/fs_perf_info.csv

Esse comando gera um arquivo CSV com o desempenho do sistema de arquivos da instância do Looker.

Preparar a instância para backup

Prepare-se para fazer backup dos dados da instância instalando os pacotes e as dependências necessários para executar os scripts descritos nesta página. Também é possível definir algumas variáveis de ambiente para simplificar a escrita de comandos.

Instalar e verificar dependências

Ao instalar as dependências necessárias para fazer backup dos dados da sua instância do Looker, use o gerenciador de pacotes padrão da sua distribuição do Linux. As versões a seguir correspondem aos pacotes fornecidos no Debian 12 (Bookworm) e representam a versão mínima de cada pacote necessário.

Instale os seguintes pacotes na máquina em que você fará backup dos dados da instância do Looker:

  1. bash 5.2.15

  2. gpg 2.2.40 (GnuPG): o processo de geração de backup usa gpg para criptografar os backups do banco de dados e do sistema de arquivos antes de serem compartilhados com a equipe do Looker.

  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 (com suporte para PCRE2 10.42 2022-12-11 ou mais recente)

  9. GNU sed 4.9

  10. mariadb-client-core (precisa se conectar ao MySQL 8.X)

Por exemplo, execute os comandos a seguir para instalar os pacotes necessários em um sistema Linux baseado em Debian:

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

Definir variáveis

Os comandos a seguir definem algumas variáveis que serão usadas em todo o processo de geração de backup. Configure-os em qualquer terminal em que você planeja executar outros comandos.

Variável de ambiente: definir o caminho do diretório de backup

O comando a seguir define o caminho para o diretório de backup em que os arquivos serão criados. Execute estes comandos em qualquer terminal em que você planeja realizar as tarefas de geração de backup específicas do diretório:

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

Substitua:

  • DIRECTORY_PATH: o caminho onde os arquivos de backup serão criados. Verifique se esse diretório é grande o suficiente para armazenar o backup. Não inclua o / inicial do caminho.

Variável de ambiente: definir o caminho de origem para o backup do sistema de arquivos

A definição de variável para o caminho de origem do backup do sistema de arquivos pressupõe que looker seja o nome de usuário da pessoa que instalou o aplicativo Looker e que a instalação ocorreu no diretório principal do usuário, conforme descrito na página de documentação Instalar o aplicativo Looker. Modifique a variável se você instalou o Looker em um diretório diferente. Defina essa variável no terminal em que você vai executar o backup do sistema de arquivos do Looker:

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

Variável de ambiente: definir nova instância do Looker

Defina variáveis para representar o nome e o ID exclusivo da instância em que você vai importar. A equipe do Looker fornece os valores dessas variáveis.

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

Substitua:

  • LOOKER_HOSTED_INSTANCE_ID: o identificador exclusivo da instância do Looker para onde você vai migrar
  • LOOKER_HOSTED_INSTANCE_NAME: o nome da nova instância do Looker para onde você vai migrar

Variável de ambiente: chave de criptografia

O comando a seguir vai instalar uma chave GPG pública na sua instância. Configure-a em qualquer terminal em que você vai executar os comandos de backup da instância. O Looker vai fornecer o valor dessa variável:

base64_encryption_key="BASE64_ENCRYPTION_KEY"

Substitua:

  • BASE64_ENCRYPTION_KEY: a chave de criptografia que o script de backup usa para criptografar seus backups. A equipe do Looker fornece o valor dessa variável.

Gerar uma chave de criptografia pública

O comando a seguir vai instalar uma chave pública pgp na sua instância. Os scripts de backup usam essa chave para criptografar o backup. Configure-o em qualquer terminal em que você vai executar os comandos para fazer backup da instância.

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

Fazer backup dos dados da instância

Execute os comandos a seguir para empacotar com segurança os componentes críticos do sistema de arquivos e do esquema de banco de dados da sua instância para que possam ser transferidos e restaurados em uma nova instância do Looker (original) hospedada pelo Looker. O script vai realizar o backup usando md5sum para verificar e validar a integridade dele. Por fim, ele criptografa o backup usando o GnuPG antes de exportar os resultados no formato de arquivo MD5.

Fazer backup dos dados do sistema de arquivos da instância

Execute esses comandos no diretório em que você quer exportar os dados de backup e no mesmo terminal em que definiu as variáveis de ambiente. Selecione a guia do tipo de instância hospedada pelo Looker para onde você planeja migrar.

Looker (original)

Execute este comando para garantir que todos os hooks personalizados do lado do servidor Git usados para validação de dados ou automação de fluxo de trabalho estejam incluídos no backup:

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)

Execute este comando para listar e fazer backup de todos os diretórios necessários:

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=-

Execute este comando para fazer uma "impressão digital" do backup antes da criptografia:

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

Execute este comando para criptografar o backup:

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"

Execute este comando para criar outra "impressão digital" após a criptografia:

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

A soma de verificação ajuda o Looker a verificar a integridade do backup de dados.

Looker (Google Cloud Core)

Execute este comando para garantir que todos os hooks personalizados do lado do servidor Git usados para validação de dados ou automação de fluxo de trabalho estejam incluídos no backup:

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)

Execute este comando para listar e fazer backup de todos os diretórios necessários:

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=-

Execute este comando para fazer uma "impressão digital" do backup antes da criptografia:

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

Execute este comando para criptografar o backup:

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"

Execute este comando para criar outra "impressão digital" após a criptografia:

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

A soma de verificação ajuda o Looker a verificar a integridade do backup de dados.

Esse script produz os seguintes arquivos para a parte de sistema de arquivos da migração:

  1. ${customer}_looker_fs_backup.tar.gz.enc: o backup criptografado e compactado do sistema de arquivos.
  2. ${customer}_fs_backup.md5: o arquivo que contém os checksums para verificação.

Fazer backup do esquema do banco de dados da instância

Esses comandos preparam seu ambiente para fazer backup do esquema do banco de dados da instância do Looker criando um arquivo de configuração temporário que permite que as ferramentas de migração se conectem ao banco de dados interno da instância do Looker. Em vez de transmitir dados sensíveis, como nomes de usuário e nomes de host, diretamente para os comandos, esse script os grava no arquivo de configuração, que ferramentas como mysqldump e mysql podem ler.

Execute o comando a seguir para criar o arquivo de configuração temporário e definir várias configurações:

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}

Substitua:

  • DATABASE_HOST: o DNS ou IP do banco de dados do Looker.
  • DATABASE_PORT: a porta do banco de dados.
  • DATABASE_USER: o nome de usuário do banco de dados para executar a exportação.
  • PASSWORD: o valor de texto simples da senha do usuário que vai executar a exportação. O Looker não vai verificar essa senha. No entanto, se você preferir omitir o requisito de senha de texto simples, deixe essa variável em branco. O sistema vai pedir sua senha quando você executar comandos de backup.
  • DATABASE_SCHEMA_NAME: o nome do banco de dados ou esquema.

Se o banco de dados exigir um certificado SSL para conexão, adicione os seguintes caminhos ao arquivo de configuração temporário:

Defina o caminho para o arquivo da autoridade certificadora (CA):

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

Defina o caminho para o certificado SSL do cliente:

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

Defina o caminho para a chave privada SSL do cliente:

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

Para bancos de dados MySQL, exija um SSL e verifique o certificado do servidor:

loose-ssl-mode=VERIFY_CA

Para bancos de dados MariaDB, exija um SSL e verifique o certificado do servidor:

loose-ssl-verify-server-cert=ON

Execute os comandos a seguir para fazer, criptografar e verificar o backup do esquema do banco de dados.

Navegue até o diretório em que você quer armazenar o backup:

cd "${BACKUP_DIRECTORY}"

Execute este comando para fazer backup do banco de dados:

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

Execute este comando para fazer uma "impressão digital" do seu backup antes da criptografia:

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

Execute este comando para criptografar o backup:

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"

Execute este comando para criar outra "impressão digital" após a criptografia:

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

Esse script produz os seguintes arquivos para a parte do esquema do banco de dados da migração:

  1. ${customer}_looker_db_backup.sql.gz.enc: o backup criptografado e compactado do esquema do banco de dados.
  2. ${customer}_db_backup.md5: o arquivo que contém os checksums para verificação.

Criptografar sua chave de criptografia gerenciada pelo cliente (CMK)

Os comandos a seguir vão validar, formatar e criptografar a CMK. Sem essa criptografia, um banco de dados migrado não pode ser descriptografado no novo ambiente do Looker.

Atenção:o próximo comando da CMK precisa ser executado apenas uma vez na máquina que hospeda seu banco de dados interno ou a instância do Looker, mas não em ambas.

Primeiro, defina uma variável com sua CMK atual, que precisa estar no formato base64:

CMK="CUSTOMER_CMK_KEY"

Substitua:

  • CUSTOMER_CMK_KEY: o valor da sua CMK.

Em seguida, execute os comandos a seguir para gerar um arquivo de chave CMK, gerar a soma de verificação da CMK descriptografada, criptografar o arquivo CMK e gerar a soma de verificação da CMK criptografada:

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"

Esse script produz os seguintes arquivos para a parte da migração relacionada à CMK:

  • ${customer}_looker_cmk_key.enc: o arquivo CMK criptografado
  • ${BACKUP_DIRECTORY}/${customer}_cmk_key.md5: o arquivo que contém os checksums para verificação.

Preparar os arquivos de migração

Os scripts que você executou até agora produziram os seguintes arquivos:

  • compute_usage_info.csv: o arquivo CSV que contém informações sobre o uso de computação da sua instância
  • fs_perf_info.csv: o arquivo CSV que contém informações sobre o desempenho do sistema de arquivos da sua instância
  • ${customer}_looker_fs_backup.tar.gz.enc: o backup criptografado e compactado do sistema de arquivos
  • ${customer}_fs_backup.md5: o arquivo que contém os checksums para verificação.
  • ${customer}_looker_db_backup.sql.gz.enc: o backup criptografado e compactado do esquema do banco de dados
  • ${customer}_db_backup.md5: o arquivo que contém os checksums para verificação.
  • ${customer}_cmk_key.md5: o arquivo que contém os checksums para verificação.
  • ${customer}_looker_cmk_key.enc: o arquivo CMK criptografado

Para combinar os arquivos MD5 em um único arquivo chamado ${customer}_backup.md5, execute o seguinte comando no diretório de backup:

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

Validar seus artefatos de backup

Para garantir que seus arquivos de backup estejam completos, seguros e prontos para migração, use a ferramenta Looker On-Prem Data Verifier. Essa ferramenta realiza uma validação abrangente, incluindo a verificação de checksums MD5, chaves de criptografia GPG, estrutura do banco de dados e validade da CMK.

Instalar a ferramenta de validação

Para executar a ferramenta de validação, é necessário ter Go e GnuPG instalados na máquina.

Para clonar o repositório e criar a ferramenta, execute os seguintes comandos:

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

Executar a ferramenta de validação

A ferramenta opera no diretório que contém seus arquivos de backup. Verifique se todos os arquivos necessários (quatro artefatos criptografados e três descriptografados) estão em ${BACKUP_DIRECTORY} antes de executar a ferramenta.

Execute o seguinte comando para validar seus artefatos:

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

Se for bem-sucedida, a ferramenta vai gerar um arquivo metadata.json. Inclua esse arquivo ao entregar os artefatos de backup para a equipe do Looker.

Transferir seus arquivos

Ao final do processo de backup e criptografia, você terá os seguintes arquivos:

  • ${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

Entregue esses arquivos à sua equipe do Looker para importação em uma instância hospedada pelo Looker.