{"id":275,"date":"2008-12-03T01:37:25","date_gmt":"2008-12-03T00:37:25","guid":{"rendered":"http:\/\/dasini.net\/blog\/?p=275"},"modified":"2008-12-06T00:29:11","modified_gmt":"2008-12-05T23:29:11","slug":"les-nouveautes-de-mysql-51-part-25","status":"publish","type":"post","link":"https:\/\/dasini.net\/blog\/2008\/12\/03\/les-nouveautes-de-mysql-51-part-25\/","title":{"rendered":"Les nouveaut\u00e9s de MySQL 5.1 — (part 2\/5)"},"content":{"rendered":"


\n(<- pr\u00e9c\u00e9dent<\/a>)<\/em>
\n<\/p>\n

Le programmateur d’\u00e9v\u00e8nements<\/h2>\n

Pouvoir automatiser ses t\u00e2ches de mani\u00e8re fiable et simple est le r\u00eave de tout administrateur de base de donn\u00e9es. Le programmateur d’\u00e9v\u00e8nements (Event Scheduler<\/strong><\/em>) est un planificateur de t\u00e2ches (CRON-like<\/strong>) embarqu\u00e9 dans MySQL 5.1.<\/p>\n

Il est alors possible d’ex\u00e9cuter, de fa\u00e7on r\u00e9currente ou unique<\/em>, des requ\u00eates<\/em>, en fonction de la date et de l’heure.<\/p>\n

L’\u00e9v\u00e8nement se cr\u00e9e avec la commande CREATE EVENT<\/strong>.<\/p>\n

CREATE EVENT nom_evenement ON SCHEDULE\r\n      <moment> DO <code_sql><\/pre>\n

L’\u00e9v\u00e8nement peut \u00eatre lanc\u00e9 une seule fois (AT<\/strong>) ou de mani\u00e8re r\u00e9p\u00e9titive (EVERY<\/strong>)<\/p>\n

<moment> = AT | EVERY<\/strong><\/p>\n

L’\u00e9v\u00e8nement est constitu\u00e9 d’un ensemble de requ\u00eates.<\/p>\n

<code_sql> = requ\u00eates sql<\/strong><\/p>\n

Cr\u00e9er une vue mat\u00e9rialis\u00e9e rafra\u00eechie toutes les 10 minutes :<\/p>\n

DELIMITER \/\/\r\nCREATE EVENT vue_materialisee\r\nON SCHEDULE EVERY 10 MINUTE\r\nDO\r\nBEGIN\r\n   TRUNCATE TABLE _event.City_fra;\r\n   INSERT INTO _event.City_fra\r\n      SELECT * FROM world.City WHERE CountryCode='FRA'\r\n      ORDER BY name;\r\nEND\/\/\r\nDELIMITER ;<\/pre>\n

\n

La r\u00e9plication par les donn\u00e9es (row based)<\/h2>\n

MySQL permet de journaliser dans un fichier les requ\u00eates d’\u00e9criture effectu\u00e9es sur le serveur. Ce fichier, le binary log<\/em>, stocke ces requ\u00eates en un format binaire (d’o\u00f9 son nom). Il est indispensable \u00e0 la r\u00e9plication, et est \u00e9galement utilis\u00e9 pour la restauration du serveur.<\/p>\n

A partir de MySQL 5.1, le serveur permet de stocker cette information, non plus seulement sous forme de requ\u00eates (statement<\/strong><\/em> <\/strong>based<\/strong><\/em>) mais \u00e9galement sous forme de lignes (row<\/strong><\/em> <\/strong>based<\/strong><\/em>). Cette nouvelle fonctionnalit\u00e9 est int\u00e9ressante, en particulier en cas de r\u00e9plication de requ\u00eates non d\u00e9terministes.<\/p>\n

La commande SHOW VARIABLES LIKE ‘binlog_format’<\/strong> permet de conna\u00eetre le format du journal binaire<\/p>\n

mysql> SHOW VARIABLES LIKE 'binlog_format';\r\n+---------------+-------+\r\n| Variable_name | Value |\r\n+---------------+-------+\r\n| binlog_format | MIXED |\r\n+---------------+-------+\r\n1 row in set (0.00 sec)<\/pre>\n

\n

\n

Trois options de journalisation sont disponibles :<\/p>\n