Como migrar usuários da Oracle para o Cloud SQL para MySQL: segurança, operações, monitoramento e geração de registros

Este documento faz parte de uma série que fornece informações importantes e orientações relacionadas ao planejamento e à realização de migrações de banco de dados Oracle® 11g/12c para o Cloud SQL para PostgreSQL versão 12. Além da parte de configuração introdutória, a série inclui as seguintes partes:

Segurança

Nesta seção, você encontra orientações sobre criptografia, auditoria e controle de acesso.

Encryption

O Oracle e o Cloud SQL para PostgreSQL oferecem mecanismos de criptografia de dados para adicionar uma camada extra de proteção além da autenticação básica do usuário e do gerenciamento de privilégios de usuário.

Criptografia em repouso

Os dados que não se movem por redes (armazenados) são conhecidos como "dados em repouso". A Oracle oferece o mecanismo de criptografia de dados transparente (TDE, na sigla em inglês) para adicionar uma camada de criptografia no nível do sistema operacional. No Cloud SQL, os dados são criptografados usando o Padrão de criptografia avançada de 256 bits (AES-256, na sigla em inglês) ou superior. Essas chaves de dados também são criptografadas usando-se uma chave mestra armazenada em uma keystore segura. Além disso, a chave mestra é alterada regularmente. Para mais informações sobre a criptografia em repouso, consulte Criptografia em repouso no Google Cloud.

Criptografia em trânsito

A Oracle oferece segurança avançada para lidar com criptografia de dados pela rede. O Google criptografa e autentica todos os dados em trânsito em uma ou mais camadas de rede quando transferidos para outros limites físicos não controlados pelo Google ou em nome dele. Os dados em trânsito dentro de um limite físico controlado pelo Google ou em nome dele costumam ser autenticados, mas não necessariamente criptografados por padrão. Escolha quais medidas de segurança adicionais se aplicam com base no modelo de ameaça. Por exemplo, configure SSL para conexões entre zonas com o Cloud SQL. Para mais informações sobre criptografia em trânsito, consulte Criptografia em trânsito no Google Cloud.

Auditoria

A Oracle oferece vários métodos de auditoria, por exemplo, auditoria padrão e refinada. Por outro lado, é possível realizar auditorias no Cloud SQL para PostgreSQL das seguintes maneiras:

  • Extensão pgAudit. Gravar e rastrear operações SQL realizadas em uma determinada instância de banco de dados.
  • Cloud Audit Logs Auditar operações administrativas e de manutenção feitas em uma instância do Cloud SQL para PostgreSQL.

Controle de acesso

Os usuários podem se conectar à instância do Cloud SQL para PostgreSQL usando um cliente PostgreSQL com um endereço IP estático autorizado ou o Cloud SQL Proxy, como qualquer outra conexão de banco de dados. Para outras fontes de conexão, como o App Engine ou o Compute Engine, os usuários têm várias opções, como o Cloud SQL Proxy. Para mais informações sobre essas opções, consulte Controle de acesso à instância.

O Cloud SQL para PostgreSQL se integra ao gerenciamento de identidade e acesso (IAM, na sigla em inglês) e fornece um conjunto de papéis predefinidos, projetados para ajudar você a controlar o acesso aos recursos do Cloud SQL. Esses papéis permitem que os usuários do IAM iniciem várias operações administrativas, como reinicializações de instâncias, backups e failovers. Consulte Controle de acesso ao projeto para mais informações.

Operações

Nesta seção, você encontra orientações sobre operações de exportação e exportação, backup e restauração no nível da instância e instâncias em espera para operações somente leitura e implementação de recuperação de desastres.

Exportar e importar

O principal método da Oracle para executar operações lógicas de exportação e importação é o utilitário Data Pump, usando os comandos EXPDP/: IMPDP. (Uma versão mais antiga da funcionalidade de exportação/importação da Oracle incluía os comandos exp e imp). Os comandos equivalentes do Cloud SQL para PostgreSQL são os utilitários pg_dump e pg_restore, que geram arquivos dump e importam no nível do banco de dados ou do objeto (incluindo a exportação e a importação de metadados apenas .

Não há solução direta do Cloud SQL para PostgreSQL para o utilitário DBMS_DATAPUMP do Oracle (o método Oracle para aplicar a funcionalidade EXPDP/IMPDP interage diretamente com o pacote DBMS_DATAPUMP). Para converter o código Oracle PL/SQL Oracle DBMS_DATAPUMP, use um código alternativo (por exemplo, Bash e Python) para implementar elementos lógicos e os programas Cloud SQL para PostgreSQL pg_dump e pg_restore para executar operações de exportação/importação.

O Oracle SQL*Loader pode ser usado para carregar arquivos externos em tabelas de banco de dados. O SQL*Loader pode usar um arquivo de configuração (chamado de arquivo de controle), que contém os metadados usados pelo SQL*Loader para determinar como os dados devem ser analisados e carregados no banco de dados da Oracle. O SQL*Loader é compatível com arquivos de origem fixos e variáveis.

Os utilitários pg_dump e pg_restore são executados no nível do cliente e se conectam remotamente à instância do Cloud SQL para PostgreSQL. Os arquivos dump são criados no lado do cliente. Para carregar arquivos externos no Cloud SQL para PostgreSQL, use o comando COPY na interface do cliente psql, ou use o Dataflow ou o Dataproc. Esta seção se concentra principalmente no comando COPY do Cloud SQL para PostgreSQL, que é um equivalente mais direto ao utilitário SQL*Loader do Oracle.

Para cargas de dados mais complexos no banco de dados do Cloud SQL para PostgreSQL, use o Dataflow ou o Dataproc, que envolve a criação de um processo de ETL.

Para mais informações sobre o Dataflow, consulte a documentação do Dataflow. Para mais informações sobre o Dataproc, consulte a documentação do Dataproc.

pg_dump (em inglês)

O utilitário cliente pg_dump realiza backups e saídas consistentes nos formatos de arquivo ou script. O despejo de script é um conjunto de instruções SQL que podem ser executadas para reproduzir as definições do objeto do banco de dados original e os dados da tabela. Essas instruções SQL podem ser alimentadas em qualquer cliente do PostgreSQL para restauração. Os backups nos formatos de arquivo precisam ser usados com pg_restore durante as operações de restauração, mas os backups permitem que objetos selecionados sejam restaurados e projetados para ser portáteis entre as arquiteturas.

Uso:

-- Single database backup & specific tables backup
# pg_dump database_name > outputfile.sql
# pg_dump -t table_name database_name > outputfile.sql

-- Dump all tables in a given schema with a prefix and ignore a given table
# pg_dump -t 'schema_name.table_prefixvar>*' -T schema_name.ignore_table database_name > outputfile.sql

-- Backup metadata only - Schema only
# pg_dump -s database_name > metadata.sql

-- Backup in custom-format archive
pg_dump -Fc database_name > outputfile.dump

pg_restauração

O programa de cliente pg_restore restaura um banco de dados PostgreSQL de um arquivo criado por pg_dump. Se um nome de banco de dados não for especificado, pg_restore gerará um script com os comandos SQL necessários para recriar o banco de dados semelhante ao pg_dump.

Uso:

-- Connect to an existing database and restore the backup archive
pg_restore -d database_name outputfile.dump

-- Create and restore the database from the backup archive
pg_restore -C -d database_name outputfile.dump

comando COPY psql

psql é uma interface de cliente de linha de comando para o Cloud SQL para PostgreSQL. Com o comando COPY (em inglês), o psql lê o arquivo especificado nos argumentos de comando e roteia os dados entre o servidor e o sistema de arquivos local.

Uso:

-- Connect to an existing database and restore the backup archive
psql -p 5432 -U username -h cloud_sql_instance_ip -d database_name -c "\copy emps from '/opt/files/inputfile.csv' WITH csv;" -W

Exportação/importação do Cloud SQL para PostgreSQL:

Os links de documentação a seguir mostram como usar a gsutil e a Google Cloud CLI para interagir com a instância do Cloud SQL e com o Cloud Storage para aplicar operações de exportação e importação.

Backup e restauração no nível da instância

No Cloud SQL, as tarefas de backup e recuperação são processadas por meio de backups de banco de dados automatizados e sob demanda.

Com os backups, é possível restaurar a instância do Cloud SQL para recuperar dados perdidos ou se recuperar de um problema com a instância. Recomendamos que você ative os backups automatizados para qualquer instância com dados que precisem ser protegidos contra perdas ou danos.

Você pode criar um backup a qualquer momento, o que é útil se você está prestes a executar uma operação arriscada no banco de dados ou se precisa de um backup e não quer esperar pela janela de backup. É possível criar backups sob demanda para qualquer instância, mesmo que ela não tenha backups automáticos ativados.

Os backups sob demanda não são excluídos automaticamente como os backups automatizados. Eles perduram até que você os exclua ou até que a instância deles seja excluída. Como não são excluídos automaticamente, os backups sob demanda poderão afetar o faturamento a longo prazo se você não os excluir

Quando você ativa backups automáticos, especifica uma janela de backup de quatro horas. O backup é iniciado durante essa janela. Quando possível, programe backups quando a instância tiver a menor atividade. Se seus dados não tiverem sido alterados desde o último backup, nenhum backup será realizado.

O Cloud SQL mantém até sete backups automatizados para cada instância. O armazenamento usado por backups é cobrado a uma taxa reduzida, dependendo da região em que os backups são armazenados. Para saber mais sobre a lista de preços, consulte Preços do Cloud SQL para PostgreSQL.

Use a restauração de instância do banco de dados do Cloud SQL para PostgreSQL para restaurar na mesma instância, substituir os dados atuais ou restaurar para uma instância diferente. O Cloud SQL para PostgreSQL também permite restaurar um banco de dados do PostgreSQL para um ponto determinado no tempo com a opção de backup automático ativada.

Para mais informações sobre como criar ou gerenciar backups automáticos e sob demanda, consulte Como criar e gerenciar backups automáticos e sob demanda.

A tabela a seguir lista as operações comuns de backup e restauração no Oracle e as equivalentes no Cloud SQL para PostgreSQL:

Descrição Oracle (Gerenciador de recuperação: RMAN) Cloud SQL para PostgreSQL
Backups automáticos programados Crie um job DBMS_SCHEDULER que executará o script RMAN de acordo com uma programação. gcloud sql instances patch INSTANCE_NAME --backup-start-time HH:MM
Backups completos de bancos de dados BACKUP DATABASE PLUS ARCHIVELOG; gcloud sql backups create --async --instance INSTANCE_NAME
Restaurar banco de dados RUN
{
SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
RESTORE DATABASE;
RECOVER DATABASE;
ALTER DATABASE OPEN;
}
gcloud sql backups list --instance INSTANCE_NAME
gcloud sql backups restore BACKUP_ID --restore-instance=INSTANCE_NAME
Diferencial incremental BACKUP INCREMENTAL LEVEL 0 DATABASE;
BACKUP INCREMENTAL LEVEL 1 DATABASE;
Todos os backups são incrementais, sem opção de escolha do tipo incremental.
Acumulado incremental BACKUP INCREMENTAL LEVEL 0 CUMULATIVE DATABASE;
BACKUP INCREMENTAL LEVEL 1 CUMULATIVE DATABASE;
Todos os backups são incrementais, sem opção de escolha do tipo incremental.
Restaurar o banco de dados para um momento específico RUN
{
SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
SET UNTIL TIME "TO_DATE('19-SEP-2017 23:45:00','DD-MON-YYYY HH24:MI:SS')";
RESTORE DATABASE;
RECOVER DATABASE;
ALTER DATABASE OPEN RESETLOGS;
}
gcloud sql instances clone SOURCE_INSTANCE_NAME NEW_INSTANCE_NAME \
--point-in-time TIMESTAMP
Fazer backup de arquivos do banco de dados de backup BACKUP ARCHIVELOG ALL; Incompatível.

Instâncias em espera para operações somente leitura e implementação de recuperação de desastres

O Oracle Active DataGuard permite que uma instância em espera atue como um endpoint somente leitura enquanto os novos dados ainda estão sendo aplicados por meio dos registros de refazer e arquivar. Também é possível usar o Oracle GoldenGate para ativar mais uma instância para fins de leitura enquanto as modificações de dados são aplicadas em tempo real, servindo como uma solução de captura de dados de alteração (CDC, na sigla em inglês).

O Cloud SQL para PostgreSQL usa uma instância de espera para alta disponibilidade. Essa instância é sincronizada em sincronia com a instância primária por meio da replicação no nível do disco. Ao contrário do Active Data Guard, ele não está aberto para leituras ou gravações. Quando o primário fica inativo ou fica sem responder por aproximadamente 60 segundos, ele passa automaticamente para a instância de espera. Em alguns segundos, os papéis são trocados e o novo primário passa por cima.

O Cloud SQL para PostgreSQL também oferece réplicas de leitura para escalonar solicitações de leitura. Eles foram projetados para descarregar as leituras da instância primária e não servem como uma instância de espera para recuperação de desastres. Ao contrário da instância de espera, as réplicas de leitura são sincronizadas de maneira assíncrona com o primário. Elas podem estar em uma zona diferente da primária e também em uma região diferente. É possível criar uma réplica de leitura usando o Console do Google Cloud ou a CLI gcloud. Observe que algumas operações exigem a reinicialização de uma instância, como adicionar alta disponibilidade a uma instância principal, por exemplo.

Como gerar registros e monitorar

O arquivo de registros de alerta da Oracle é a principal fonte para identificar eventos gerais do sistema e eventos de erro para entender qualquer ciclo de vida da instância do banco de dados da Oracle, principalmente para solucionar problemas de eventos de falha e de erro.

O registro de alertas da Oracle exibe informações sobre o seguinte:

  • Erros e avisos da instância do banco de dados Oracle (ORA- + número do erro).
  • Eventos de inicialização e encerramento da instância do banco de dados Oracle.
  • Problemas relacionados a rede e conexão.
  • Eventos de alternância de registros de refazer do banco de dados.
  • Os arquivos de rastreamento da Oracle podem ser mencionados com um link para mais detalhes sobre um evento de banco de dados específico.

A Oracle fornece arquivos de registros dedicados para diferentes serviços, como LISTENER, ASM e Enterprise Enterprise (OEM), que não têm componentes equivalentes no Cloud SQL para PostgreSQL.

Como visualizar registros de operação do Cloud SQL para PostgreSQL

O Cloud Logging é a principal plataforma para visualizar todas as entradas de registro em postgres.log (o equivalente a alert.log no Oracle). É possível filtrar pelo nível de evento de registro (por exemplo, "Crítico", "Erro" ou "Aviso"). O período do evento e a filtragem de texto livre também estão disponíveis.

Como visualizar registros no diretório.

Monitoramento de instâncias do banco de dados do Cloud SQL para PostgreSQL

Os principais painéis de monitoramento da IU da Oracle fazem parte dos produtos OEM e Grid/Cloud Control (por exemplo, gráficos de atividades principais) e são úteis para o monitoramento de instâncias de banco de dados em tempo real no nível da sessão ou da instrução SQL. O Cloud SQL para PostgreSQL oferece recursos de monitoramento semelhantes por meio do Console do Google Cloud. É possível visualizar informações resumidas sobre as instâncias do banco de dados do Cloud SQL para PostgreSQL com várias métricas de monitoramento, como utilização da CPU, uso de armazenamento, memória, operações de leitura/gravação, { 110 bytes de entrada/saída, conexões ativas e muito mais.

O Cloud Logging é compatível com outras métricas de monitoramento do Cloud SQL para MySQL. A captura de tela a seguir mostra um gráfico de consultas do Cloud SQL para PostgreSQL nas últimas 12 horas.

Gráfico de consultas das últimas 12 horas.

Monitoramento de réplicas de leitura do Cloud SQL para PostgreSQL

É possível monitorar as réplicas de leitura da mesma forma que monitora a instância principal, usando as métricas de monitoramento do Console do Google Cloud (conforme descrito anteriormente). Além disso, há uma métrica de monitoramento dedicada para monitorar o atraso de replicação, determinando o atraso entre a instância primária e a instância de réplica de leitura em bytes (pode ser monitorado a partir da guia de visão geral da instância de réplica de leitura no Console do Google Cloud).

Use a CLI gcloud para recuperar o status de replicação:

gcloud sql instances describe REPLICA_NAME

Também é possível fazer o monitoramento de replicação usando comandos de um cliente PostgreSQL, que fornece o status dos bancos de dados primário e de espera.

Use a seguinte instrução SQL para verificar o status da réplica de leitura:

postgres=> select * from pg_stat_replication;

Monitoramento do Cloud SQL para PostgreSQL

Nesta seção, descrevemos os métodos básicos de monitoramento do Cloud SQL para PostgreSQL, que são considerados tarefas de rotina realizadas por um administrador de banco de dados (DBA), como o Oracle ou o Cloud SQL para PostgreSQL.

Monitoramento de sessão

O monitoramento de sessão da Oracle é feito consultando as visualizações de desempenho dinâmico conhecidas como visualizações "V$". As visualizações V$SESSION e V$PROCESS são usadas com frequência para receber insights em tempo real sobre a atividade atual do banco de dados, usando instruções SQL. É possível monitorar a atividade da sessão consultando a visualização dinâmica pg_stat_activity:

postgres=> select * from pg_stat_activity;

Monitoramento de transações longas

É possível identificar consultas de longa duração aplicando filtros apropriados em colunas como query_start e state na visualização dinâmica pg_stat_activity.

Monitoramento de bloqueio

É possível monitorar bloqueios de banco de dados usando a visualização dinâmica pg_locks, que fornece informações em tempo real sobre ocorrências de bloqueio que podem levar a problemas de desempenho.

A seguir