Il y a 389 articles et 19 utilisateurs inscrits (ce bandeau est défini dans MediaWiki:Sitenotice)

MySQL

De AJLSM
Aller à la navigation Aller à la recherche

Commandes utiles

  • Pour voir les dates créée et modifiée des tableaux:
select table_schema, table_name, create_time, update_time from information_schema.tables where table_schema='bmorleans_prod_pleade' order by create_time;
  • Pour voir la progression pendant un import d'un gros fichier dans MySQL:
sudo apt-get install pv
pv /data/client/bm-orleans/bmorleans_prod_pleade.sql | mysql -u bmorleans_pleade -p6DvP8ana bmorleans_prod_pleade

Configuration de MySQL pour Pleade par défaut

  • Pour voir le max_allowed_packet pour MySQL :
show variables like 'max_allowed_packet';
  • Il faut modifier le fichier /etc/mysql/my.cnf
  • Changer tous les "max_allowed_packet" à 100M
  • Il faut changer max_allowed_packet=100M pour ajouter des gros fichiers EAD dans la base de données de Pleade :
sudo mysqld --max_allowed_packet=100M
sudo service mysql restart

ou

mysql -u root -p
set global max_allowed_packet=1024 * 1024 * 100;

Pour faire un mysqldump avec max_allowed_packet=100M :

mysqldump --max_allowed_packet=100M -u pleade -p  pleade_preprod > /home/ajlsm/backup/update-PREPROD-ad84-2014-11-05-backup.sql
  • Si non, vous pouvez avoir une erreur comme :

ERROR (2014-06-20) 11:45.54:450 [sdx.framework] (/pleade-mets/edit/ead-publish.xml) http-20380-66/LoggingUtils: Impossible d'ajouter un document avec l'identifiant « FRAD084_paroissiaux » dans l'entrepôt « ead-docs » : « Impossible d'exécuter la requête « INSERT INTO module_eadeac_ead_docs (id,data) VALUES (?, ?) » : impossible de lire l'index de recherche de «  » : « Packet for query is too large (26462104 > 16777216). You can change this value on the server by setting the max_allowed_packet' variable. » »

mysqlreport

mysqlreport est installer normalement avec mysql sur linux. Il donne des informations sur la performance de mysql utiles. Voir cette page pour davantage d'info : http://hackmysql.com/nontech

show processlist

Après avoir connecté à mysql terminal, on peut faire

show processlist;

Pour voir les requêtes à cette instant.


Encodage des caratéres

L'encodage par défaut de MySQL est *ISO Latin1*. Ainsi, plusieurs caractères accentués ne sont pas gérés. Les problèmes apparaissent souvent au niveau de la partie gauche de la fenêtre EAD (car les données correspondantes sont dans la base de données).

Pour corriger ce problème, il faut changer par défaut l'encodage de MySQL en *utf8*.

Il y a deux manières de régler le problème.

A) Il faut ajouter les deux lignes suivantes dans les sections client et mysqld du fichier my.cnf.

[client]
default-character-set = utf8

[mysqld]
character-set-server = utf8
      • OU ***

B) Ajouter le paramètrage suivant à la connexion jdbc dans tomcat/conf/context.xml:

?useEncoding=true&characterEncoding=UTF-8

Exemple:

<Resource name="jdbc/pleade3" auth="Container" type="javax.sql.DataSource" maxActive="100" maxIdle="30" maxWait="10000" 
		url="jdbc:mysql://localhost/pleade310?useEncoding=true&amp;characterEncoding=UTF-8" driverClassName="com.mysql.jdbc.Driver" username="sdxapp" password="sdxapp-pwd"/>

Source

Optimisation : Modification de la configuration de la base de données Pleade

Désactivation du cache

Changement de la config

query_cache_type        = 1
query_cache_limit       = 1M
query_cache_size        = 4G

par

query_cache_type        = 0
query_cache_limit       = 1M
query_cache_size        = 0

Modification à chaud :

SET global query_cache_type = 0;
SET global query_cache_size = 0;

Ajout des index manquants

MySQL [(NONE)]> SELECT TABLE_SCHEMA, TABLE_NAME,INDEX_NAME,GROUP_CONCAT(COLUMN_NAME)AS COLUMN_NAMES FROM INFORMATION_SCHEMA.STATISTICS WHERE INDEX_NAME LIKE 'dba%' GROUP BY TABLE_SCHEMA, TABLE_NAME,INDEX_NAME ORDER BY INDEX_NAME;
+-------------------+-------------+------------+------------------------+
| TABLE_SCHEMA      | TABLE_NAME  | INDEX_NAME | COLUMN_NAMES           |
+-------------------+-------------+------------+------------------------+
| pleade_persistant | ark         | dba1       | name___ark             |
| pleade_persistant | ark         | dba2       | method,updated         |
| pleade_internet   | o_anotice   | dba4       | STATUS,idiiif          |
| pleade_internet   | o_anotice   | dba5       | idiiif,STATUS          |
| pleade_slecture   | publication | dba6       | insertfinished,started |
| pleade_slecture   | publication | dba7       | started,insertfinished |
| pleade_persistant | ark         | dba8       | updated,method         |
+-------------------+-------------+------------+------------------------+
7 ROWS IN SET (0.015 sec)

Les index sur la table ark ont permis, avec le retrait du cache de 4Go, d'améliorer drastiquement les performances.

Commandes utiles MAC OS X

  • Démarrer mysql:
sudo port load mysql56-server
  • Arrêter mysql:
sudo port unload mysql56-server