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 MySQL versão 5.7, instâncias de segunda geração. A série inclui as seguintes partes:
- Migrar utilizadores do Oracle para o Cloud SQL para MySQL: terminologia e funcionalidade
- Migrar utilizadores do Oracle para o Cloud SQL para MySQL: tipos de dados, utilizadores e tabelas
- Migrar utilizadores do Oracle para o Cloud SQL para MySQL: consultas, procedimentos armazenados, funções e acionadores
- Migrar utilizadores do Oracle para o Cloud SQL para MySQL: segurança, operações, monitorização e registo (este documento)
Segurança
Esta secção explica as diferenças na encriptação de dados entre o Oracle e o Cloud SQL para MySQL, e aborda a auditoria do controlo de acesso do Cloud SQL para MySQL.
Encriptação de dados da Oracle
Além da autenticação básica do utilizador e da gestão de privilégios do utilizador, a Oracle oferece o mecanismo TDE (Encriptação de dados transparente) para adicionar uma camada de encriptação adicional para a segurança de dados em repouso ao nível do sistema operativo. Depois de configurado, o TDE da Oracle é implementado automaticamente pelo sistema e não requer qualquer interação manual dos utilizadores. Para implementar o TDE da Oracle, recomendamos que o configure explicitamente (por comando) nos objetos de base de dados necessários e suportados, que podem aceitar este tipo de encriptação, por exemplo, tablespace, tabela ou coluna. Para processar a segurança dos dados em trânsito, recomendamos que implemente uma solução de segurança de rede.
Encriptação de dados do Cloud SQL para MySQL
Google Cloud oferece várias camadas de encriptação para proteger os dados dos clientes em repouso nos produtos, incluindo o Cloud SQL. Google Cloud O Cloud SQL é encriptado com encriptação AES-128 ou AES-256. Para mais informações, consulte o seguinte tópico sobre a encriptação em repouso. Ao contrário da encriptação da Oracle (que tem de ser implementada através de ações de configuração), Google Cloud encripta os dados dos clientes em repouso, sem que seja necessária qualquer ação. Do ponto de vista da conversão de esquemas, não são necessárias ações e a encriptação permanece transparente para o utilizador.
Para compreender melhor como a Google Cloud encriptação de dados em trânsito é processada, consulte Como a encriptação é gerida para dados em trânsito.
Auditorias
A Oracle oferece vários métodos de auditoria, como a auditoria padrão e detalhada. Por outro lado, o MySQL não oferece por predefinição soluções de auditoria equivalentes. Para ultrapassar esta limitação, pode usar Google Cloud painéis de controlo e monitorização, mas, para captar operações LMD/LDD de bases de dados, pode usar os registos de consultas lentas, gerais e de erros como uma solução de auditoria mais robusta.
Para implementar esta solução, recomendamos que use a instância
FLAGS
para ativar o registo de consultas lentas e o registo geral. Além disso, deve gerir a retenção destes registos de acordo com as necessidades da sua empresa.
Pode usar Google Cloud registos de auditoria para recolher informações de auditoria. Estes registos abrangem três níveis principais:
- Registos de auditoria de atividade do administrador (ativados por predefinição)
- Registos de auditoria de acesso aos dados (desativados por predefinição)
- Leia sobre como configurar registos de acesso a dados.
- Tenha em atenção que os registos de auditoria de acesso aos dados não registam operações de acesso aos dados em recursos aos quais se pode aceder sem iniciar sessão noGoogle Cloud.
- Registos de auditoria de eventos do sistema (ativados por predefinição)
Ver Google Cloud registos de auditoria
Seguem-se os passos para ver os registos de auditoria: Google Cloud consola > Página inicial > Atividade
Pode filtrar a granularidade das informações entre os níveis de auditoria. A captura de ecrã seguinte mostra uma auditoria da atividade de administrador.
Página do Cloud Logging
Segue-se o caminho de acesso à página de registo: Google Cloud consola > Cloud Logging
Pode filtrar a granularidade das informações entre os tipos de registos. A captura de ecrã seguinte mostra uma auditoria do registo geral (dados de auditoria para o utilizador, o anfitrião e a declaração SQL).
Controlo de acesso do Cloud SQL para MySQL
Os utilizadores podem ligar-se à instância do Cloud SQL para MySQL através de um cliente MySQL com um endereço IP estático autorizado ou através do proxy do Cloud SQL, de forma semelhante a 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. Estas opções são descritas com mais detalhes em Controlo de acesso à instância.
Operações
Esta secção aborda a exportação e a importação, a cópia de segurança e o restauro ao nível da instância, o agendador de eventos do MySQL (para tarefas da base de dados) e as instâncias de espera para operações de leitura apenas e 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 é o utilitário 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
e imp
). Os comandos equivalentes do MySQL são as utilidades mysqldump
e mysqlimport
, que geram ficheiros de despejo e, em seguida, executam a importação ao nível de uma base de dados ou de um objeto (incluindo a exportação e a importação apenas de metadados).
Não existe uma solução equivalente direta do MySQL para a utilidade DBMS_DATAPUMP
do Oracle (o método Oracle para aplicar a funcionalidade EXPDP
/IMPDP
que interage diretamente com o pacote DBMS_DATAPUMP
). Para converter
código PL/SQL do Oracle, use
código alternativo (por exemplo, Bash ou Python) para implementar elementos
lógicos e use o MySQL mysqldump
e mysqlimport
para executar operações
de exportação/importação.DBMS_DATAPUMP
As utilidades mysqldump
e mysqlimport
do MySQL são executadas ao nível do cliente (como parte dos programas cliente do MySQL), estabelecendo ligação remotamente à instância do Cloud SQL para MySQL. Os ficheiros de despejo são criados por parte do cliente.
mysqldump
:
Uma utilidade do cliente faz cópias de segurança lógicas e importações de dados (como sql
). Isto
produz 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 das tabelas. O utilitário mysqldump
também pode gerar resultados no formato CSV, noutro texto delimitado ou no formato XML. A principal vantagem deste formato de saída é que lhe permite ver ou editar a saída de exportação antes de restaurar, uma vez que se trata de um ficheiro de texto. A principal desvantagem é que não se destina a ser uma solução rápida ou escalável para fazer cópias de segurança de quantidades substanciais de dados.
mysqldump
de utilização:
-- Single database backup & specific tables backup # mysqldump database_name > outpitfile.sql # mysqldump database_name tbl1 tbl2 > outpitfile.sql -- Back up all databases # mysqldump --all-databases > all_databases.sql -- Ignore a given table # mysqldump --databases db1 --ignore-table db1.tbl > outpitfile.sql -- Back up metadata only - Schema only # mysqldump --no-data db1 > bck.sql -- Include stored procedures and functions (routines) # mysqldump db1 --routines > db1.sql -- Back up only rows by a given WHERE condition # mysqldump db1 tbl1 --where="col1=1" > bck.sql -- Include triggers for each dumped table (default) # mysqldump db1 tbl1 —triggers > bck.sql
mysqlimport
:
Este é um programa cliente que fornece uma interface de linhas de comando à declaração SQL LOAD
DATA INFILE
. mysqlimport
é frequentemente usado para importar dados de ficheiros de texto ou CSV para uma tabela MySQL com uma estrutura correspondente.
O Oracle SQL*Loader pode ser convertido em mysqlimport
, uma vez que ambos partilham a mesma funcionalidade de carregar dados a partir de um ficheiro externo.
mysqlimport
de utilização:
-- Example of loading data from a CSV file into a table: -- Create a table named csv_file mysql> create table file(col1 int, col2 varchar(10)); -- Create a CSV file (delimited by tab) # echo 1 A > file.csv # echo 2 B >> file.csv # echo 3 C >> file.csv -- Import the CSV file into the csv_file table -- Note that the file and table name must be named identically # mysqlimport -u USER -p -h HOSTNAME/IP DB_NAME --local file.csv csv_file: Records: 3 Deleted: 0 Skipped: 0 Warnings: 0 -- Verify # mysql -u USER -p -h HOSTNAME/IP DB_NAME -e "SELECT * FROM file" +------+------+ | col1 | col2 | +------+------+ | 1 | A | | 2 | B | | 3 | C | +------+------+ -- Example of using LOAD DATA INFILE to load a CSV file (using the same table from the previous example, with the CSV delimiter defined by comma) mysql> LOAD DATA LOCAL INFILE 'file.csv' INTO TABLE file FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' (col1, col2); mysql> SELECT * FROM file; +------+------+ | col1 | col2 | +------+------+ | 1 | A | | 2 | B | | 3 | C | +------+------+
Exportação/importação do Cloud SQL para MySQL:
Os links de documentação seguintes 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
É uma operação simples migrar do Oracle RMAN ou Data Pump e incluir opções adicionais de cópia de segurança e restauro (por exemplo, instantâneos de VMs, cópia de segurança a frio ou ferramentas de terceiros) para o Cloud SQL para MySQL. Não é necessário código nem conhecimentos adicionais. Pode gerir este processo através daGoogle Cloud consola ou da Google Cloud CLI. (Os exemplos anteriores foram compilados com instâncias do Cloud SQL de segunda geração.)
Os tipos de métodos de cópias de segurança da base de dados do MySQL são: cópias de segurança a pedido e cópias de segurança automáticas.
Pode usar a restauração da instância da base de dados do Cloud SQL para MySQL para restaurar para a mesma instância, substituindo os dados existentes ou restaurando para uma instância diferente. O Cloud SQL para MySQL também lhe permite restaurar uma base de dados do MySQL para um ponto específico no tempo usando o registo binário com a opção de cópia de segurança automática ativada.
O Cloud SQL para MySQL oferece a capacidade de clonar uma versão independente da base de dados de origem. Esta funcionalidade aplica-se apenas à base de dados principal (principal) ou a outro clone e não pode ser obtida a partir de uma instância de réplica de leitura. Também pode usar esta funcionalidade para restaurar uma instância do MySQL a partir de um momento específico, o que permite a recuperação de dados, se necessário. Pode aplicar a reposição da base de dados do Cloud SQL para MySQL através da Google Cloud consola ou da CLI gcloud.
Programador de eventos do MySQL (tarefas de base de dados)
Para iniciar procedimentos de base de dados predefinidos, a funcionalidade do agendador de eventos do MySQL é equivalente ao DBMS_JOBS
do Oracle ou ao DBMS_SCHEDULER
do Oracle. Por predefinição, o parâmetro de base de dados event_scheduler
está definido como OFF
. Se necessário, deve ser
alterado para ON
através de flags do Cloud SQL.
Pode usar o programador de eventos do MySQL para executar um comando DML/DDL explícito ou para programar um procedimento ou uma função armazenada num momento específico e com uma determinada lógica.
Consideração de conversão para o Oracle DBMS_JOBS
ou DBMS_SCHEDULER
:
Todos os trabalhos do Oracle têm de ser convertidos manualmente na sintaxe e na funcionalidade do MySQL ou através de ferramentas de conversão PL/SQL disponíveis comercialmente.
Use a seguinte declaração para validar o valor do parâmetro event_scheduler
atual a partir de uma execução do cliente:
mysql> SHOW VARIABLES LIKE '%event_s%';
+-----------------+-------+
| Variable_name | Value |
+-----------------+-------+
| event_scheduler | ON |
+-----------------+-------+
Exemplos de agendador de eventos:
Oracle DBMS_SCHEDULER
SQL> BEGIN DBMS_SCHEDULER.CREATE_JOB ( job_name => 'job_sessions_1d_del', job_type => 'PLSQL_BLOCK', job_action => 'BEGIN DELETE FROM sessions WHERE session_date < SYSDATE - 1; END;', start_date => SYSTIMESTAMP, repeat_interval => 'FREQ=DAILY', end_date => NULL, enabled => TRUE, comments => 'Deletes last day data from the sessions table'); END; /
Conversão de EVENTO do MySQL:
mysql> CREATE EVENT job_sessions_1d_del ON SCHEDULE EVERY 1 DAY COMMENT 'Deletes last day data from the sessions table' DO DELETE FROM sessions WHERE session_date < DATE_SUB(SYSDATE(), INTERVAL 1 DAY);
Metadados do agendador de eventos do MySQL:
mysql> SELECT * FROM INFORMATION_SCHEMA.EVENTS \G; -- OR mysql> SHOW EVENTS FROM HR;
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 MySQL suporta a separação de leitura/escrita através de réplicas de leitura para direcionar quaisquer leituras ou cargas de trabalho analíticas da origem principal para uma origem replicada alternativa em tempo quase real. Pode aplicar definições para réplicas de leitura do Cloud SQL para MySQL através da Google Cloud consola ou da CLI gcloud.
O Cloud SQL para MySQL suporta opções de replicação adicionais: replicação para uma instância do MySQL externa e replicação a partir de uma instância do MySQL externa.
Pode implementar o Oracle Active Data Guard e o Oracle GoldenGate como uma solução de recuperação de desastres (DR), adicionando uma instância de standby já sincronizada com a instância principal.
As réplicas de leitura do Cloud SQL para MySQL não se destinam a servir como instâncias de espera para cenários de recuperação de desastres. Para esse efeito, o Cloud SQL oferece a capacidade de configurar uma instância do MySQL para alta disponibilidade (através da consola ou da CLI gcloud). Google Cloud
Algumas operações podem exigir um reinício da instância (por exemplo, adicionar HA a uma instância principal existente). Do ponto de vista de um SLA de alta disponibilidade (HA), se o servidor principal não responder durante aproximadamente 60 segundos, a instância de standby de HA fica disponível após a reconexão. Para ativar a HA para o Cloud SQL para MySQL, consulte as seguintes instruções.
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.
Além disso, 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 MySQL.
Tipos de registos do Cloud SQL para MySQL:
Tipo de registo do MySQL | Descrição | Notas |
---|---|---|
Registo de atividade | Contém dados sobre chamadas API ou outras ações administrativas que modificam a configuração ou os metadados de uma instância do Cloud SQL para MySQL. | Este registo é um dos três registos no grupo de registos de auditoria do Cloud. |
Registo de acesso aos dados | Contém dados sobre chamadas API que leem a configuração ou os metadados de recursos, bem como chamadas API orientadas pelo utilizador que criam, modificam ou leem dados de recursos fornecidos pelos utilizadores. | Este registo é um dos três registos no grupo de registos de auditoria do Cloud. Tenha em atenção que este registo apenas regista operações de acesso a dados em instâncias do MySQL para eventos que podem ser acedidos sem iniciar sessão noGoogle Cloud. |
mysql.err |
Este é o ficheiro de registo principal do MySQL, que pode ser comparado com o registo de alertas do Oracle. Ambos os registos contêm o registo de eventos da instância da base de dados, como eventos de arranque e encerramento, e eventos de erro e aviso. | Guia da mensagem de erro do MySQL 5.7. |
mysql-slow.log |
O registo de consultas lentas do MySQL recolhe dados sobre consultas que excedem a configuração predefinida, como cada consulta que tem um tempo de execução superior a 2 segundos (o valor predefinido é 10 segundos). | Desativada por predefinição. Para ativar este registo, defina as seguintes variáveis (parâmetros da base de dados):
|
mysql-general.log |
Este registo
recolhe dados sobre as ligações e as desassociações de clientes, bem como sobre qualquer declaração SQL
executada na instância da base de dados do MySQL. Este registo é útil para a resolução de problemas e, normalmente, é OFF quando a operação
estiver concluída. |
Estão desativadas por predefinição. Para ativar as variáveis general_log , deve definir o valor ON . |
Registo binário | O servidor MySQL usa o registo binário para registar todas as declarações que modificaram os dados. A utilização principal deste registo é para fins de cópia de segurança e replicação. | Por predefinição, o parâmetro de registo binário está ativado no Cloud SQL para MySQL para permitir a recuperação e a implementação de réplicas de leitura.
Para ativar o registo binário, defina o parâmetro de configuração log_bin como
ON . |
Registo de transmissão | Contém declarações recebidas dos registos binários principais para implementar todas as modificações de dados na instância subordinada (réplica de leitura). | Aplica-se apenas a instâncias secundárias (escravas) e réplicas de leitura. |
Ver registos de operações do Cloud SQL para MySQL
O Cloud Logging é a plataforma principal para ver todos os detalhes dos registos. Pode selecionar registos diferentes e filtrar por nível de 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.
Exemplo
A captura de ecrã seguinte mostra como encontrar uma consulta específica no ficheiro mysql-slow.log
usando um intervalo de tempo personalizado como critério de filtro.
Monitorização da instância de base de dados do MySQL
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 principais atividades) 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 MySQL 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 MySQL 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 MySQL. A captura de ecrã seguinte mostra o gráfico de consultas do MySQL para as últimas 12 horas.
Monitorização de réplicas de leitura do MySQL
Pode monitorizar as réplicas de leitura de forma semelhante a uma 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 segundos (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 MySQL, que fornece um estado para as bases de dados principal e subordinada, bem como para o registo binário e o registo de retransmissão.
Pode usar a seguinte declaração SQL para verificar o estado da réplica de leitura:
mysql> SHOW SLAVE STATUS;
Monitorização do MySQL
Esta secção descreve os métodos básicos de monitorização do MySQL que são considerados tarefas de rotina realizadas por um DBA (Oracle ou MySQL).
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 no MySQL através de comandos e
declarações SQL. Por exemplo, o comando MySQL
SHOW PROCESSLIST
fornece os seguintes detalhes sobre a atividade da sessão:
mysql> SHOW PROCESSLIST;
Também pode consultar e filtrar os resultados SHOW PROCESSLIST
usando uma declaração SELECT
:
mysql> SELECT * FROM information_schema.processlist;
Monitorização de transações longas
Para identificar transações de execução prolongada em tempo real que possam originar
problemas de desempenho, pode consultar a vista dinâmica
information_schema.innodb_trx
. Esta vista mostra registos apenas para transações abertas em execução na instância da base de dados MySQL.
Monitorização de fechaduras
Pode monitorizar os bloqueios da base de dados através da vista dinâmica information_schema.innodb_locks
, que fornece informações em tempo real sobre as ocorrências de bloqueios que podem originar problemas de desempenho.