4 votes

Migrer de MyISAM vers XtraDB

Juste quelques questions que je ne trouve nulle part sur la migration vers XtraDB.

Mon groupe utilise des bases de données MyISAM en production et je me demandais à quel point il est difficile de migrer vers XtraDB de Percona et comment procéder?

Devrais-je d'abord migrer de MyISAM vers InnoDB ou puis-je passer directement à XtraDB?

J'ai installé Percona Server avec le package XtraDB sur ma machine Fedora mais la documentation n'est pas très utile quant à son utilisation, je me demande donc si Percona se contente de s'appuyer sur une installation MySQL standard ou s'il constitue une entité distincte?

Des liens vers la documentation sur la façon de résoudre mes questions seraient fantastiques.

5voto

Adam Points 11

Vous pourriez convertir soit avant soit après. Je préfère avant car les données seront prêtes une fois Percona Server installé et opérationnel. Je dis cela parce qu'il y a quelques points délicats à considérer concernant les tables de droits (notamment la table mysql.user de MySQL 5.0 qui comporte 37 colonnes tandis que celle de MySQL 5.5 en comporte 42). Je ne voudrais pas avoir à gérer des problèmes de connectivité ou de droits SQL en premier lieu.

Voici le script pour effectuer la conversion InnoDB :

Étape 01) Exécutez ces commandes

echo "SET SQL_LOG_BIN = 0;" > /root/ConvertMyISAMToInnoDB.sql
MYSQL_CONN="-u... -p..."
mysql ${MYSQL_CONN} -AN -e"SELECT CONCAT('ALTER TABLE ',table_schema,'.',table_name,' ENGINE=InnoDB;') InnoDBConversionSQL FROM information_schema.tables WHERE engine='MyISAM' AND table_schema NOT IN ('information_schema','mysql','performance_schema') ORDER BY (data_length+index_length)" > /root/ConvertMyISAMToInnoDB.sql

Le script recherche toutes les tables dans toutes les bases de données et les convertit par ordre de taille, en commençant par la plus petite.

Étape 02) Exécutez le script

mysql ${MYSQL_CONN} -A < /root/ConvertMyISAMToInnoDB.sql

Étape 03) Exécutez cette requête

SELECT SUM(data_length+index_length)/POWER(1024,2) RecommendedInnoDBBufferPoolSize
FROM information_schema.tables WHERE engine='InnoDB';

Cela vous donnera la valeur suggérée (idéale, dans un monde parfait) pour innodb_buffer_pool_size. Si ce nombre dépasse 75 % de la RAM du serveur, utilisez alors 75 % de la RAM.

Étape 04) service mysql stop

Étape 05) rm -f /var/lib/mysql/ib_logfile* /var/lib/mysql/ibdata1

Étape 06) Ajoutez ceci à /etc/my.cnf

[mysqld]
innodb_file_per_table
innodb_buffer_pool_size=M
innodb_log_file_size=512M
innodb_log_buffer_size=64M
innodb_open_files=4096
innodb_read_io_threads=64
innodb_write_io_threads=64
innodb_io_capacity=5000
key_buffer_size=8M

AVIS

  • innodb_log_file_size devrait être à 25 % de innodb_buffer_pool_size
  • key_buffer_size peut désormais être réduit

Étape 07) service mysql start

Cela prendra un certain temps (2-4 minutes) car mysqld va créer

  • ib_logfile0
  • le formater
  • créer ib_logfile1
  • le formater.

Étape 08) Effectuez la mise à niveau vers Percona

2voto

Michael Hampton Points 232226

XtraDB est un remplacement plug-and-play pour InnoDB. Les tables MyISAM existantes ne sont pas affectées. Pour réellement tirer profit de XtraDB, vous devrez les convertir en InnoDB. Vous pouvez le faire soit avant, soit après avoir installé XtraDB.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X