Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
wiki:cluster:sql [2017/06/27 22:44] insolentbacon |
wiki:cluster:sql [2020/06/27 18:16] (Version actuelle) |
||
---|---|---|---|
Ligne 3: | Ligne 3: | ||
==== Introduction ==== | ==== Introduction ==== | ||
- | Actuellement nous avons le SQL (avec MySQL en backend) sur | + | On a un cluster MySQL (appelé NDB cluster) qui nous permet |
- | spirit. Il est stocké directement sur le disque en local. | + | |
- | Des sauvegardes sont faites régulièrement sur les NAS, ils sont | + | |
- | dump dans un fichier " | + | |
- | + | ||
- | L' | + | |
- | qui nous permetterait | + | |
1/ De la redondance | 1/ De la redondance | ||
2/ De la "haute disponibilité" | 2/ De la "haute disponibilité" | ||
Ligne 18: | Ligne 12: | ||
Un NDB cluster est consisté de *Data Nodes*, noeuds qui | Un NDB cluster est consisté de *Data Nodes*, noeuds qui | ||
- | permettent de stocker les tables et databases MySQL. | + | permettent de stocker les tables et databases MySQL. De même, les |
+ | utilisateurs et privilèges sont partagés entre tous les noeuds. | ||
L' | L' | ||
Ligne 27: | Ligne 22: | ||
Ça ne remplacera bien évidemment pas les backups réguliers mais | Ça ne remplacera bien évidemment pas les backups réguliers mais | ||
ça permettera de ne pas perdre toute une journée d' | ça permettera de ne pas perdre toute une journée d' | ||
- | cas de défaillance du disque de spirit | + | cas de défaillance du disque |
=== 2/ _La haute disponibilité_ === | === 2/ _La haute disponibilité_ === | ||
Ligne 92: | Ligne 87: | ||
=== Le management === | === Le management === | ||
- | **Attention, le cluster n'a pas __besoin__ des noeuds de management pour tourner. Ils permettent juste de gérer le split brain et de lancer des autres noeuds | + | <WRAP center round info 60%> |
+ | Attention, le cluster n'a pas __besoin__ des noeuds de management pour tourner. Ils permettent juste de gérer le split brain et de lancer des autres noeuds | ||
+ | </ | ||
- | Pour lancer les processus de management il suffit de faire | + | Pour lancer |
ndb_mgmd --initial -f / | ndb_mgmd --initial -f / | ||
+ | Sinon dans la plupart des cas vous pouvez utiliser le service **ndb_mgmd** | ||
| | ||
Vous l' | Vous l' | ||
=== Le stockage === | === Le stockage === | ||
- | Sur ndbdata1, | + | Sur ndbdata1, |
- | | + | |
+ | Les noeuds utilisent 0.75GiB de RAM pour stocker les relations. Ne vous alarmez pas si vous voyez qu'ils utilisent 100% de la RAM du container, c'est normal. (Et même, si vous voulez vous amuser, vous pouvez augmenter la RAM du container et vous rendre compte qu'il utilisera quand même 100% de la RAM) | ||
=== Les noeuds d' | === Les noeuds d' | ||
Sur les noeuds d' | Sur les noeuds d' | ||
+ | Leur disponibilité est cruciale. C'est pour ça qu'il y a un système d'IP virtuelle, mis en place grâce à keepalived qui s' | ||
+ | |||
+ | Pour permettre à MySQL de listen sur l'IP 192.168.102.52 même sur les machines qui n'ont pas cette ip, il faut juste faire: | ||
+ | |||
+ | echo 1 > / | ||
+ | |||
+ | ou ajouter dans / | ||
+ | |||
+ | net.ipv4.ip_nonlocal_bind = 1 | ||
+ | |||
+ | |||
+ | <WRAP center round alert 60%> | ||
+ | Attention ! Dans le cas où tous les noeuds seraient down, si vous les relancez tous avec comme option --initial, la table des privilèges MySQL sera perdue ! (voir [[https:// | ||
+ | </ | ||
+ | |||
+ | ===En cas de problème=== | ||
+ | |||
+ | ==Le cluster n' | ||
+ | Si le cluster n'a pas été éteint proprement, pour le redémarrer, | ||
+ | |||
+ | * Tout d' | ||
+ | * **Si vous ne pouvez pas redémarrer tous les ndb_mgmd du cluster**, il va falloir lancer ceux que vous pouvez lancer en spécifiant l' | ||
+ | > / | ||
+ | |||
+ | * Redémarrer __tous__ les ndbdata car le cluster ne redémarrera pas tant qu'il n'est pas sûr qu'il a bien la dernière version de la base de données. | ||
+ | |||
+ | *Si les ndbdata ne redémarrent pas: allez sur ndbmgmt et consultez les logs dans / | ||
+ | |||
+ | * Enfin, redémarrer au moins un ndbsql (note: les services sql sembleront down si les ndbdata & ndbmgmd ne sont pas up, c'est normal, il ne faut pas essayer de le redémarrer en boucle). | ||