Ao migrar ou sincronizar dados para um banco de dados de destino, geralmente é necessário recriar manualmente todas as contas do banco de dados source. Esse processo consome tempo, exige conhecimento avançado de banco de dados e está sujeito a omissões. O Data Transmission Service (DTS) automatiza essa etapa ao migrar as contas do banco de dados source, incluindo senhas e privilégios, para o banco de dados de destino como parte da tarefa de migração ou sincronização.
Pré-requisitos
Antes de começar, verifique se:
As contas dos bancos de dados source e de destino usadas na tarefa do DTS possuem os privilégios necessários. Consulte Privilégios necessários para obter os comandos de concessão exatos.
Schema Migration ou Schema Synchronization está selecionado como tipo de migração ou sincronização. Ou seja, na etapa Configure Objects and Advanced Settings do assistente Create Task, Schema Synchronization está selecionado para o parâmetro Synchronization Types, ou Schema Migration está selecionado para o parâmetro Migration Types.
Bancos de dados compatíveis
Os bancos de dados MySQL podem ser instâncias do ApsaraDB RDS for MySQL ou bancos de dados MySQL autogerenciados.
|
Banco de dados source |
Banco de dados de destino |
|
MySQL |
MySQL, PolarDB for MySQL |
|
PolarDB for MySQL |
MySQL, PolarDB for MySQL |
Privilégios necessários
Para executar a migração de contas, conceda os seguintes privilégios às contas da tarefa do DTS tanto no banco de dados source quanto no de destino.
Banco de dados source
Execute os comandos abaixo usando uma conta com privilégios elevados. Substitua user pela conta usada para configurar a tarefa do DTS.
grant SELECT on mysql.user to user@'%';
grant SELECT on mysql.db to user@'%';
grant SELECT on mysql.columns_priv to user@'%';
grant SELECT on mysql.tables_priv to user@'%';
Banco de dados de destino
Execute os comandos abaixo usando uma conta com privilégios elevados. Substitua user pela conta usada para configurar a tarefa do DTS.
grant SELECT on mysql.user to user@'%';
grant CREATE USER on *.* to user@'%';
grant GRANT OPTION on *.* to user@'%';
Ativar a migração de contas
Na etapa Advanced Settings do assistente Create Task, defina Whether to Migrate Accounts como Yes.
-
Selecione as contas a serem migradas.
Os nomes das contas seguem o formato
<username>@<host>, onde<host>é o host a partir do qual a conta pode se conectar. Conclua a configuração restante da tarefa. Para mais detalhes, consulte Visão geral dos cenários de sincronização de dados ou Visão geral dos cenários de migração de dados.
Resultados da migração
Após a execução da tarefa, cada conta apresentará um dos seguintes resultados:
Migrated: A conta e todos os seus privilégios foram migrados integralmente para o banco de dados de destino.
Not migrated: A conta foi ignorada. Para visualizar detalhes, acesse a aba User_Privilege no módulo Schema Migration da tarefa do DTS. Contas que já existem no banco de dados de destino aparecem listadas como migradas com a anotação
user already exists. Para verificar todas as condições que impedem a migração, consulte Limitações.
Limitações
As condições a seguir impedem a migração de contas ou afetam o comportamento da migração. Verifique as condições aplicáveis à versão do seu banco de dados e aos tipos de conta antes de executar a tarefa.
Versão do banco de dados de destino
A migração de contas não é compatível se o banco de dados de destino for uma instância MySQL 5.6 ou um cluster PolarDB for MySQL.
Restrições para source MySQL 8.0
Contas com privilégios dinâmicos não podem ser migradas quando o banco de dados source é MySQL 8.0.
Restrições de privilégios
Não é possível migrar contas com RELOAD, CREATE TABLESPACE, FILE ou ALL PRIVILEGES para um banco de dados de destino MySQL ou PolarDB for MySQL.
Restrições de tipo de conta
Contas de sistema (root, mysql.infoschema, mysql.session, mysql.sys) e contas integradas não são elegíveis para migração. Selecionar essas contas faz com que a tarefa do DTS retorne
Access denied for user 'XXXX'.Contas já existentes no banco de dados de destino não podem ser migradas. Isso pode ocorrer se uma tarefa do DTS for reiniciada ou se houver múltiplas tarefas do DTS em execução.
Contas não autorizadas não podem ser migradas.
Comportamento após a migração
Não é possível redefinir senhas de contas durante a migração.
Contas privilegiadas tornam-se contas padrão no banco de dados de destino e perdem as permissões de gerenciamento de banco de dados.
Recomendamos não migrar contas da instância de banco de dados Alibaba Cloud de destino acessadas exclusivamente via
localhostou127.0.0.1, pois essas contas não oferecem suporte à migração de dados.
Perguntas frequentes
Por que não consigo selecionar uma conta?
A conta é uma conta de sistema ou já existe uma conta com o mesmo nome no banco de dados de destino.
Por que a lista de contas está vazia?
As contas da tarefa do DTS não possuem os privilégios necessários no banco de dados source ou de destino. Verifique os privilégios usando os comandos de concessão em Privilégios necessários.