Skip to main content

Migration

Migration

La facon la plus simple est de faire un dump des données en SQL via mysqldump et de reinjecter les données dans une base vierge. Malheuresement ce n'est pas forcement possible du au fait de la taille des données. Nous allons essayer de faire une migration directe

InnoDB Fast Shutdown

Le mode d'arrêt InnoDB. Si la valeur est 0, InnoDB effectue un arrêt lent, une purge complète et une fusion de la mémoire tampon de modification avant la fermeture. Si la valeur est 1 (valeur par défaut), InnoDB ignore ces opérations à l’arrêt, processus appelé arrêt rapide. Si la valeur est 2, InnoDB vide ses journaux et s’arrête, comme si MySQL s’était écrasé; aucune transaction validée n'est perdue, mais l'opération de récupération sur incident prend plus de temps au prochain démarrage.

L'arrêt lent peut prendre des minutes, voire des heures dans les cas extrêmes, où d'importantes quantités de données sont encore mises en mémoire tampon. Utilisez la technique d'arrêt lent avant de mettre à niveau ou de rétrograder les versions majeures de MySQL, afin que tous les fichiers de données soient entièrement préparés au cas où le processus de mise à niveau met à jour le format de fichier. Il est possible de voir la variable via

SHOW SESSION VARIABLES LIKE 'innodb_fast%'; 
+----------------------+-------+ 
| Variable_name | Value | 
+----------------------+-------+ 
| innodb_fast_shutdown | 1 | 
+----------------------+-------+ 
1 row in set (0,02 sec)

et positionner la valeur à 0

mysql> set global innodb_fast_shutdown=0; Query OK, 0 rows affected (0,00 sec)


Migration

  1. Passer le maximum de table InnoDB qui ont des capacités auto reparatrice
  2. Bloquer les connections entrantes via iptables 
  3. executer mysqlcheck
pilou@lubuntu:~/mysql80/mysql-8.0.13-linux-glibc2.12-x86_64$ ./bin/mysqlcheck --defaults-file=/home/pilou/mysql80/mysql-8.0.13-linux-glibc2.12-x86_64/my.cnf -u root -h localhost -p --all-databases --check-upgrade 
Enter password: 
crm.customer OK 
mysql.columns_priv OK 
mysql.component OK 
mysql.db OK 
mysql.default_roles OK 
mysql.engine_cost OK 
mysql.func OK 
mysql.general_log OK 
mysql.global_grants OK 
mysql.gtid_executed OK 
mysql.help_category OK 
mysql.help_keyword OK 
mysql.help_relation OK 
mysql.help_topic OK 
mysql.innodb_index_stats OK 
mysql.innodb_table_stats OK 
mysql.password_history OK 
mysql.plugin OK 
mysql.procs_priv OK
mysql.proxies_priv OK
mysql.role_edges OK
mysql.server_cost OK 
mysql.servers OK 
mysql.slave_master_info OK 
mysql.slave_relay_log_info OK 
mysql.slave_worker_info OK 
mysql.slow_log OK 
mysql.tables_priv OK 
mysql.time_zone OK 
mysql.time_zone_leap_second OK 
mysql.time_zone_name OK 
mysql.time_zone_transition OK 
mysql.time_zone_transition_type OK 
mysql.user OK 
sqlmode.test OK 
sys.sys_config OK 
testdb.import OK 
testdb.myidtables OK 
testdb.t2 OK 
testdb.t4 OK