Projet Socle ENT
Pages enfant
  • Particularités MySQL (esup 4)

Comparaison des versions

Légende

  • Ces lignes ont été ajoutées. Ce mot a été ajouté.
  • Ces lignes ont été supprimées. Ce mot a été supprimé.
  • La mise en forme a été modifiée.
Commentaire: Migrated to Confluence 5.3
Avertissementinfo
titleImportantConfiguration

Voici un exemple de fichier de configuration, mais les modifications seront à apporter au fichier my.ini fourni avec package MySQL téléchargéMySQL n'est pas recommandé. Les explications ci-dessous sont très importantes pour utiliser ce SGBD.

Prérequis MySQL

Casse des tables

La base doit être en mode "insensible à la casse" (la casse des requêtes SQL de Uportal n'est pas garantie). Dans le fichier my.cnf / my.ini, ajouter :

Bloc de code

lower_case_table_names = 1 

...

Sans ce réglage, la commande ant initportal sera en échec :

Bloc de code

crn-import:
[java] ERROR Failed to import Structure from:  structure/DLM_Tabs_and_columns-1.structure due to exception: org.danann.cernunnos.ManagedException: The Cernunnos Runtime encountered an error:...
[java] Caused by: org.springframework.jdbc.BadSqlGrammarException: PreparedStatementCallback; bad SQL grammar ...
[java] Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table '.......' doesn't exist

...

Dans le fichier my.cnf / my.ini, ajouter :

Bloc de code

innodb_file_format=barracuda
innodb_file_per_table=true
innodb_large_prefix=true

...

Il faut changer le moteur de stockage par défaut (MyISAM n'est pas assez sûrne gère pas les trasactions). Pour cela, il faut copier-coller my-huge.ini en my.ini et ajouter l'instruction suivante :

Bloc de code

default-storage-engine=innodb

Mise à jour de la propriété "maxThreads"

Dans le fichier "uportal-war/src/main/resources/properties/portal.properties", modifier la valeur de la clé "org.jasig.portal.io.threadPool.maxThreads" :

Encodage des caractères

L'encodage recommandé est l'UTF-8. Afin de le définir par défaut, il faut ajouter les lignes suivantes dans la section [mysqld] de my.ini :

Bloc de code
collation-server = utf8_unicode_ci
init-connect='SET NAMES utf8'
character-set-server = utf8

Il faut redémarrer MySQL pour prendre en compte la nouvelle configuration. L'encodage des caractères peut être vérifié à l'aide de la requête suivante :

Bloc de code
show variables like 'char%'; show variables like "%collation%";

La résultat devrait être similaire à celui-ci :

Bloc de code
collapsetrue
+--------------------------+---------------------------------------------+
| Variable_name            | Value                                       |
+--------------------------+---------------------------------------------+
| character_set_client     | utf8                                        |
| character_set_connection | utf8                                        |
| character_set_database   | utf8                                        |
| character_set_filesystem | binary                                      |
| character_set_results    | utf8                                        |
| character_set_server     | utf8                                        |
| character_set_system     | utf8                                        |
| character_sets_dir       | D:\ESUP\mysql-5.5.29-winx64\share\charsets\ |
+--------------------------+---------------------------------------------+
8 rows in set (0.00 sec)
+----------------------+-----------------+
| Variable_name        | Value           |
+----------------------+-----------------+
| collation_connection | utf8_general_ci |
| collation_database   | utf8_unicode_ci |
| collation_server     | utf8_unicode_ci |
+----------------------+-----------------+
3 rows in set (0.00 sec)
Bloc de code

org.jasig.portal.io.threadPool.maxThreads=1

Performances

Les performances seront meilleures si les réglages suivants sont effectués dans le fichier my.ini :

Bloc de code

max_connections = 1500
table_cache = 512
query_cache_size = 128M
set-variable = innodb_buffer_pool_size=128M
set-variable = innodb_log_file_size=256M
set-variable = innodb_additional_mem_pool_size=20M
set-variable = innodb_log_buffer_size=4M
innodb_flush_log_at_trx_commit=1

Deadlocks

TODO : faire cette partie plus en détails : Cf. le wiki de JASIG
Deadlock troubleshooting

One thing that will most likely come up in working with uPortal and MySQL (or any database for that matter) is the issue of deadlocks - when a record is needed to be accessed by two different queries at the same time.

The MySQL site has an EXCELLENT chapter on dealing with these. Overall, the on-line reference guide for MySQL is an EXCELLENT resource.

 

 

Info
titleRéférences

https://wiki.jasig.org/display/UPM40/MySQL
https://issues.jasig.org/browse/UP-3254
Exemple de fichier de configuration