CREATE EVENT<\/strong>.<\/p>\nCREATE EVENT nom_evenement ON SCHEDULE\r\n <moment> DO <code_sql><\/pre>\nL’\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>\nL’\u00e9v\u00e8nement est constitu\u00e9 d’un ensemble de requ\u00eates.<\/p>\n
<code_sql> = requ\u00eates sql<\/strong><\/p>\nCr\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>\nA 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>\nLa commande SHOW VARIABLES LIKE ‘binlog_format’<\/strong> permet de conna\u00eetre le format du journal binaire<\/p>\nmysql> 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
\n- Statement<\/strong><\/em> <\/strong>based<\/strong><\/em> (mode par d\u00e9faut) : On journalise la requ\u00eate telle-quelle<\/em> (pas son r\u00e9sultat),<\/li>\n
- Row<\/strong><\/em> <\/strong>based<\/strong><\/em> : On journalise le r\u00e9sultat de la requ\u00eate,<\/li>\n
- Mixed<\/strong><\/em> : MySQL \tchoisit entre statement<\/em> et row<\/em> en fonction du \tcontexte.<\/li>\n<\/ul>\n
Le mode de journalisation peut \u00eatre chang\u00e9 dynamiquement avec la commande SET<\/strong><\/p>\nmysql> SET SESSION binlog_format='ROW';\r\nQuery OK, 0 rows affected (0.00 sec)\r\n\r\nmysql> SHOW VARIABLES LIKE 'binlog_format';\r\n+---------------+-------+\r\n| Variable_name | Value |\r\n+---------------+-------+\r\n| binlog_format | ROW |\r\n+---------------+-------+\r\n1 row in set (0.01 sec)\r\n\r\nmysql> SET SESSION binlog_format='STATEMENT';\r\nQuery OK, 0 rows affected (0.00 sec)\r\n\r\nmysql> SHOW VARIABLES LIKE 'binlog_format';\r\n+---------------+-----------+\r\n| Variable_name | Value |\r\n+---------------+-----------+\r\n| binlog_format | STATEMENT |\r\n+---------------+-----------+\r\n1 row in set (0.01 sec)\r\n\r\nmysql> SET SESSION binlog_format='MIXED';\r\nQuery OK, 0 rows affected (0.00 sec)\r\n\r\nmysql> 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.01 sec)<\/pre>\n(\u00e0 suivre… MySQL Cluster & general log, slow query log dans une table<\/a>)<\/em><\/p>\n\n","protected":false},"excerpt":{"rendered":"
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) est un planificateur de t\u00e2ches (CRON-like) embarqu\u00e9 dans MySQL 5.1.<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"footnotes":""},"categories":[8],"tags":[65,241,59,66,67,68],"class_list":["post-275","post","type-post","status-publish","format-standard","hentry","category-mysql","tag-event-scheduler","tag-mysql","tag-mysql-51","tag-replication","tag-row-based","tag-statement-based"],"aioseo_notices":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p9LfWW-4r","jetpack-related-posts":[],"jetpack_likes_enabled":true,"_links":{"self":[{"href":"https:\/\/dasini.net\/blog\/wp-json\/wp\/v2\/posts\/275","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/dasini.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/dasini.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/dasini.net\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/dasini.net\/blog\/wp-json\/wp\/v2\/comments?post=275"}],"version-history":[{"count":7,"href":"https:\/\/dasini.net\/blog\/wp-json\/wp\/v2\/posts\/275\/revisions"}],"predecessor-version":[{"id":296,"href":"https:\/\/dasini.net\/blog\/wp-json\/wp\/v2\/posts\/275\/revisions\/296"}],"wp:attachment":[{"href":"https:\/\/dasini.net\/blog\/wp-json\/wp\/v2\/media?parent=275"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/dasini.net\/blog\/wp-json\/wp\/v2\/categories?post=275"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/dasini.net\/blog\/wp-json\/wp\/v2\/tags?post=275"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}