Résumé des nouveautés de MySQL 8.0.17

septembre 19, 2019
Sakila mozaik by Olivier DASINI

J’ai créé, spécialement pour toi, une présentation qui résume les nouvelles fonctionnalités de la dernière version de MySQL en date, la 8.0.17.

Je te propose une vidéo, en français, de moins de 5 minutes ainsi que les slides (en anglais) à télécharger.

Au programme:

  • CLONE Plugin – Native automatic provisioning in the server
  • Multi-valued indexes
  • JSON functions using multi-valued indexes
  • JSON schema validation
  • New binary collation for utf8mb4
  • MySQL Shell Enhancements
  • MySQL Router Enhancements
  • InnoDB Cluster Enhancements
  • Group Replication Enhancements
  • Replication Enhancements
  • Thanks to the Contributors

La présentation, en français, est disponible sur ma toute nouvelle chaîne Youtube.

Pour s’y abonner c’est ici.

Les slides sont disponibles et téléchargeables sur mon compte SlideShare:

Follow me on twitter

Watch my videos on my YouTube channel and subscribe.

My Slideshare account.

My Speaker Deck account.

Thanks for using MySQL!

1

Tutoriel – Déployer MySQL 8.0 InnoDB Cluster (09-2019)

septembre 3, 2019
Rocher du Diamant - Martinique by Olivier DASINI

Cela fait maintenant 1 an que j’ai écris la v1 de ce tuto sur MySQL InnoDB Cluster (ici) et durant ce laps de temps, mes collègues d’Oracle MySQL ont travaillé très dur pour enrichir la solution et développer pas mal de nouvelles fonctionnalités.
En fait que du bon 🙂 – grâce à vous et à vos retours – merci infiniment !.

Bref tu l’as compris, c’est le moment de mettre à jour ce tutoriel.
En clair, cet article remplace et annule l’ancien.

Je t’invite à passer un moment avec moi pour découvrir les différentes étapes du déploiement d’un MySQL InnoDB Cluster, l’utilisation de MySQL Router et aussi les principales commandes pour gérer ton cluster avec MySQL Shell.


Dans la liste des besoins essentiels de mes clients, en plus de la supervision et des process de sauvegarde et restauration, se trouve la Haute Disponibilité avec MySQL.

On va donc voir, dans cet article, comment déployer et gérer un cluster MySQL « from scratch » , sous la forme d’un tutoriel, grâce à la solution HA native tout en un : MySQL InnoDB Cluster.

Note
L’article traite de MySQL InnoDB Cluster, HA natif de MySQL Server (plugin Group Replication) avec pour moteur de stockage InnoDB.
Solution à ne pas confondre avec MySQL NDB Cluster (moteur de stockage NDB).

Le contexte

3 instances MySQL autonomes (je peux en avoir 9 max),
<spoil alert> qui vont grâce au plugin MySQL Group Replication se transformer en une base de données distribuée.</spoil alert>

  • Instance MySQL #1 – mysql_node1 – Nœud 1 du cluster
  • Instance MySQL #2 – mysql_node2 – Nœud 2 du cluster
  • Instance MySQL #3 – mysql_node3 – Nœud 3 du cluster

1 instance applicative – app1 – formée de MySQL Router + mon application.

Note:
J’utilise l’image Docker MySQL Server supportée par l’équipe MySQL d’Oracle.

Note:
Je n’aborde pas dans cet article la redondance de MySQL Router. Plusieurs scénarios sont possibles, je te recommande de lire ça, ceci et cela.

MySQL Shell n’a pas besoin d’être installé sur toutes les instances (contrairement à MySQL 5.7, pour pouvoir rendre persistante la configuration).
ce client texte est beaucoup plus puissant que le client texte par défaut.
Si tu ne le connais pas encore, essaie le et tu verras tu ne pourras plus t’en passer 🙂

En ce qui concerne les versions des logiciels, ce sont les plus récentes à ce jour (journée caniculaire du mois d’août 2019):

Note:
Dans cet article j’utilise la dernière GA de MySQL Server 8.0.
En ce qui concerne MySQL Router et MySQL Shell, il est impératif d’utiliser la dernière version courante (même avec un server en 5.7).

Vérifier la configuration des instances

La première étape consiste à s’assurer que les instances MySQL sont correctement configurées, en d’autres termes « InnoDB Cluster aware » (ouais je sais je suis bilingue :D).

Note:
J’aime bien pré-configurer les instances à provisionner. A minima, l’installation des plugins:

ex: plugin_load=group_replication.so & plugin-load-add=mysql_clone.so

Note:
J’utilise le compte utilisateur root pour configurer le cluster, cependant ce n’est pas une bonne pratique. Il est possible (et souhaitable) de créer un compte utilisateur spécifique (ou plusieurs), avec les droits qui vont bien.
La méthode recommandée pour créer cet utilisateur et d’utiliser l’option clusterAdmin des méthodes dba.configureInstance() et cluster.addInstance().
Plus d’info ici (Paragraphe « User Privileges »).

La vérification de la configuration se fait grâce à MySQL Shell et la fonction checkInstanceConfiguration() :

La fonction checkInstanceConfiguration() renvoie un document JSON (pratique pour l’automatisation) avec la liste des tâches à effectuer pour être conforme.

Dans mon cas, avec l’image Docker Officielle de MySQL 8.0.17, par défaut sous Ubuntu, niveau configuration j’ai quasiment tout à faire 🙂

Configurons donc…

J’ai 2 solutions :

  • 1/ je prépare mes instances « manuellement » (cette tâche peut bien évidemment s’automatiser) comme expliqué dans l’article comment configurer un groupe.
  • 2/ je laisse MySQL Shell faire tout le boulot en utilisant la méthode : configureInstance()

je sens que ton cœur balance pour la 2… le mien aussi 🙂

Petit aparté sur la persistance des informations de configurations.


Les informations de configurations sont automatiquement sauvegardées avec la commande SET PERSIST. Commande super pratique (Cloud Friendly) apparue en 8.0, qui me permet de faire des changements de configurations à chaud (online) et persistants, stockés dans le fichier mysqld-auto.cnf.

On peut également voir ces informations en SQL, grâce à la table persisted_variables de performance_schema :

La persistance des changements ce fait automatiquement grâce au paramètre persisted_globals_load activé par défaut (ON). Elle est effective après l’exécution des commandes:

Note:
je te recommande cet excellent article sur les variables persistantes de mon non moins excellent collègue Jesper.

SET PERSIST est très appréciable dans les environnements où accéder au fichier de configuration est compliqué voir impossible (Cloud Friendly, je te dis!!!).
Cependant, dans un environnement plus maîtrisé (plus classique), il peut être préférable, de centraliser toutes les informations de configurations dans le fichier de configuration original (my.cnf / my.ini).
Question de goûts et d’habitudes….

C’est bien évidemment possible grâce à l’option mycnfPath de la méthode dba.configureInstance().

Exemple:

Tu as donc le choix !

Note:
Assure toi d’avoir les droits nécessaires pour mettre à jour le fichier de configuration de MySQL.


Fin de l’aparté, revenons donc a la configuration de notre instance.

Grâce à ton œil aiguisé, tu as remarqué, que l’outil me propose de redémarrer l’instance MySQL, ce qui est bien pratique.
Cependant, dans le cas présent, la plateforme que j’utilise (image MySQL officielle Docker) ne dispose pas d’un processus de supervision de mysqld (comme c’est généralement le cas sur ta plateforme préférée. Info ici).
En clair, je vais devoir redémarrer sans l’outil (mais je devrai m’en sortir… ou pas 🙂 ).

L’instance mysql_node1 est configurée et prête pour être un membre d’un cluster MySQL InnoDB Cluster \o/

Tu peux le vérifier en redémarrant l’instance MySQL et refaire un checkInstanceConfiguration  :

Statut: OK.

La même procédure doit être appliquée sur les autres instances MySQL.

Je me retrouve, après configuration et redémarrage  avec le résultat suivant:

Ca fait plaisir !

Créer le cluster

Une fois les 3 instances correctement configurées, l’étape suivante consiste à créer le cluster avec createCluster.
Cette fonction va être jouée sur le premier membre, l’instance MySQL sur  mysql_node1,  elle va permettre de créer un cluster… d’un nœud. 
Bon faut bien commencer quelque part 🙂

createCluster() prend comme paramètre le nom du cluster (pocCluster).
Tu peux aussi lui passer des paramètres facultatifs comme par exemple ipWhitelist, multiPrimary, adoptFromGR
La liste exhaustive est dispo dans la doc.

On peut vérifier l’état du nœud dans le cluster avec status() :

Notes :
Assure toi que ton DNS (ou /etc/hosts) est correctement configuré, sinon tu vas avoir des soucis de connections…

L’ajouts des nœuds suivant se fait avec addInstance().

Nœud 2

Le nœud ajouté doit être « synchro » avec le cluster.
MySQL InnoDB Cluster peut le gérer automatiquement pour toi.

Il te propose 2 méthodes, par défaut, le Clone (une copy physique) ou alors l’Incrémental (copy logique).
Le clone est la méthode la plus sûre d’un point de vue cohérence d’ensemble du cluster, c’est donc cette méthode que je te recommande.

Sauf si tu te portes garant de la cohérence des données du nœud à ajouter (et accessoirement que ton volume de données est important => temps de clonage important).


Je me permet de porter à ton attention sur un point important.
L’une des étapes du clonage, nécessite un redémarrage du serveur MySQL.
Comme vu plus haut, si comme ici tes instances MySQL ne disposent pas d’un processus de supervision de mysqld, comme c’est le cas avec Docker, bah MySQL ne va pas redémarrer automatiquement.

Pas de panique, il faut redémarrer l’instance a la mano au bon moment, c’est à dire, quand tu verras:

Dans mon cas, dans une autre fenêtre j’ai exécuté:

Easy!
Ok, ça ne casse pas 3 pattes à un canard, mais ça t’évitera de perdre du temps inutilement 😉


Je peux voir le nouvel état de mon cluster avec status:

Ca prend forme…
Aller encore un nœud !

Nœud 3

Même processus que pour le nœud 2.

Le résultat final est:

Et voilà!

Un Cluster MySQL Group Replication de 3 nœuds facilement et rapidement déployé grâce à MySQL Shell, c’est ça MySQL InnoDB Cluster (enfin presque, il manque encore un élément).

La configuration actuelle est la suivante:

  • Nœud 1 = mysql_node1 : Primaire (lecture/écriture)
  • Nœud 2 = mysql_node2 : Secondaire (lecture seule)
  • Nœud 3 = mysql_node3 : Secondaire (lecture seule)

Et qu’est ce que l’on fait maintenant ???

Le Router !

Le Router !

Le Router !

Configuration de MySQL Router

Il est recommandé (mais pas obligatoire) d’installer MySQL Router sur la machine hôte de l’application, je vais donc suivre cette recommandation et l’installer sur la machine app1.

Si tu ne souhaites / peux / veux pas mettre MySQL Router sur l’application, pas de souci.
Il te faudra au moins 2 instances de MySQL Router et de plus tu vas devoir gérer le HA du Router.
Plusieurs solutions sont envisageables comme par exemple :

Bootstrap MySQL Router

La première étape est le bootstrap, c’est à dire créer LE lien entre MySQL Router et ton cluster.
Il faut fournir à mysqlrouter a minima l’adresse d’un membre du cluster :

Note:
Il se peut que tu rencontres un problème de permission. Probablement dû à la configuration de AppArmor
Google (ou équivalent) est ton ami (ou pas)
Si tu es sous Ubuntu clic ici.

Quelques explications…

J’ai créé une configuration différente de celle par défaut, en personnalisant avec quelques options:

  • conf-base-port : le port proposé par défaut est 6446 pour la lecture/écriture. Dans mon cas, je veux utiliser le célèbre port 3306.
  • directory : histoire de ranger tout le bazar de cette instance de Router dans le répertoire spécifié. Bien utile si tu as plusieurs instances de Router sur la machine.

La liste complète des options est disponible ici.

Pour résumer, 4 ports TCP ont été configurés, dont 2 pour les connexions MySQL traditionnelles:

  • 3306 (au lieu de 6446 par défaut) : lectures / écritures pour le nœud primaire (stratégie de routing: first available par défaut).
  • 3307 (au lieu de 6447 par défaut) : lectures seules pour les nœuds secondaires (stratégie de routing: Round-Robin with fallback par défaut).

Et le pendant pour les connexions avec le protocole X (3308 & 3309 (au lieu de respectivement 64460 & 64470)), pour une utilisation NoSQL Document Store de MySQL.

Le fichier de configuration de MySQL Router contient quelques informations importantes, tel que le(s) port(s) à utiliser par l’application (comme vu précédemment) :

Il est possible de modifier ce fichier, si besoin.

Ensuite, il faut démarrer MySQL Router avec le script start.sh

L’arrêt du Router se fait avec le script stop.sh (mais tu l’avais deviné).

Voilà pour le Router !
C’est terminé pour la phase de déploiement du cluster.

Simple, rapide et surtout facilement automatisable, tels sont les principales caractéristiques du déploiement d’un MySQL InnoDB Cluster.
Qualités qui constituent le cœur même de l’ADN de MySQL.

Se connecter au cluster

Ton MySQL InnoDB Cluster est maintenant « up and running »

Ton application va donc devoir se connecter au port 3306 (car on l’a configuré comme cela, sinon c’est 6446 par défaut) pour utiliser la base de donnée.
D’ailleurs, on peut dire que du point de vue de l’application, la base de donnée c’est MySQL Router, sauf qu’en réalité ce n’est pas 1 instance, mais bel et bien 3 instances MySQL qui sont en backend et ceci en toute transparence \o/.

La partie utilisation du cluster est hors du scope de cet article, mais on peut facilement simuler le comportement de l’application avec un client MySQL et MySQL router.

A partir de app1, je peux par exemple me connecter avec MySQL Shell (mon application), en local, au port 3306, en mode SQL:

La connexion au port 3306, m’envoie sur le membre primaire du cluster, ici le nœud : mysql_node1.

Le paramètre report_host (défini dans mon fichier de configuration) me renvoi la valeur du  nœud 1, qui est pour l’instant le primaire.

Gestion des nœuds

Je te propose maintenant de passer en revues les commandes les plus utiles.

Récupérer les méta-données du cluster

La variable, communément nommé cluster, – celle là même utilisée lors de la création du cluster: var cluster = dba.createCluster(‘…’) – qui permet d’effectuer un grand nombre de manipulation sur ce dernier, a une durée de vie limitée à la session.

Pour récupérer ces informations relatives à l’état du cluster dans une nouvelle session il faut utiliser la méthode dba.getCluster :

Une alternative pratique est d’utiliser le paramètre –cluster lors de la connexion à MySQL Shell:

Choisir un nouveau nœud primaire

Pour changer de primaire à la volée, il faut utiliser la fonction setPrimaryInstance()

Décrire le cluster

describe() décrit la structure du cluster:

Passer en mode multi-primary

Le passage du mode single-primary à multi-primary se fait avec la fonction switchToMultiPrimaryMode():

Passer en mode single-primary

Le passage du mode multi-primary à single-primary se fait avec la fonction switchToSinglePrimaryMode():

Database Failover

Le basculement niveau base de données (changement de primaire) est automatiquement géré par les membres du cluster entre eux.

Par exemple, si j’ai un crash du nœud primaire : mysql_node1.
Les connexions a MySQL Router vont avoir la vue suivante:

Un nouveau primaire est élu par le groupe, ici mysql_node2.
mysql_node1 est lui porté disparu (MIA).

Les données de configuration du cluster étant sauvegardées, une fois le nœud redémarré / réparé / restauré, il fera automatiquement parti du cluster à nouveau. et il aura un rôle de secondaire, c’est à dire en lecture seule (si je suis en single-primary).

En cas de configuration non persistante, un rejoinInstance() est nécessaire pour remettre le nœud dans le cluster.

Supprimer un membre du groupe

Pour supprimer un nœud du cluster, c’est la fonction removeInstance():

Pour remettre le membre, il suffit d’utiliser la fonction addInstance():

Repartir après un arrêt total du cluster

En cas d’arrêt total du cluster i.e. toutes les instances sont éteintes, il faut utiliser, une fois les instances MySQL de nouveau démarrées  rebootClusterFromCompleteOutage().

Le reboot doit se faire sur l’instance la plus à jour, dans le cas contraire, l’erreur suivante (Dba.rebootClusterFromCompleteOutage: The active session instance isn’t the most updated in comparison with the ONLINE instances of the Cluster’s metadata.) est lancée :

L’outil à la gentillesse de m’indiquer quel est le membre le plus à jour, ici mysql_node1:3306.

Je peux maintenant me connecter à nouveau à mon cluster (en utilisant le Router):

Le membre sur lequel la commande a été exécutée est le nouveau primaire.

Perte du quorum

Si le cluster perd plus de la moitié de ses membres – i.e. majorité de nœuds inaccessibles – (crash ou split brain par exemple) il se retrouve dans un état assez désagréable, network partitioning, en clair il faut une intervention externe au cluster pour permettre aux membres restant de continuer à faire leur boulot.

Note:
Par perte j’entend arrêt non prévu (crash). En cas d’arrêt normal ou propre, même si le cluster perd son quorum (dans ce cas présent arrêt normal de 2 nœuds), le nœud survivant sait que les autres nœuds ne sont plus là (en clair pas de risque de split brain) donc le cluster continue de fonctionner. Mais c’est un cluster avec un seul nœud… 

mysql_node1 & mysql_node2 sont inaccessibles (e.g. le datacenter qui les héberge est tombé).

Le failover automatique ne peut pas s’enclencher, le nœud survivant mysql_node3 se met en mode « protection » contre les incohérences (inconsistency) en se plaçant automatiquement en lecture seule.
Il n’acceptera donc aucune écriture tant qu’il n’aura pas reçu l’ordre de le faire.

Cette intervention se nomme, déblocage de partition, et elle s’exécute à l’aide de la fonction forceQuorumUsingPartitionOf():

Evidemment, sauf si tu es joueur 🙂 , il faut éviter de rester trop longtemps dans cet état.

Une fois les instances remisent en condition, il faut les remettre dans le cluster. Le process dépends du scénario de la panne.

Dans le cas le plus favorable, une fois le soucis identifié et réparé, il suffit de redémarrer l’instance. Grâce au système de restauration du cluster, elle se mettra à jour automatiquement.

Exemple avec mysql_node2:

Autre hypothèse plus embêtante, une corruption des données irréversible…
Dans ce cas une solution consiste à re-provisionner le nœud.

Il faut tout d’abord, réinitialiser les méta données du cluster avec un rescan().

Exemple avec mysql_node1 :

Rescan() :

Nouvel état du cluster, plus d’info sur mysql_node1 :

Puis ajouter le (nouveau) membre, en utilisant la fonctionnalité clone :

Encore une fois, n’oublie pas qu’avec Docker MySQL n’est pas géré par un processus de supervision – mysqld is not managed by supervisor process.
Tu dois donc redémarrer toi même l’instance.

Et enfin la structure finale de notre cluster, est celle que je désire:

Voilà c’est tout pour aujourd’hui.
Reste en contact, car il y a encore plein de chose à dire sur le sujet et également plein de bonnes choses qui arrivent 🙂

Dans la même thématique:

Video:

Articles connexes:

Misc
Some optional but useful parameters from my node1’s my.cnf:

Thanks for using MySQL!

Follow me on twitter

Watch my videos on my YouTube channel and subscribe.

My Slideshare account.

My Speaker Deck account.

Thanks for using MySQL!

12

Déployer 1 cluster MySQL avec 2 commandes

juillet 16, 2019

Dans cette courte vidéo, je vais te montrer comment créer un cluster MySQL de 3 nœuds avec simplement 2 commandes.

Articles liés

Ressources

Thanks for using MySQL!

Follow me on twitter

Watch my videos on my YouTube channel and subscribe.

My Slideshare account.

My Speaker Deck account.

Thanks for using MySQL!

5

Résumé des nouveautés de MySQL 8.0.16

juin 5, 2019
Sakila mozaik by Olivier DASINI

J’ai créé, spécialement pour toi, une présentation qui résume les nouvelles fonctionnalités de la dernière version de MySQL en date, la 8.0.16.

Je te propose une vidéo, en français, de moins de 10 minutes ainsi que les slides (en anglais) à télécharger.

Au programme:

  • mysql_upgrade is no longer necessary
  • CHECK Constraints
  • Constant-Folding Optimization
  • SYSTEM_USER & partial_revokes
  • Chinese collation for utf8mb4
  • Performance Schema keyring_keys table
  • MySQL Shell Enhancements
  • MySQL Router Enhancements
  • InnoDB Cluster Enhancements
  • Group Replication Enhancements
  • Size of the binary tarball for Linux
  • Server quick settings validation
  • Thanks to the Contributor

La présentation, en français, est disponible sur ma toute nouvelle chaîne Youtube.

Pour s’y abonner c’est ici.

Les slides sont disponibles et téléchargeables sur mon compte SlideShare:

Thanks for using MySQL!

Follow me on twitter

Watch my videos on my YouTube channel and subscribe.

My Slideshare account.

My Speaker Deck account.

Thanks for using MySQL!

2

200 !!

avril 8, 2019
200 (binary)

Tu es entrain de lire le 200 ème article publié sur ce blog \o/
Pour marquer le coup, j’ai décidé de faire une petite pause et de regarder dans le rétroviseur…

Mon 1er article a été publié le 26/10/2008 :-0
Il s’intitule en toute sobriété Open Source, et nous donne la définition originelle, v 1.0.
Par les temps qui courent, ce n’est pas superflu de rappeler l’esprit du logiciel libre.

La licence d’un programme « open-source» doit correspondre aux critères suivants :

  • Libre redistribution du logiciel.
  • Code source doit accessible.
  • Autoriser les modifications.
  • Intégrité du code source de l’auteur.
  • Pas de discrimination entre les personnes ou les groupes.
  • Pas de discrimination entre les domaines d’application.
  • Distribution de la licence.
  • La licence ne doit pas être spécifique à  un produit.
  • La licence ne doit pas contaminer d’autres logiciels.

http://www.linux-france.org/article/these/osd/fr-osd.html

En clair:

Free as in “Freedom”, not as in “Free Beer”

Mon 1er article en anglais (enfin plutôt du franglais) a été publié le 14/08/2012, il s’agit d’une question d’un collègue sur comment optimiser son ALTER TABLE, (mes excuses pour les soucis d’affichage, problème de compatibilité WordPress) .

Dès lors, je me retrouve de fait, à l’insu de mon plein grès, avec 2 blogs:

Etant attaché à la langue française, (malgré le fait d’être nul en orthographe), le but à l’origine était d’avoir une version française de tous les articles… LOL (malheureusement trop consommateur en temps).


Résultat;
La version anglaise est plus souvent mise à jour et les articles ne sont pas les mêmes version FR et version EN.
2 blogs pour le prix d’un en somme 🙂

J’ai également eu l’opportunité de co-écrire 3 livres sur MySQL:

Riche de toutes ces années, à crapahuter à l’intérieur des écosystèmes base de données et plus particulièrement MySQL, voici les tendances fortes que j’ai remarqué auprès de nos utilisateurs:

Sécurité

La donnée est bien souvent au cœur de la stratégie de l’entreprise. Et même lorsque ce n’est pas le cas, nos données doivent, dorénavant (et c’est pas trop tôt), être protégées.
MySQL propose nativement ou sous forme de plugins, différents outils, plugins et stratégies pour minimiser les risques:

La sécurité est également un thème développé par d’autres, notamment l’excellente Elisa:


Haute Disponibilité

La tendance est au toujours UP.
La haute dispo, base de données et pas cher!!! est devenue la norme.
En plus de la réplication historique, MySQL Replication, et de l’ultra performante technologie qu’est MySQL NDB Cluster. MySQL propose depuis la version 5.7, MySQL InnoDB Cluster. C’est en passant, la fonctionnalité pour laquelle je reçois le plus de demandes:

JSON & Document Store

Le JSON est devenu un standard.
MySQL offre une très grande flexibilité pour manipuler les documents JSON, avec du SQL, mais aussi en mode NoSQL avec du CRUD.

Télécharger MySQL

C’est LA base 🙂

Historique des versions de MySQL

Back in the day…

Migration

C’est un sujet que je n’ai pas encore abordé, mais c’est prévu 🙂

Un sujet connexe.
Contrairement à ce que certains veulent bien faire croire, MariaDB ce n’est PAS du MySQL et n’est PAS compatible.
On a donc 2 produits différents.
Mon collègue et ami Fred, explique comment s’en débarrasser 🙂

Performance

Oui c’est vrai, MySQL est réputé pour être une base de données très performante. La performance est effectivement un sujet multiforme et important:

Ceci dit, la référence mondiale en matière de performance est mon collègue et ami Dimitri:

Je pourrais également écrire un chapitre sur toutes ces personnes passionnantes et passionnées que j’ai rencontré, d’ailleurs certains sont devenus des amis 🙂
Mais ça y est, c’est l’heure de remettre le contact, il reste encore tant a explorer dans la galaxie MySQL.

A bientôt !

Thanks for using MySQL!

Follow me on twitter

Watch my videos on my YouTube channel and subscribe.

My Slideshare account.

My Speaker Deck account.

Thanks for using MySQL!

Commentaires fermés sur 200 !!

Slides du MySQL Day Paris 2018 – NoSQL + SQL = MySQL

novembre 23, 2018

Au nom de toute l’équipe MySQL, je souhaite vous remercier pour votre présence !

On a certes dû un peu pousser les murs (sorry for that), mais finalement cela n’a fait que contribuer à rendre l’événement encore plus convivial 🙂

 

Et voici les slides (clic sur le symbole « in » en bas à droite pour télécharger la présentation):

What’s New in MySQL 8.0 ?

[slideshare id=123784203&doc=01mysqldayparis2018-mysql8-181123112537]

 

MySQL JSON Document Store – A Document Store with all the benefits of a Transactional RDBMS

[slideshare id=123784457&doc=02mysqldayparis2018-mysqldocumentstorepub-181123113043]

 

MySQL & GDPR – Privacy and Security requirements

[slideshare id=123786046&doc=03mysqldayparis2018-mysqlgdprpub-181123115754]

 

MySQL InnoDB Cluster – A complete High Availability solution for MySQL

[slideshare id=123785251&doc=04mysqldayparis2018-mysqlinnodbclusterpub-181123114349]

 

Upgrade from MySQL 5.7 to MySQL 8.0

[slideshare id=123785448&doc=05mysqldayparis2018-upgradetomysql8-181123114641]

 

The State of the Dolphin

[slideshare id=123881469&doc=00mysqldayparis22nov2018-181124170023]

 

P.S. Merci également à notre guest start Dimitri notre MySQL Performance Architect.


MySQL 8 is Great

Oracle MySQL Day Paris 2018

Thanks for using MySQL!

1

MySQL Day Paris – NoSQL + SQL = MySQL

novembre 7, 2018
Tags:

Oracle MySQL Day Paris

NoSQL + SQL = MySQL

 

 

(Mis à jour le 23/11/2018: les présentations de l’événement sont disponibles: https://dasini.net/blog/2018/11/23/slides-du-mysql-day-paris-2018-nosql-sql-mysql/)

Équation simple, quoique un tantinet intrigante, n’est ce pas ?

En fait, MySQL 8.0 permet l’unification des données non structurées (schema-less) et des données structurées (schema-based) dans une seule et même pile technologique !!!

MySQL 8.0 c’est aussi pléthore de nouvelles fonctionnalités liées à la sécurité, à la haute disponibilité, à la manipulation des documents JSON ainsi que des nouveautés permettant d’améliorer la productivité des développeurs et des DBAs/Ops.

Tu veux en savoir plus sur l’innovation MySQL ?

L’équipe MySQL France est heureuse de t’accueillir le mardi 22 novembre 2018, au Startway Sentier(75003), à partir de 9h pour une matinée d’échange et de savoir.

 

L’entrée est libre, il faut cependant être inscrit.

Infos et inscription ici.

 

Agenda Oracle MySQL Day Paris

 

 

Thanks for using MySQL!

 

Commentaires fermés sur MySQL Day Paris – NoSQL + SQL = MySQL

Présentation MySQL 8.0 : Quoi de neuf ? au Forum PHP 2018

octobre 29, 2018

Ce vendredi 26 octobre, j’ai eu le plaisir de présenter devant une salle comble, malgré l’horaire matinal (preuve s’il en faut que les bases de données sont un sujet qui intéresse les développeurs), les nouveautés de MySQL 8.0.

Au programme, NoSQL + SQL = MySQL où MySQL peut aussi être utilisé comme un JSON Document Store, mais aussi les CTE (Common Table Expression), Window Functions, Instant Add Column, Invisible Indexes, Histograms, InnoDB Cluster,…  que du bon en fait 🙂 à découvrir ci dessous :

 

[slideshare id=121057225&doc=mysql8-181029103808]

 

 

Et encore un grand bravo à l’AFUP pour la qualité de ses événements !

AFUP Forum PHP 2018 - MySQL 8.0

AFUP Forum PHP 2018 - MySQL 8.0

AFUP Forum PHP 2018 - MySQL 8.0

Photos disponibles ici. powered by Julien Pauli 

 

 

Thanks for using MySQL!

Commentaires fermés sur Présentation MySQL 8.0 : Quoi de neuf ? au Forum PHP 2018

Slides de l’Apéro PHP MySQL 8.0 avec l’AFUP Toulouse

septembre 27, 2018

J’ai eu l’immense plaisir, ce mardi 25 septembre 2018, d’être sous le doux soleil toulousain pour y rencontrer la communauté PHP, lors d’un apéro PHP.

Je tiens à remercier toutes les personnes qui ont participé à ce moment de partage et d’échange d’exception (et merci à toi Olivier pour avoir initié l’événement).

 

Les présentations de la soirée:

Les nouveautés de MySQL 8.0

MySQL 8.0 – What’s New ? from Olivier DASINI

 

MySQL Document Store – SQL + NoSQL = MySQL

MySQL Document Store – A Document Store with all the benefits of a Transactional RDBMS de Olivier DASINI

 

 

 

Thanks for using MySQL!

1

Apéro PHP MySQL 8.0 avec l’AFUP Toulouse

septembre 19, 2018

Meetup AperoPHP AFUP Toulouse

Ce mardi 25 septembre 2018, rendez-vous dans la ville rose pour un Apéro PHP à l’initiative de l’AFUP Toulouse, avec pour thématique MySQL 8.0.

 

Au programme:

  • Présentation de MySQL 8.0 – la toute dernière version.
  • MySQL Document Store – le mode document qui permet d’utiliser MySQL en mode « NoSQL » avec notre nouvelle API CRUD.
  • MySQL InnoDB Cluster – Haute Disponibilité native et facile de MySQL.

 

Rendez-vous donc ce 25 septembre 2018, à 19h dans les locaux d’Epitech Toulouse au 40 Boulevard de la marquette.

 

Infos & inscriptions: https://www.meetup.com/AperoPHP-Toulouse/events/254780093/

I Love Toulouse
Un grand merci à :

  • L’école Epitech
  • LIGHTSPEED sponsor buffet et rafraîchissements
  • COMMIT 42 sponsor qui participe aux frais d’organisation
  • EMAGMA  sponsor qui participe aux frais d’organisation
  • Oracle MySQL sponsor goodies et intervenant 🙂
  • AFUP
  • Ainsi que tous les bénévoles sans qui rien ne serait possible

Kudos

 

Update(28/09/2018): Les présentations sont disponibles ici.

 

Thanks for using MySQL!

 

 

Credit images: http://www.diagramedition.com/toulouse-love-coeur-c2x18824451 – https://tenor.com/search/clapping-hands-gifs
Commentaires fermés sur Apéro PHP MySQL 8.0 avec l’AFUP Toulouse