Ton logfile innodb est beaucoup trop petit, essayes ceci :
service mysql stop
rm -vf /var/lib/mysql/db-master/ib_log*
innodb_log_file_size = 1024M
service mysql start (il va créer les fichier ib_logfile1 et 2)


C'est un autre débat mais je ne pense pas qu'un dump mysqldump soit "mauvais", il a le mérite d'être compatible entre versions de MySQL / MariaDB.

Je fais un dump par table, 8 en //, tout simplement :

mysql -ABN -e "SELECT TABLE_SCHEMA, TABLE_NAME FROM TABLES WHERE TABLE_SCHEMA NOT LIKE '%_schema'" information_schema | xargs -n2 -P8 -I {} dash -c 'a="{}"; echo "$a" | while read b c ; do mysqldump $b $c | gzip -9 >backup/$b.$c.sql.gz ; break ; done'

(la boucle while read est moche mais c'est ce qui m'est venu à l'esprit sans lire de manpage)

Tu peux ainsi restaurer de la même manière, en parallèle grace à xargs.


Greg


Le 10 décembre 2013 21:14, DjinnS DjinnS <snnijd@gmail.com> a écrit :

C'est le but de faire plus d'io :) avec une thread d'import tu ne vas pas exploiter les capacité de ton serveur.

Ce qui te limite c'est MySQL. Ce n'est pas un problème de conf. Le disable/enable  keys est très important.

Si tu ne changes pas de version de MySQL tu peux le faire avec une simple copie (voire même un rsync avec le dernier suite à un lock+flush).

Si tu changes de version il vaut mieux faire un export/import pour bien reconstruire les données.

Le 10 déc. 2013 14:43, "Axel Vittecoq" <avittecoq@multiposting.fr> a écrit :

oui mysqldump c'est une mauvaise idée en fin de compte. j'ai lançé ça un peu vite avant le WE en pensant que 2 jours lui suffirait !

les import parallèles ça ferait plus d'IO en même temps donc pas forcement mieux?!

le load data à l'air intéressant, ça nécessite un peu de préparation d'abord quand même

au final je pensais faire, comme suggéré, un backup à froid: une copie du datadir (/var/lib/mysql) d'un slave que je peux arrêter à souhait.

ou dans le même genre j'ai repéré ça http://www.percona.com/software/percona-xtrabackup pour du hotbackup mais ça doit bien marcher à froid.


full InnoDB

[mysqld]
character-set-server                            = utf8
user                                            = mysql
port                                            = 3306
socket                                          = /var/run/mysqld/mysqld.sock
pid-file                                        = /var/run/mysqld/mysqld.pid
log-error                                       = /var/log/mysql/mysqld.err
log-slow-queries                                = /var/log/mysql/mysqld-slow_queries.log
long_query_time                                 = 300
basedir                                         = /usr
datadir                                         = /var/lib/mysql/db-master
skip-external-locking
key_buffer                                      = 16M
max_allowed_packet                              = 32M
table_cache                                     = 64
sort_buffer_size                                = 512K
net_buffer_length                               = 8K
read_buffer_size                                = 256K
read_rnd_buffer_size                            = 512K
default-storage-engine = INNODB
innodb_buffer_pool_size = 100G
innodb_additional_mem_pool_size = 20M
innodb_data_file_path = ibdata1:10M:autoextend:max:10G
innodb_log_file_size = 5M
innodb_log_buffer_size = 8M
innodb_log_files_in_group=2
innodb_flush_log_at_trx_commit = 1
innodb_lock_wait_timeout = 50
innodb_file_per_table

tmpdir en tmpfs
innodb_flush_log_at_trx_commit = 0 pour le moment

Le 9 décembre 2013 23:10, Greg <greg-frsag@duchatelet.net> a écrit :
C'est vrai que c'est trop lent... Peux ton avoir une partie de la config MySQL ? Ce sont des tables InnoDB ?


Le 9 décembre 2013 20:21, DjinnS DjinnS <snnijd@gmail.com> a écrit :

Salut,

Fais un dump par table. Ensuite tu importes en parallèle. Par exemple tu fais 4 threads d'import. L'idée c'est de répartir les tables équitablement.

Dans ton dump mets les options pour le disable keys/ensable keys.

La parallélisation te permettra de tirer parti de ton hard.

Dans l'idéal tu peux aussi passer par un autre disque que le serveur final. Sur un lan privé tu auras tendance à "piper" le dump direct vers l'import. Tu gagnes sur les io.

--
Guillaume

Le 9 déc. 2013 19:36, "Joël DEREFINKO" <joel.derefinko@118218.fr> a écrit :

A voir aussi : si tes tables contiennent des index (ce dont je ne doute pas vu la volumétrie), il est préférable supprimer les index avant le restore (donc idéalement avant le dump).

Pourquoi ? à chaque insert, les index sont recalculés. Si au début ca va vite, après quelques millions de lignes, ca devient plus coton.

 

Une fois la restore faite, remettre les index en place.

 

Joël.

 

From: frsag-bounces@frsag.org [mailto:frsag-bounces@frsag.org] On Behalf Of Thomas Pedoussaut
Sent: lundi 9 décembre 2013 16:39
To: Axel Vittecoq
Cc: French SysAdmin Group
Subject: Re: [FRsAG] import dump MySQL très lent

 

On 2013-12-09 16:33, Axel Vittecoq wrote:

Bonjour,

 

Je vous expose mon problème:

 

pour y migrer notre master MySQL

actuellement c'est un Raid0 soft de SSD, 24G RAM, Xeon i7 W3520

 

Il y a environ 400G à migrer selon:

SELECT table_schema "DB Name", Round(Sum(data_length + index_length) / 1024 / 1024, 1) "DB Size in MB"  FROM   information_schema.tables  GROUP  BY table_schema;

 

J'ai fait un dump classique (qui pèse 200G). le dump a été transféré sur le serveur.

J'importe le dump dans MySQL (mysql < /mon/dump.sql)

Mauvais outils .....

http://dev.mysql.com/doc/refman/5.6/en/load-data.html

Sinon jouer avec alter table ... disable keys / enable keys.

--
Thomas


_______________________________________________
Liste de diffusion du FRsAG
http://www.frsag.org/


_______________________________________________
Liste de diffusion du FRsAG
http://www.frsag.org/



_______________________________________________
Liste de diffusion du FRsAG
http://www.frsag.org/



_______________________________________________
Liste de diffusion du FRsAG
http://www.frsag.org/


_______________________________________________
Liste de diffusion du FRsAG
http://www.frsag.org/