J’ai récemment du migrer des bases de données mysql entre deux serveurs debian auto-hébergés. Ayant fait cet type de migration il y a quelques mois et n’ayant pas noté les commandes, j’ai du reconstituer les commandes de mémoire, du coup, voici une documentation (pour moi principalement, mais ça peut servir à d’autres).
Utilisez backupninja pour backupper régulièrement ses bases de données. Cela permet d’avoir des dumps pour faire la migration.
apt-get install backupninja cp /usr/share/doc/backupninja/examples/example.mysql /etc/backup.d/ chmod go-rwx /etc/backup.d/example.mysql backupninja -n
Profitez-en pour utiliser mariadb qui est moins pire que mysql (à défaut de migrer vers postgresql ce qui est parfois plus coûteux).
Migrer les grants (utilisateurs et droits de ces utilisateurs)
apt-get install percona-tools pt-show-grants | grep -v root | grep -v debian > grants.sql ssh new_server rsync original_server:~/grants.sql . cat grants.sql | mysql
Il est parfois utile d’ajouter ses credentials dans ~/.my.cnf :
[client] user = root password = secret-password
Migrer les données
rsync --exclude "mysql.sql.gz" --exclude="information_schema.sql.gz" --exclude="performance_schema.sql.gz" -avz original_server:/var/backups/mysql/sqldump/*.sql.gz . for i in *.sql.gz; do echo mysqladmin create ${i%.sql.gz}; done for i in *.sql.gz; do zcat $i | mysql ${i%.sql.gz} ; done
Voilà.