# Cluster Galera

Le clustering de bases de données est le processus consistant à combiner plusieurs serveurs en les connectant à une seule base de données. Le clustering améliore la disponibilité de votre base de données en répartissant la charge sur différents serveurs. Si un serveur tombe en panne, d'autres sont rapidement disponibles pour continuer à servir.

MariaDB Galera est une solution de clustering multi-maîtres qui vous permet de lire et d'écrire sur n'importe quel nœud du cluster. Avec MariaDB Galera, une modification apportée à un nœud est répliquée sur tous les nœuds. MariaDB Galera prend en charge les moteurs de stockage XtraDB/InnoDB et est disponible uniquement sur Linux.

##### Configurer le premier serveur

  
Tout d'abord, connectez-vous au premier serveur et créez un fichier de configuration Galera dans la partie mysqld :

<div data-lang="" id="bkmrk-%5Bmysqld%5D-binlog_form"><textarea style="display: none;">\[mysqld\] binlog\_format=ROW default-storage-engine=innodb innodb\_autoinc\_lock\_mode=2 bind-address=0.0.0.0 # Galera Provider Configuration wsrep\_on=ON wsrep\_provider=/usr/lib/galera/libgalera\_smm.so # Galera Cluster Configuration wsrep\_cluster\_name="galera\_cluster" wsrep\_cluster\_address="gcomm://192.168.0.101,192.168.0.102,192.168.0.103" # Galera Synchronization Configuration wsrep\_sst\_method=rsync # Galera Node Configuration wsrep\_node\_address="192.168.0.101" wsrep\_node\_name="server1"</textarea><div><div><textarea spellcheck="false" style="position: absolute; bottom: -1em; padding: 0px; width: 1000px; height: 1em; outline: none;" tabindex="0"></textarea></div><div><div></div></div><div><div></div></div><div></div><div></div><div><div><div><div><div><div><div><div>20</div></div></div><div></div><div></div><div><div> </div></div><div><div><div><div>1</div></div>```
<span role="presentation" style="padding-right: 0.1px;">[mysqld]</span>
```

</div><div><div><div>2</div></div>```
<span role="presentation" style="padding-right: 0.1px;">binlog_format=ROW</span>
```

</div><div><div><div>3</div></div>```
<span role="presentation" style="padding-right: 0.1px;">default-storage-engine=innodb</span>
```

</div><div><div><div>4</div></div>```
<span role="presentation" style="padding-right: 0.1px;">innodb_autoinc_lock_mode=2</span>
```

</div><div><div><div>5</div></div>```
<span role="presentation" style="padding-right: 0.1px;">bind-address=0.0.0.0</span>
```

</div><div><div><div>6</div></div>```
<span role="presentation" style="padding-right: 0.1px;">​</span>
```

</div><div><div><div>7</div></div>```
<span role="presentation" style="padding-right: 0.1px;"># Galera Provider Configuration</span>
```

</div><div><div><div>8</div></div>```
<span role="presentation" style="padding-right: 0.1px;">wsrep_on=ON</span>
```

</div><div><div><div>9</div></div>```
<span role="presentation" style="padding-right: 0.1px;">wsrep_provider=/usr/lib/galera/libgalera_smm.so</span>
```

</div><div><div><div>10</div></div>```
<span role="presentation" style="padding-right: 0.1px;">​</span>
```

</div><div><div><div>11</div></div>```
<span role="presentation" style="padding-right: 0.1px;"># Galera Cluster Configuration</span>
```

</div><div><div><div>12</div></div>```
<span role="presentation" style="padding-right: 0.1px;">wsrep_cluster_name="galera_cluster"</span>
```

</div><div><div><div>13</div></div>```
<span role="presentation" style="padding-right: 0.1px;">wsrep_cluster_address="gcomm://192.168.0.101,192.168.0.102,192.168.0.103"</span>
```

</div><div><div><div>14</div></div>```
<span role="presentation" style="padding-right: 0.1px;">​</span>
```

</div><div><div><div>15</div></div>```
<span role="presentation" style="padding-right: 0.1px;"># Galera Synchronization Configuration</span>
```

</div><div><div><div>16</div></div>```
<span role="presentation" style="padding-right: 0.1px;">wsrep_sst_method=rsync</span>
```

</div><div><div><div>17</div></div>```
<span role="presentation" style="padding-right: 0.1px;">​</span>
```

</div><div><div><div>18</div></div>```
<span role="presentation" style="padding-right: 0.1px;"># Galera Node Configuration</span>
```

</div><div><div><div>19</div></div>```
<span role="presentation" style="padding-right: 0.1px;">wsrep_node_address="192.168.0.101"</span>
```

</div><div><div><div>20</div></div>```
<span role="presentation" style="padding-right: 0.1px;">wsrep_node_name="server1"</span>
```

</div></div></div></div></div></div><div></div><div><div></div></div></div></div></div>##### Configurer le deuxième serveur

Le deuxieme serveur est homogène au premier:

<div data-lang="" id="bkmrk-%5Bmysqld%5D-binlog_form-0"><textarea style="display: none;">\[mysqld\] binlog\_format=ROW default-storage-engine=innodb innodb\_autoinc\_lock\_mode=2 bind-address=0.0.0.0 # Galera Provider Configuration wsrep\_on=ON wsrep\_provider=/usr/lib/galera/libgalera\_smm.so # Galera Cluster Configuration wsrep\_cluster\_name="galera\_cluster" wsrep\_cluster\_address="gcomm://192.168.0.101,192.168.0.102,192.168.0.103" # Galera Synchronization Configuration wsrep\_sst\_method=rsync # Galera Node Configuration wsrep\_node\_address="192.168.0.102" wsrep\_node\_name="server2"</textarea><div><div><textarea spellcheck="false" style="position: absolute; bottom: -1em; padding: 0px; width: 1000px; height: 1em; outline: none;" tabindex="0"></textarea></div><div><div></div></div><div><div></div></div><div></div><div></div><div><div><div><div><div><div><div><div>20</div></div></div><div></div><div></div><div><div> </div></div><div><div><div><div>1</div></div>```
<span role="presentation" style="padding-right: 0.1px;">[mysqld]</span>
```

</div><div><div><div>2</div></div>```
<span role="presentation" style="padding-right: 0.1px;">binlog_format=ROW</span>
```

</div><div><div><div>3</div></div>```
<span role="presentation" style="padding-right: 0.1px;">default-storage-engine=innodb</span>
```

</div><div><div><div>4</div></div>```
<span role="presentation" style="padding-right: 0.1px;">innodb_autoinc_lock_mode=2</span>
```

</div><div><div><div>5</div></div>```
<span role="presentation" style="padding-right: 0.1px;">bind-address=0.0.0.0</span>
```

</div><div><div><div>6</div></div>```
<span role="presentation" style="padding-right: 0.1px;">​</span>
```

</div><div><div><div>7</div></div>```
<span role="presentation" style="padding-right: 0.1px;"># Galera Provider Configuration</span>
```

</div><div><div><div>8</div></div>```
<span role="presentation" style="padding-right: 0.1px;">wsrep_on=ON</span>
```

</div><div><div><div>9</div></div>```
<span role="presentation" style="padding-right: 0.1px;">wsrep_provider=/usr/lib/galera/libgalera_smm.so</span>
```

</div><div><div><div>10</div></div>```
<span role="presentation" style="padding-right: 0.1px;">​</span>
```

</div><div><div><div>11</div></div>```
<span role="presentation" style="padding-right: 0.1px;"># Galera Cluster Configuration</span>
```

</div><div><div><div>12</div></div>```
<span role="presentation" style="padding-right: 0.1px;">wsrep_cluster_name="galera_cluster"</span>
```

</div><div><div><div>13</div></div>```
<span role="presentation" style="padding-right: 0.1px;">wsrep_cluster_address="gcomm://192.168.0.101,192.168.0.102,192.168.0.103"</span>
```

</div><div><div><div>14</div></div>```
<span role="presentation" style="padding-right: 0.1px;">​</span>
```

</div><div><div><div>15</div></div>```
<span role="presentation" style="padding-right: 0.1px;"># Galera Synchronization Configuration</span>
```

</div><div><div><div>16</div></div>```
<span role="presentation" style="padding-right: 0.1px;">wsrep_sst_method=rsync</span>
```

</div><div><div><div>17</div></div>```
<span role="presentation" style="padding-right: 0.1px;">​</span>
```

</div><div><div><div>18</div></div>```
<span role="presentation" style="padding-right: 0.1px;"># Galera Node Configuration</span>
```

</div><div><div><div>19</div></div>```
<span role="presentation" style="padding-right: 0.1px;">wsrep_node_address="192.168.0.102"</span>
```

</div><div><div><div>20</div></div>```
<span role="presentation" style="padding-right: 0.1px;">wsrep_node_name="server2"</span>
```

</div></div></div></div></div></div><div></div><div><div></div></div></div></div></div>##### Démarrage du cluster

Démarrage du premier nœud et vérification

<div data-lang="" id="bkmrk-sudo-galera_new_clus"><textarea style="display: none;"> sudo galera\_new\_cluster \[root@mariadb01 my.cnf.d\]# ps -ef | grep mysql mysql 7604 1 4 15:12 ? 00:00:00 /usr/sbin/mysqld --wsrep-new-cluster --wsrep\_start\_position=00000000-0000-0000-0000-000000000000:-1 root 7650 3887 0 15:12 pts/1 00:00:00 grep --color=auto mysql</textarea><div><div><textarea spellcheck="false" style="position: absolute; bottom: -1em; padding: 0px; width: 1000px; height: 1em; outline: none;" tabindex="0"></textarea></div><div><div></div></div><div><div></div></div><div></div><div></div><div><div><div><div><div><div><div><div>4</div></div></div><div></div><div></div><div><div> </div></div><div><div><div><div>1</div></div>```
<span role="presentation" style="padding-right: 0.1px;"> sudo galera_new_cluster</span>
```

</div><div><div><div>2</div></div>```
<span role="presentation" style="padding-right: 0.1px;">[root@mariadb01 my.cnf.d]# ps -ef | grep mysql</span>
```

</div><div><div><div>3</div></div>```
<span role="presentation" style="padding-right: 0.1px;">mysql 7604 1 4 15:12 ? 00:00:00 /usr/sbin/mysqld --wsrep-new-cluster --wsrep_start_position=00000000-0000-0000-0000-000000000000:-1</span>
```

</div><div><div><div>4</div></div>```
<span role="presentation" style="padding-right: 0.1px;">root 7650 3887 0 15:12 pts/1 00:00:00 grep --color=auto mysql</span>
```

</div></div></div></div></div></div><div></div><div><div></div></div></div></div></div>Vérification :

<div data-lang="lang:sh decode:true" id="bkmrk-%5Broot%40mariadb01-%7E%5D%23-"><textarea style="display: none;">\[root@mariadb01 ~\]# mysql -u dba -p MariaDB \[(none)\]&gt; show status like '%wsrep\_cluster\_size%'; +--------------------+-------+ | Variable\_name | Value | +--------------------+-------+ | wsrep\_cluster\_size | 1 | +--------------------+-------+ 1 row in set (0.00 sec)</textarea><div><div><textarea spellcheck="false" style="position: absolute; bottom: -1em; padding: 0px; width: 1000px; height: 1em; outline: none;" tabindex="0"></textarea></div><div><div></div></div><div><div></div></div><div></div><div></div><div><div><div><div><div><div><div><div>8</div></div></div><div></div><div></div><div><div> </div></div><div><div><div><div>1</div></div>```
<span role="presentation" style="padding-right: 0.1px;">[root@mariadb01 ~]# mysql -u dba -p</span>
```

</div><div><div><div>2</div></div>```
<span role="presentation" style="padding-right: 0.1px;">MariaDB [(none)]> show status like '%wsrep_cluster_size%';</span>
```

</div><div><div><div>3</div></div>```
<span role="presentation" style="padding-right: 0.1px;">+--------------------+-------+</span>
```

</div><div><div><div>4</div></div>```
<span role="presentation" style="padding-right: 0.1px;">| Variable_name | Value |</span>
```

</div><div><div><div>5</div></div>```
<span role="presentation" style="padding-right: 0.1px;">+--------------------+-------+</span>
```

</div><div><div><div>6</div></div>```
<span role="presentation" style="padding-right: 0.1px;">| wsrep_cluster_size | 1 |</span>
```

</div><div><div><div>7</div></div>```
<span role="presentation" style="padding-right: 0.1px;">+--------------------+-------+</span>
```

</div><div><div><div>8</div></div>```
<span role="presentation" style="padding-right: 0.1px;">1 row in set (0.00 sec)</span>
```

</div></div></div></div></div></div><div></div><div><div></div></div></div></div></div>Pour les autres nœuds, le démarrage se fait par la commande classique :

<div data-lang="lang:default decode:true " id="bkmrk-systemctl-start-mysq"><textarea style="display: none;">systemctl start mysqld</textarea><div><div><textarea spellcheck="false" style="position: absolute; bottom: -1em; padding: 0px; width: 1000px; height: 1em; outline: none;" tabindex="0"></textarea></div><div><div></div></div><div><div></div></div><div></div><div></div><div><div><div><div><div><div><div><div>1</div></div></div><div></div><div></div><div><div> </div></div><div><div><div><div>1</div></div>```
<span role="presentation" style="padding-right: 0.1px;">systemctl start mysqld</span>
```

</div></div></div></div></div></div><div></div><div><div></div></div></div></div></div>