Este documento faz parte de uma série que fornece informações e orientações importantes relacionadas com o planeamento e a execução de migrações de bases 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:
- Migrar utilizadores do Oracle para o Cloud SQL para PostgreSQL: terminologia e funcionalidade
- Migrar utilizadores do Oracle para o Cloud SQL para PostgreSQL: tipos de dados, utilizadores e tabelas
- Migrar utilizadores do Oracle para o Cloud SQL para PostgreSQL: consultas, procedimentos armazenados, funções e acionadores
- Migrar utilizadores do Oracle para o Cloud SQL para PostgreSQL: segurança, operações, monitorização e registo (este documento)
- Migrar utilizadores e esquemas da base de dados Oracle para o Cloud SQL para PostgreSQL
Segurança
Esta secção oferece orientações sobre encriptação, auditoria e controlo de acesso.
Encriptação
O Oracle e o Cloud SQL para PostgreSQL oferecem mecanismos de encriptação de dados para adicionar uma camada de proteção adicional além da autenticação básica do utilizador e da gestão de privilégios do utilizador.
Encriptação em repouso
Os dados que não se movem através de redes (armazenados) são conhecidos como "dados em repouso". A Oracle oferece o mecanismo TDE (Encriptação de dados transparente) para adicionar uma camada de encriptação ao nível do sistema operativo. No Cloud SQL, os dados são encriptados através do Advanced Encryption Standard (AES-256) de 256 bits ou superior. Estas chaves de dados são encriptadas através de uma chave principal armazenada num repositório de chaves seguro e são alteradas regularmente. Para mais informações acerca da encriptação em repouso, consulte o artigo Encriptação em repouso no Google Cloud.
Encriptação em trânsito
A Oracle oferece segurança avançada para o processamento da encriptação de dados na rede. O Cloud SQL encripta e autentica todos os dados em trânsito em uma ou mais camadas de rede quando os dados se movem para fora dos limites físicos não controlados pela Google ou em nome da Google. Os dados em trânsito dentro de um limite físico controlado pela Google ou em nome desta são geralmente autenticados, mas podem não ser encriptados por predefinição. Pode escolher que medidas de segurança adicionais aplicar com base no seu modelo de ameaças. Por exemplo, pode configurar o SSL para ligações intra-zona ao Cloud SQL. Para obter informações sobre a encriptação em trânsito, consulte o artigo Encriptação em trânsito no Google Cloud.
Auditorias
A Oracle oferece vários métodos de auditoria (por exemplo, auditoria padrão e detalhada). Por outro lado, a auditoria no Cloud SQL para PostgreSQL pode ser alcançada pelos seguintes meios:
- Extensão pgAudit. Registe e acompanhe as operações SQL realizadas numa determinada instância da base de dados.
- Registos de auditoria do Cloud. Audite as operações administrativas e de manutenção realizadas numa instância do Cloud SQL para PostgreSQL.
Controlo de acesso
Os utilizadores podem ligar-se à instância do Cloud SQL para PostgreSQL através de um cliente PostgreSQL com um endereço IP estático autorizado ou através do proxy do Cloud SQL, como qualquer outra ligação à base de dados. Para outras origens de ligação, como o App Engine ou o Compute Engine, os utilizadores têm várias opções, como usar o proxy do Cloud SQL. Para mais informações sobre estas opções, consulte o artigo Controlo de acesso à instância.
O Cloud SQL para PostgreSQL integra-se com a gestão de identidade e de acesso (IAM) e oferece um conjunto de funções predefinidas concebidas para ajudar a controlar o acesso aos seus recursos do Cloud SQL. Estas funções permitem que os utilizadores do IAM iniciem várias operações administrativas, como reinícios de instâncias, cópias de segurança e failovers. Consulte o artigo sobre o controlo de acesso ao projeto para mais informações.
Operações
Esta secção oferece orientações sobre operações de exportação e importação, cópia de segurança e restauro ao nível da instância, e instâncias de espera para operações só de leitura e implementação de recuperação de desastres.
Exporte e importe
O método principal da Oracle para realizar operações de exportação e importação lógicas é a
utilidade Data Pump,
através dos comandos EXPDP
/IMPDP
(uma versão mais antiga da funcionalidade de exportação/importação da Oracle incluía os comandos exp
/imp
). Os comandos equivalentes do Cloud SQL para PostgreSQL são as utilidades pg_dump
e pg_restore
, que geram ficheiros de despejo e, em seguida, importam ao nível da base de dados ou do objeto (incluindo a exportação e a importação apenas de metadados).
Não existe uma solução equivalente direta do Cloud SQL para PostgreSQL para a utilidade DBMS_DATAPUMP
do Oracle (o método Oracle para aplicar a funcionalidade EXPDP
/IMPDP
interage diretamente com o pacote DBMS_DATAPUMP
). Para converter
código PL/SQL do Oracle, use código alternativo (por exemplo, Bash
e Python) para implementar elementos lógicos e os programas do Cloud SQL para PostgreSQL
pg_dump
e pg_restore
para executar operações de exportação/importação.DBMS_DATAPUMP
Pode usar o Oracle SQL*Loader para carregar ficheiros externos em tabelas de bases de dados. O SQL*Loader pode usar um ficheiro de configuração (denominado ficheiro de controlo), que contém os metadados usados pelo SQL*Loader para determinar como os dados devem ser analisados e carregados na base de dados Oracle. O SQL*Loader suporta ficheiros de origem fixos e variáveis.
As utilidades pg_dump
e pg_restore
são executadas ao nível do cliente e ligam-se
remotamente à instância do Cloud SQL para PostgreSQL. Os ficheiros de despejo são criados do lado do cliente. Para carregar ficheiros externos para o Cloud SQL para PostgreSQL, use o comando COPY
da interface do cliente psql ou use o Dataflow ou o Dataproc. Esta secção centra-se principalmente no comando COPY
do Cloud SQL para PostgreSQL, que é um equivalente mais direto à utilidade SQL*Loader da Oracle.
Para carregamentos de dados mais complexos na sua base de dados do Cloud SQL para PostgreSQL, considere usar o Dataflow ou o Dataproc, que envolve a criação de um processo 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
O utilitário de cliente
pg_dump
faz cópias de segurança consistentes e gera resultados em formatos de script ou de ficheiros de arquivo. A descarga de scripts é um conjunto de declarações SQL que podem ser executadas para
reproduzir as definições de objetos da base de dados originais e os dados da tabela. Estas declarações SQL podem ser introduzidas em qualquer cliente PostgreSQL para restauro. As cópias de segurança em formatos de ficheiros de arquivo têm de ser usadas com pg_restore
durante as operações de restauro, mas as cópias de segurança permitem restaurar objetos seletivos e foram concebidas para serem portáteis em várias arquiteturas.
Utilização:
-- 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_restore
O programa cliente pg_restore
restaura uma base de dados PostgreSQL a partir de um arquivo criado por pg_dump
. Se não for especificado um nome da base de dados, o pg_restore
produz um script que contém os comandos SQL necessários para reconstruir a base de dados de forma semelhante ao pg_dump
.
Utilização:
-- 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 psql COPY
psql é uma interface de cliente de linha de comandos para o Cloud SQL para PostgreSQL. Com o comando COPY
, o psql lê o ficheiro especificado nos argumentos do comando e encaminha os dados entre o servidor e o sistema de ficheiros local.
Utilização:
-- 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 seguintes links para documentação ilustram como usar a CLI gcloud para interagir com a instância do Cloud SQL e com o Cloud Storage para aplicar operações de exportação e importação.
Cópia de segurança e restauro ao nível da instância
No Cloud SQL, as tarefas de cópia de segurança e recuperação são processadas através de cópias de segurança de bases de dados automáticas e a pedido.
As cópias de segurança oferecem uma forma de restaurar a instância do Cloud SQL para recuperar dados perdidos ou recuperar de um problema com a instância. Recomendamos que ative as cópias de segurança automáticas para qualquer instância que contenha dados que precise de proteger contra perdas ou danos.
Pode criar uma cópia de segurança em qualquer altura, o que é útil se estiver prestes a realizar uma operação arriscada na sua base de dados ou se precisar de uma cópia de segurança e não quiser esperar pela janela de cópia de segurança. Pode criar cópias de segurança a pedido para qualquer instância, quer tenha ou não as cópias de segurança automáticas ativadas.
As cópias de segurança a pedido não são eliminadas automaticamente como as cópias de segurança automáticas. Persistem até serem eliminadas ou até a respetiva instância ser eliminada. Uma vez que não são eliminadas automaticamente, as cópias de segurança a pedido podem ter um efeito a longo prazo nas suas cobranças de faturação se não as eliminar
Quando ativa as cópias de segurança automáticas, especifica um período de 4 horas para a cópia de segurança. A cópia de segurança começa durante este período. Sempre que possível, agende cópias de segurança quando a sua instância tiver a menor atividade. Se os seus dados não tiverem sido alterados desde a última cópia de segurança, não é feita nenhuma cópia de segurança.
O Cloud SQL retém até 7 cópias de segurança automáticas para cada instância. O armazenamento usado pelas cópias de segurança é cobrado a uma taxa reduzida, consoante a região onde as cópias de segurança estão armazenadas. Para saber mais sobre a lista de preços, consulte o artigo Preços do Cloud SQL para PostgreSQL.
Pode usar o restauro da instância da base de dados do Cloud SQL para PostgreSQL para restaurar para a mesma instância, substituir dados existentes ou restaurar para uma instância diferente. O Cloud SQL para PostgreSQL também lhe permite restaurar uma base de dados PostgreSQL para um ponto específico no tempo com a opção de cópia de segurança automática ativada.
Para mais informações sobre como criar ou gerir cópias de segurança automáticas e a pedido, consulte o artigo Criar e gerir cópias de segurança automáticas e a pedido.
A tabela seguinte apresenta as operações comuns de cópia de segurança e restauro no Oracle e o respetivo equivalente no Cloud SQL para PostgreSQL:
Descrição | Oracle (Recovery Manager – RMAN ) |
Cloud SQL para PostgreSQL |
---|---|---|
Cópias de segurança automáticas agendadas | Crie uma tarefa DBMS_SCHEDULER que execute o seu script RMAN de forma agendada. |
gcloud sql instances patch INSTANCE_NAME --backup-start-time HH:MM
|
Cópias de segurança manuais completas da base de dados | BACKUP DATABASE PLUS ARCHIVELOG;
|
gcloud sql backups create --async --instance INSTANCE_NAME
|
Restaure a base de dados | RUN
|
gcloud sql backups list --instance INSTANCE_NAME
|
Diferencial incremental | BACKUP INCREMENTAL LEVEL 0 DATABASE;
|
Todas as cópias de segurança são incrementais, sem opção de escolha do tipo incremental. |
Cumulativo incremental | BACKUP INCREMENTAL LEVEL 0 CUMULATIVE DATABASE;
|
Todas as cópias de segurança são incrementais, sem opção de escolha do tipo incremental. |
Restaurar a base de dados para um ponto específico no tempo | RUN
|
gcloud sql instances clone SOURCE_INSTANCE_NAME NEW_INSTANCE_NAME \
|
Fazer uma cópia de segurança dos registos de arquivo da base de dados | BACKUP ARCHIVELOG ALL;
|
Não suportado. |
Instâncias em espera para operações só de leitura e implementação de recuperação de desastres
O Oracle Active Data Guard permite que uma instância em espera funcione como um ponto final só de leitura enquanto os novos dados continuam a ser aplicados através dos registos de repetição e de arquivo. Também pode usar o Oracle GoldenGate para ativar uma instância adicional 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ções (CDC).
O Cloud SQL para PostgreSQL usa uma instância de reserva para alta disponibilidade. Esta instância é mantida sincronizada com a instância principal através da replicação ao nível do disco. Ao contrário do Active Data Guard, não está aberto para leituras nem escritas. Quando o servidor principal fica inativo ou não responde durante aproximadamente 60 segundos, o servidor principal muda automaticamente para a instância de reserva. Em poucos segundos, as funções são trocadas e o novo primário assume o controlo.
O Cloud SQL para PostgreSQL também oferece réplicas de leitura para dimensionar os pedidos de leitura. Foram concebidas para descarregar leituras da instância principal e não para servir como instância de reserva para recuperação de desastres. Ao contrário da instância de reserva, as réplicas de leitura são mantidas sincronizadas com a instância principal de forma assíncrona. Podem estar numa zona diferente da principal e também numa região diferente. Pode criar uma réplica de leitura através da Google Cloud consola ou da CLI gcloud. Tenha em atenção que algumas operações requerem um reinício da instância (por exemplo, adicionar alta disponibilidade a uma instância primária existente).
Registo e monitorização
O ficheiro de registo de alertas da Oracle é a principal fonte para identificar eventos gerais do sistema e eventos de erro, de modo a compreender o ciclo de vida de qualquer instância da base de dados Oracle (principalmente, a resolução de problemas de eventos de falha e eventos de erro).
O registo de alertas do Oracle apresenta informações sobre o seguinte:
- Erros e avisos da instância da base de dados Oracle (
ORA-
+ número do erro). - Eventos de arranque e encerramento da instância de base de dados Oracle.
- Problemas relacionados com a rede e a ligação.
- Eventos de comutação de registos de repetição da base de dados.
- Os ficheiros de rastreio da Oracle podem ser mencionados com um link para detalhes adicionais relativos a um evento de base de dados específico.
A Oracle fornece ficheiros de registo dedicados para diferentes serviços, como LISTENER, ASM e Enterprise Manager (OEM), que não têm componentes equivalentes no Cloud SQL para PostgreSQL.
Visualizar registos de operações do Cloud SQL para PostgreSQL
O Cloud Logging é a principal plataforma para ver todas as entradas de registo no postgres.log
(o equivalente
ao alert.log
na Oracle). Pode filtrar por nível do evento de registo (por exemplo, Crítico, Erro ou Aviso). O período do evento e a filtragem de texto livre também estão disponíveis.
Monitorização da instância da base de dados do Cloud SQL para PostgreSQL
Os painéis de controlo de monitorização da IU principal da Oracle fazem parte dos produtos OEM e Grid/Cloud Control (por exemplo, gráficos de atividade principais) e são úteis para a monitorização de instâncias da base de dados em tempo real ao nível da sessão ou da declaração SQL. O Cloud SQL para PostgreSQL oferece capacidades de monitorização semelhantes através da Google Cloud consola. Pode ver informações resumidas sobre as instâncias da base de dados do Cloud SQL para PostgreSQL com várias métricas de monitorização, como a utilização da CPU, a utilização do armazenamento, a utilização da memória, as operações de leitura/escrita, os bytes de entrada/saída, as ligações ativas e muito mais.
O Cloud Logging suporta métricas de monitorização adicionais para o Cloud SQL para PostgreSQL. A captura de ecrã seguinte mostra um gráfico de consultas do Cloud SQL para PostgreSQL das últimas 12 horas.
Monitorização de réplicas de leitura do Cloud SQL para PostgreSQL
Pode monitorizar as réplicas de leitura da mesma forma que monitoriza a instância principal, usando as Google Cloud métricas de monitorização da consola (conforme descrito anteriormente). Além disso, existe uma métrica de monitorização dedicada para monitorizar o atraso de replicação, que determina o atraso entre a instância principal e a instância de réplica de leitura em bytes (pode ser monitorizada a partir do separador de vista geral da instância de réplica de leitura na Google Cloud consola).
Pode usar a CLI gcloud para obter o estado da replicação:
gcloud sql instances describe REPLICA_NAME
Também pode fazer a monitorização da replicação através de comandos de um cliente do PostgreSQL, que fornece o estado das bases de dados primárias e de espera.
Pode usar a seguinte declaração SQL para verificar o estado da réplica de leitura:
postgres=> select * from pg_stat_replication;
Monitorização do Cloud SQL para PostgreSQL
Esta secção descreve os métodos básicos de monitorização do Cloud SQL para PostgreSQL que são considerados tarefas de rotina realizadas por um administrador de base de dados (DBA) como o Oracle ou o Cloud SQL para PostgreSQL.
Monitorização de sessões
A monitorização de sessões do Oracle é feita através da consulta das vistas de desempenho dinâmico, conhecidas como vistas "V$". As vistas V$SESSION
e V$PROCESS
são usadas frequentemente para obter estatísticas em tempo real sobre a atividade atual da base de dados, através de declarações SQL. Pode monitorizar a atividade da sessão consultando a vista dinâmica pg_stat_activity
:
postgres=> select * from pg_stat_activity;
Monitorização de transações longas
Pode identificar consultas de execução prolongada aplicando filtros adequados nas colunas, como query_start
e state
, na vista dinâmica pg_stat_activity
.
Monitorização de fechaduras
Pode monitorizar os bloqueios da base de dados através da vista dinâmica pg_locks
, que fornece informações em tempo real sobre ocorrências de bloqueios que podem originar problemas de desempenho.
O que se segue?
- Explore mais acerca das contas de utilizador do Cloud SQL para PostgreSQL.
- Explore arquiteturas de referência, diagramas e práticas recomendadas sobre o Google Cloud. Consulte o nosso Centro de arquitetura na nuvem.