Migración de MyISAM a XtraDB

Sólo algunas preguntas que no puedo encontrar en ninguna parte sobre la migration a XtraDB.

Mi grupo ha estado utilizando MyISAM dbs para la producción y se preguntaba lo difícil que es migrar a XtraDB de Percona y ¿cómo lo haría?

¿Tendría que migrar MyISAM a InnoDB primero o puedo ir directamente a XtraDB?

He instalado Percona Server con el package XtraDB en mi máquina de Fedora, pero la documentation no es muy útil en cuanto a cómo usarlo así que me preguntaba si Percona sólo piggyback en una installation estándar de MySQL o es una entidad separada?

Enlaces a la documentation sobre cómo resolver mis preguntas sería fantástico.

Puede convertir antes o después. Prefiero antes porque los datos estarán listos una vez que Percona Server esté instalado, funcionando. Digo esto porque hay algunas cosas peludas que usted tiene que dirigir con respecto a las tablas de la concesión. (Esto incluye especialmente la tabla mysql.user ya que las tablas mysql.user de MySQL 5.0 tienen 37 columnas mientras que las tablas mysql.user de MySQL 5.5 tienen 42 columnas) No querría meterse con problemas de conectividad o de Grants de SQL primero.

Aquí está el script para realizar la conversión InnoDB:

Paso 01) Ejecutar estos commands

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 

La secuencia de commands busca todas las tablas en todas las bases de datos puede convertirlos en order de tamaño comenzando por el más pequeño.

Paso 02) Ejecutar el script

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

Paso 03) Ejecutar esta consulta

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

Esto le dará el valor sugerido (ideal, mundo perfecto) para innodb_buffer_pool_size. Si este número excede el 75% de la RAM del server, utilice el 75% de la RAM.

Paso 04) service mysql stop

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

Paso 06) Agregue lo siguiente a /etc/my.cnf

 [mysqld] innodb_file_per_table innodb_buffer_pool_size=<SizeFromStep03>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 

Caídas

  • innodb_log_file_size debe ser el 25% de innodb_buffer_pool_size
  • key_buffer_size ahora se puede networkingucir

Paso 07) service mysql start

Esto tomará un time (2-4 min) porque mysqld creará

  • ib_logfile0
  • formatearlo
  • crear ib_logfile1
  • formatearlo

Paso 08) Realizar actualización Percona

XtraDB es un reemploop para InnoDB. Las tablas MyISAM existentes no se ven afectadas. Para get realmente cualquier beneficio de XtraDB, tendrá que convertirlos a InnoDB. Puede hacerlo antes o después de instalar XtraDB.