Migramos nosso servidor web para um servidor mais novo. Temos o antigo e o novo em execução enquanto testamos o novo. O antigo ainda está sendo usado em produção por nossos clientes e equipe interna, portanto, está mais atualizado do que o novo, que estava atualizado há uma semana, quando tirou uma foto instantânea e fez a migração. Portanto, preciso migrar os novos dados do servidor antigo para o novo servidor. Qual é o melhor jeito de concluir isso? Se eu fizer um mysqldump e importar para o novo servidor, ele substituirá os dados que já estão lá? Tudo bem se assim for, apenas preocupado com a duplicação de registros. Basicamente, só quero pegar tudo o que está no servidor antigo e despejá-lo no novo quando não houver ninguém no sistema.
relate perguntas
-
Existem ferramentas de benchmarking do MySQL? [fechado]
-
Onde posso encontrar o log lento do mysql?
-
Como posso otimizar um mysqldump de um banco de dados grande?
-
Quando é o momento certo para usar o MariaDB em vez do MySQL e por quê?
-
Como um grupo pode rastrear alterações no esquema do banco de dados?
Então, você deseja importar os novos dados sem sobrescrever e sem chaves duplicadas, certo? Não sou especialista, mas, a meu ver, você pode:
mysqlimport
- nenhum deles duplicará as linhas (eles substituirão as linhas existentes ou --ignore as duplicatas),mysqldump
sem criar o banco de dados, a tabela e usando a opção Insert Ignore (--insert-ignore
), assim ele vai inserir os dados e pular as chaves duplicadas,--force
na importação, para pular erros durante a inserção, desta forma se já houver uma linha com a chave sendo inserida, não irá gerar erro, basta ignorá-la e ir para a próxima inserção.Você pode consultar outras perguntas já respondidas e tentar encontrar a melhor solução: aqui ou aqui .
Tentei com a
--insert-ignore
opção no mysqldump e ao importar não tive erros, os novos dados foram inseridos sem duplicatas.Ao despejar, use a opção de não gravar a
CREATE DATABASE
declaração.Ao recarregar, especifique um novo banco de dados vazio no
mysql
comando.Isso colocará os dados importados em um banco de dados diferente. Você pode então compará-los, ou fazer o que quer que seja. No entanto, se você planeja movê-los para o antigo nome do banco de dados, terá que fazer
DROP TABLE
+RENAME TABLE
uma tabela por vez para movê-los para o lugar.Como alternativa, você pode mover os dados antigos para fora do caminho (soltar + renomear) e carregá-los no lugar.