MYSQL


Introduction et installation de MYSQL 5.1 sur I5.



BoTTom



Introduction

Le langage PHP (Hypertext Preprocessor) est devenu en quelques années d'existence, le langage de programmation de sites web dynamiques le plus populaire à coté de Java

Associé à MySQL, le langage PHP permet de développer des applications web puissantes reliées à des bases de données.


Sur System i, les pages PHP accèdent généralement à des données DB2, mais cela implique, si vous souhaitez utilisez des produits Open Source utilisant MYSQL, une réécriture partielle du code

Depuis la version 5.1 de MYSQL, MYSQL propose une "passerelle", nommée MYSQL DB2 Storage Engine, pemettant à une base MYSQL de stocker ses données sous DB2

 

Installation :

PHP, depuis la V5R40 : Zend core for I5/OS

Ce produit installe en fait un serveur Apache sous Pase qui tourne sur un autre port (8000, modifiable) , il faut alors utiliser une directive PROXY pour rerouter les requêtes vers cet autre serveur (depuis le serveur Apache "natif" de I5/OS).

L'interet du serveur Apache2 sous Pase (c'est véritablement celui d'UNIX) pour Zend, c'est de réutilsier les routines existantes, particulièrement celles permettant de lancer PHP en mode module, ce qui offre les meilleures performances et le debug avec ZendStudio.


1/ vérifiez que vous avez les logiciels sous licence suivants :

Code (option) Produit
5722SS1 (33) PASE
5722SS1 (30) Qshell
5722SS1 (13) System Openness Includes
5722SS1 (34) Digital Certificate Manager
5733SC1(*base) IBM Portable Utilities For I5/OS
5733SC1 (1) OpenSSH ,OpenSST,Zlib

Le répertoire /usr/local doit exister (créez le, s'il le faut, par MKDIR) et ne doit pas être un lien symbolique

 

2/ Téléchargez le fichier zippé sur le site de ZEND, dézippez et transférez (en binaire) via FTP le SAVF ZCOREPROD dans QGPL

3/ Passez ensuite la commande RSTLICPGM LICPGM(1ZCORE5) DEV(*SAVF) SAVF(QGPL/ZCOREPROD)

Ce produit propose une installation conjointe de MYSQL, mais version 5.0 et qui ne contient pas le DB2 storage Engine.

 

 

     Objet       Type        Attribut    Texte          
INSMYSQL *PGM CLP Install MySQL
UPGMYSQL *PGM CLP Upgrade MySQL
SCRIPT *FILE SAVF
TARF *FILE SAVF
INSMYSQL *CMD Install MySQL
UPGMYSQL *CMD Upgrade MySQL

et lancez le CL INSMYSQL après avoir passé votre job en CCSID(37)
Attention, plusieurs remarques : - si vous aviez déja une version de MYSQL, sauvegardez vos données avant.
Détruisez ensuite my.cnf dans /etc. - vous ne pourrez pas faire un Upgrade de mysql 5.0 vers 5.1 avec UPGMYSQL
ce script ne gère que les mises à jour mineures (5.0.47 à 5.0.48, par ex) - ce CL installe un script install.sh dans /tmp et l'exécute
- vous devez passer votre job en CCSID(37) à cause d'un fichier temporaire nommé @longlink et le script gère mal le @ avec un code page latin (297 par exemple) - nous avons utilisé comme paramètres :
DIR('/usr/local/') DATADIR(/usr/local/mysqldata') USRPRF(MYSQL) cela va restaurer le répertoire /usr/local/mysql-5.1.37-i5os-power-64bits et crééer un lien symbolique nommé /usr/local/mysql IBM propose par défaut /QOpenSys/usr/local/mysql pour être insensible à la casse, mais /usr/local est plus standard
et mysql détecte bien si le système de fichier est sensible à la casse ou pas. les données seront stockées dans mysqldata (répertoire indépendant, plus simple pour changer de version) le profil MYSQL doit exister.

- il y a une documentation officielle fournie par MYSQL.

Avec Zend Server (hiver 2010), ce dernier propose une installation intégrée (comme Zend Core) de MYSQL mais version 5.1.50, qui contient déjà le moteur en question.
Enfin désormais vous pouvez télécharger MYSQL ou MAriaDB depuis ce site
http://www.zend.com/en/solutions/modernize-ibm-i/ibm-i-product/dbi



Transférez le SAVF contenu dans le fichier zip puis installez par

RSTLICPGM LICPGM(1ZENDDB) DEV(*SAVF) SAVF(QGPL/ZDBISAVF10)

 


 



Dans tous les cas, lancez MYSQL par : Installation manuelle : /usr/local/mysql/bin/mysqld_safe --usermysql & (sous QSH)
(le & demande à ce que MYSQL soit lancée en tâche de fond indépendante) ou, suite à Installation de MariaDB :
démarrez le sous-système ZENDDBI10 ce qui lancera -> CALL ZMARIADB/ZMYSQLSTRT
- ensuite assignez à root un mot de passe (ce n'est pas obligatoire, mais c'est plus prudent)

par mysqladmin -u root password "nouveau_pwd"
Attention, pour utiliser ensuite mysqladmin ou mysql en mode commande, il faudra ajouter -pnouveau_pwd
Pour ajouter d'autres utilisateurs :
GRANT ALL PRIVILEGES ON *.* TO 'user'@'%' IDENTIFIED BY 'passw0rd' WITH GRANT OPTION;

->vous pouvez indiquez à droite du @ un host ou une adresse IP, la connexion n'est autorisée que de ce poste



ensuite, vérifiez le fonctionnement par :

 


Avec MariaDB utilisez le menu ZDBMENU ou la commande STRZDBI




- pour utiliser MYSQL en mode commande (toujours sous QSH) :

 cd /usr/local/mysql                     
/usr/local/mysql-5.1.37-i5os-power-64bit
$
bin/mysql -u root -pnouveau_pwd
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 40
Server version: 5.1.37 MySQL Community Server (GPL)

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>
create database vins; Query OK, 1 row affected (0.03 sec) create table vins.producteurs (pr_code integer,
pr_nom varchar(50),
.../... );
Query OK, 0 rows affected (0.05 sec)


Quelques utilitaires :


la documentation : http://dev.mysql.com/doc/refman/5.0/fr/index.html



 

DB2 Storage Engine

il s'agit de proposer un nouveau moteur de stockage à MYSQL.

 

Celui-ci en possède naturellement plusieurs

et donc le petit nouveau IBMDB2I permettant le stockage des data dans une blbliothèque DB2, donc ensuite accessible par un programme I5/OS.

 

pour l'activer, sous MYSQL (donc QSH)

 

 cd /usr/local/mysql                     
/usr/local/mysql-5.1.37-i5os-power-64bit
$
bin/mysql -u root -pnouveau_pwd
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 40
Server version: 5.1.37 MySQL Community Server (GPL)

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>
install plugin ibmdb2i soname “ha_ibmdb2i.so”;

vous devez le voir, ensuite par show engines

 show engines;                                                                                                                 
+------------+---------+----------------------------------------------------------------+--------------+------+------------+
| Engine | Support | Comment | Transactions | XA | Savepoints |
+------------+---------+----------------------------------------------------------------+--------------+------+------------+
| InnoDB | YES | Supports transactions, row-level locking, and foreign keys | YES | YES | YES |
| MRG_MYISAM | YES | Collection of identical MyISAM tables | NO | NO | NO |
| BLACKHOLE | YES | /dev/null storage engine (anything you write to it disappears) | NO | NO | NO |
| CSV | YES | CSV storage engine | NO | NO | NO |
| MEMORY | YES | Hash based, stored in memory, useful for temporary tables | NO | NO | NO |
| FEDERATED | NO | Federated MySQL storage engine | NULL | NULL | NULL |
| IBMDB2I | YES | IBM DB2 for i Storage Engine | YES | NO | YES |
| ARCHIVE | YES | Archive storage engine | NO | NO | NO |
| MyISAM | DEFAULT | Default engine as of MySQL 3.23 with great performance | NO | NO | NO |
+------------+---------+----------------------------------------------------------------+--------------+------+------------+
9 rows in set (0.01 sec)

 

Attention, il faut être à jour au niveau des PTF, particluièrement le groupe base de données et en V5R40, il faut

   SI37763 (si vous avez 5722SS1 , option 13), SI35184 , SI36388 et SI36391


Ensuite lors d'un CREATE TABLE , ajoutez engine=ibmdb2i


ou bien positionnez cette valeur par défaut.

vous pouvez aussi passer la commande suivante sur une table existante

ALTER TABLE producteurs ENGINE=IBMDB2I;

 

la bibliothèque porte le nom de la base et n'est créé qu'à la première table

CREATE DATABASE vins, ne créé rien

CREATE TABLES vins.producteurs, créé :

NB : "vins" en minuscules, il faut donc mettre le nom entre guillemets pour pouvoir l'utiliser (par exemple ADDLIBLE "vins")


par contre, DROP TABLE supprime la table, mais seul DROP DATABASE va supprimer la bibliothèque.

 

  les ordres DDL (Data Definition language) comme CREATE TABLE, CREATE INDEX, sont transformés en leur équivalent SQL/400

  les ordres DML (Data Manipulation language) comme SELECT, UPDATE sont réalisés par des entrées/sorties natives, l'optimisation étant à la charge de MYSQL

Extrait des options disponibles (à placer dans /etc/my.cnf)

 

Vous pouvez aussi modifier ces paramètres en direct par set global  paramètre=valeur.

 

 

Pour tester, nous avons installé SugarCRM après avoir défini ibmdb2i comme moteur par défaut.


tout c'est bien passé, voici ce que nous affiche phpMYadmin :


MySQL Administrator

 

iSeries Navigator

 

et PDM

Depuis la version 5.1.50, les noms de tables sont automatiquement convertis en Majuscules.

 

 

-> pour plus de détails techniques, voyez le redbook SG247705

 


Réglage des performances

 

1/ Soyez à jour avec les PTF concernant PASE

2/ Voyez les paramètres IBM i suivants :

3/ Voyez les paramètres de bufferisation suivants dans /etc/my.cnf

Pour chaque élément, il existe des variables de "status", renseignées par le moteur, permettant de voir les valeurs en cours avant d'ajuster les paramètres.

 

Elles peuvent être visualisées en mode commande par SHOW STATUS LIKE 'thread%' ou par MySQL Administrator.
     

> show status like 'thread%';    
+-------------------+-------+
| Variable_name | Value |
+-------------------+-------+
| Threads_cached | 0 |
| Threads_connected | 1 |
| Threads_created | 1044 |
| Threads_running | 1 |
+-------------------+-------+
4 rows in set (0.00 sec)

mysql>




ici, un affichage concernant les threads, proposé par MySQL Administrator.

BoTTom

 

©AF400