Para fins de teste, tenho que criar uma cópia de um banco de dados MySQL de produção que não pode ser tocado.
Estes são os passos que eu seguiria:
Crie um backup de banco de dados de tamanho reduzido:
mysqldump prodDB --single-transaction --where="true limit 20" > test.sql
Crie um novo banco de dados de teste:
testDB
Carregue o arquivo dump no novo banco de dados de teste:
mysql testDB < test.sql
Este procedimento está correto?
Posso ter certeza de que o banco de dados original não será modificado de forma alguma?
Obrigada!
Sistema: MySQL 5.1 com InnoDB
Se você não tiver restrições de chave estrangeira, sim, isso está correto.
Se você tiver restrições de chave estrangeira, alguns dados podem ficar inacessíveis. Você teria que consertar.
Depois do mysqldump faça o seguinte:
Se você voltar 0, então sim, o banco de dados original não será modificado de forma alguma
É uma boa ideia criar um usuário somente leitura para backups.
Isso segue o princípio geral de não conceder a um usuário privilégios desnecessários, para reduzir as chances de efeitos colaterais inesperados.
http://sys-log.bencane.com/2011/12/creating-a-read-only-backup-user-for-mysqldump/
Geralmente, também crio um usuário somente leitura para todos os meus bancos de dados que uso para consultas diárias, a menos que tenha certeza de que precisarei modificar as tabelas/esquema etc. Por que trabalhar com um usuário que pode descartar o banco de dados completamente se eu cometer um erro, quando eu só preciso selecionar algumas linhas das tabelas?