IBM Cloud Docs
Migrando para Databases for MySQL

Migrando para Databases for MySQL

Duas opções existem para migrar dados de bancos de dados MySQL existentes para IBM Cloud® Databases for MySQL. Recomendamos duas opções: mysqldump e mydumper. A melhor ferramenta para você depende de determinadas condições, incluindo conexão de rede, o tamanho do seu conjunto de dados e as necessidades de esquema intermediário.

Antes de iniciar

Antes de iniciar a sua migração de dados, você precisa de MySQL instalado localmente para que você tenha as ferramentas mysql e mysqldump .

O MySQL Workbench também fornece uma ferramenta gráfica para trabalhar com servidores e bancos de dados MySQL. Embora não seja estritamente necessário, também é possível usar a CLI do Cloud Databases, pois facilita a conexão e a restauração para uma nova implementação do Databases for MySQL.

mysqldump

Este utilitário cliente MySQL nativo é instalado por padrão e pode fazer backups lógicos, reproduzindo a estrutura e os dados da tabela, sem de fato copiar os arquivos de dados. mysqldump permite fazer dump de um ou mais bancos de dados MySQL para fins de backup ou para a transferência para outro servidor MySQL. Para obter mais informações, consulte a documentação do mysqldump.

mysqldump é apropriado para utilizar nas seguintes condições:

  • O conjunto de dados é menor que 10 GB.
  • O tempo de migração não é crítico, e o custo de retentativa da migração é baixo.
  • Não é necessário criar esquemas intermediários ou fazer transformações de dados.

Nós não recomendamos o mysqldump se alguma das seguintes condições forem atendidas:

  • Seu conjunto de dados é maior que 10 GB.
  • A conexão de rede entre os bancos de dados de origem e de destino é instável ou lenta.

Siga estas etapas usando a ferramenta mysqldump :

Execute mysqldump em seu banco de dados de origem para criar um arquivo SQL, que pode ser usado para recriar o banco de dados. No mínimo, a migração do mysql por meio da CLI requer os seguintes argumentos:

  • Hostname (-h bandeira)
  • número da porta (sinalização -P)
  • Username (-u bandeira)
  • -- ssl-mode = VERIFY_IDENTITY (os clientes requerem uma conexão criptografada e realizam verificação contra o certificado CA do servidor e contra o nome do hostname do servidor em seu certificado)
  • --ssl-ca (o nome do caminho do arquivo de autoridade de certificação (CA), que pode ser encontrado na guia da CLI de Terminais da página Visão geral na IU.)
  • Nome do banco de dados
  • arquivo de resultado (sinalização -r)

Seu comando CLI se parece com este

mysqldump -h <host_name> -P <port_number> -u <user_name> --ssl-mode=VERIFY_IDENTITY --ssl-ca=mysql.crt --set-gtid-purged=OFF -p <database_name> -r dump.sql

Para gerar um arquivo de log do job mysqldump que rastreia erros enquanto ele está em execução, use um comando como este

mysqldump -h <host_name> -P <port_number> -u <user_name> --log-error=error.log --ssl-mode=VERIFY_IDENTITY --ssl-ca=mysql.crt --set-gtid-purged=OFF -p ibmclouddb -r dump.sql

O mesmo pode ser feito enquanto importa, por exemplo

mysql -h <host_name> -P <port_number> -u admin --ssl-mode=VERIFY_IDENTITY --ssl-ca=mysql.crt -p ibmclouddb < dump.sql > import_logfile.log

Para obter mais informações sobre o uso do MySQL Replicação com Global Transaction Identifiers (GTIDs), consulte o Usando GTIDs para Failover e Scaleout no Manual de Referência MySQL .

O comando mysql tem muitas opções; ver a documentação oficial e referência de comando para uma visão fuller de suas capacidades.

Restaurando a saída de mysqldump

A saída resultante de mysqldump pode, então, ser transferida por upload para uma nova implementação do Databases for MySQL. Por ser SQL, a saída pode ser simplesmente enviada para o banco de dados por meio do comando mysql. Recomendamos que as importações sejam executadas com o usuário administrativo.

Veja a documentação Conectando com mysql para obter detalhes sobre conexão como admin usando mysql. Para se conectar usando o comando mysql, é necessário ter a sequência de conexões e o certificado TLS do usuário administrativo, que podem ser obtidos a partir da IU. O certificado precisa ser decodificado por meio de Base64 e armazenado como um arquivo local arbitrário. Para importar o dump.sql criado anteriormente para uma implementação de banco de dados chamada example-mysql, é possível chamar o comando mysql usando -f dump.sql como parâmetro. O parâmetro informa mysql para ler e executar as instruções SQL no arquivo.

Conforme observado na documentação Conectando-se ao mysql, o plug-in da CLI do Cloud Databases simplifica a conexão. A importação anterior mysql pode ser executada usando um comando como:

mysql -h <host_name> -P <port_number> -u admin --ssl-mode=VERIFY_IDENTITY --ssl-ca=mysql.crt -p ibmclouddb < dump.sql

Caso nenhum usuário seja especificado, o comando automaticamente utilizará o usuário administrativo e solicitará a senha de maneira interativa. O certificado TLS é recuperado e usado automaticamente.

Durante a execução do processo de restauração, são emitidas várias mensagens relacionadas às mudanças que estão sendo feitas na implementação do banco de dados.

mydumper

mydumper e sua ferramenta de backup lógica correlacionada, myloader, usam recursos de multiencadeamento, semelhantes a mysqldump para a execução da migração de dados; no entanto, mydumper oferece várias melhorias, como backups paralelos, leituras consistentes e facilidade de gerenciamento da saída. O paralelismo melhora o desempenho durante os processos de importação e de exportação, e o gerenciamento da saída é mais fácil pois as tabelas individuais são colocadas em arquivos separados.

O uso de mydumper é adequado nas seguintes condições:

  • O conjunto de dados tem mais que 10 GB.
  • A conexão de rede entre bancos de dados de origem e destino é rápida e estável.
  • É necessário criar esquemas intermediários ou fazer transformações de dados.

O uso de mydumper não é recomendado caso alguma das condições a seguir seja verdadeira:

  • Seu conjunto de dados é menor que 10 GB.
  • A conexão de rede entre os bancos de dados de origem e de destino é instável ou muito lenta.

Antes de iniciar a migração de dados utilizando mydumper, consulte Projeto mydumper para obter detalhes e instruções passo a passo sobre a instalação e o ambiente de desenvolvedor necessário.

Em seguida, consulte a página Como utilizar mydumper para obter informações sobre como usar as ferramentas mydumper e myloader para a execução da migração de dados completa.

Ajustando as variáveis configuráveis de InnoDB

É possível configurar as seguintes opções de InnoDB do MySQL para ajustar o desempenho com base na capacidade da máquina e na carga de trabalho do banco de dados.

innodb_buffer_pool_size_percentage

  • Descrição: o parâmetro innodb_buffer_pool_size_percentage value define a quantidade de memória dedicada do contêiner de banco de dados.
  • Configuração padrão: 50
  • Máximo: 100
  • Mín: 10
  • Requer reinicialização: True

Como o rpóprio banco de dados usa uma determinada quantidade de memória, caso o parâmetro innodb_buffer_pool_size_percentage value seja configurado com um valor muito alto, os requisitos de memória do banco de dados + innodb_buffer_pool_size_percentage podem ultrapassar os limites de memória disponíveis, resultando em um estado de falta de memória (OOM).

O valor do parâmetro innodb_buffer_pool_size_percentage difere baseado no tamanho do seu banco de dados. O valor padrão é 50%, considerado seguro para bancos de dados de todos os tamanhos. Configure o valor conforme necessário; em caso de OOM, a configuração do valor está muito alta e deve ser diminuída.

innodb_flush_log_at_trx_commit

  • Descrição: controla o balanceamento entre a conformidade ACID restrita para operações de confirmação e mais alto desempenho

  • Configuração padrão: 2

A configuração padrão 2 não é totalmente compatível com ACID (para obter a compatibilidade total, é necessário usar a configuração padrão 1), mas apresenta melhor desempenho e ainda é considerada segura.

  • Máximo: 2
  • Mín: 0
  • Requer reinicialização: false

Para mais informações, consulte MySQL innodb_flush_log_at_trx_commit documentação.

innodb_log_buffer_size

  • Descrição: o tamanho em bytes do buffer utilizado por InnoDB para a gravação nos arquivos de log do disco.
  • Configuração padrão: 32 MiB
  • Máximo: 4294967295
  • Mínimo: 1048576
  • Requer reinicialização: True

Para mais informações, consulte MySQL documentação innodb_log_buffer_size.

innodb_log_file_size

  • Descrição: tamanho do arquivo de log do InnoDB em bytes.
  • Configuração padrão: 64 MB
  • Máximo: 274877906900
  • Mínimo: 4194304
  • Requer reinicialização: True

Para mais informações, consulte MySQL documentação innodb_log_file_size.

innodb_lru_scan_depth

  • Descrição: um parâmetro que influencia os algoritmos e a heurística da operação de liberação do buffer pool do InnoDB.
  • Configuração padrão: 1024
  • Máximo: não há valor máximo
  • Mínimo: 100
  • Requer reinicialização: True

Para mais informações, consulte MySQL documentação innodb_lru_scan_depth.

innodb_read_io_threads

  • Descrição: o número de encadeamentos de E/S para operações de leitura no InnoDB.
  • Configuração padrão: 4
  • Máximo: 64
  • Mínimo: 1
  • Requer reinicialização: True

Para mais informações, consulte MySQL documentação innodb_read_io_threads.

innodb_write_io_threads

  • Descrição: o número de encadeamentos de E/S para operações de leitura no InnoDB.
  • Configuração padrão: 4
  • Máximo: 64
  • Mínimo: 1
  • Requer reinicialização: True

Para mais informações, consulte MySQL documentação innodb_write_io_threads.

net_read_timeout

  • Descrição: o número de segundos de espera para a obtenção de mais dados de uma conexão antes da interrupção da leitura.
  • Configuração padrão: 30
  • Max:
  • Mínimo: 1
  • Requer reinicialização: True

Para mais informações, consulte MySQL documentação net_read_timeout.

net_write_timeout

  • Descrição: o número de segundos de espera para a gravação de um bloco em uma conexão antes da interrupção da gravação.
  • Configuração padrão: 60
  • Max:
  • Mínimo: 1
  • Requer reinicialização: True

Para mais informações, consulte net_write_timeout documentação.