> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-mintlify-fbfa8bee.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Source de dictionnaire MySQL

> Configurer MySQL comme source de dictionnaire dans ClickHouse.

Exemple de paramètres :

<Tabs>
  <Tab title="DDL">
    ```sql theme={null}
    SOURCE(MYSQL(
        port 3306
        user 'clickhouse'
        password 'qwerty'
        replica(host 'example01-1' priority 1)
        replica(host 'example01-2' priority 1)
        db 'db_name'
        table 'table_name'
        where 'id=10'
        invalidate_query 'SQL_QUERY'
        fail_on_connection_loss 'true'
        query 'SELECT id, value_1, value_2 FROM db_name.table_name'
        enable_compression 1
    ))
    ```
  </Tab>

  <Tab title="Fichier de configuration">
    ```xml theme={null}
    <source>
      <mysql>
          <port>3306</port>
          <user>clickhouse</user>
          <password>qwerty</password>
          <replica>
              <host>example01-1</host>
              <priority>1</priority>
          </replica>
          <replica>
              <host>example01-2</host>
              <priority>1</priority>
          </replica>
          <db>db_name</db>
          <table>table_name</table>
          <where>id=10</where>
          <invalidate_query>SQL_QUERY</invalidate_query>
          <fail_on_connection_loss>true</fail_on_connection_loss>
          <query>SELECT id, value_1, value_2 FROM db_name.table_name</query>
          <enable_compression>1</enable_compression>
      </mysql>
    </source>
    ```
  </Tab>
</Tabs>

<br />

Champs des paramètres :

| Paramètre                 | Description                                                                                                                                                                                                                                                                                                                                                                             |
| ------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `port`                    | Port du serveur MySQL. Vous pouvez le spécifier pour toutes les répliques, ou individuellement pour chacune d’elles (dans `<replica>`).                                                                                                                                                                                                                                                 |
| `user`                    | Nom de l’utilisateur MySQL. Vous pouvez le spécifier pour toutes les répliques, ou individuellement pour chacune d’elles (dans `<replica>`).                                                                                                                                                                                                                                            |
| `password`                | Mot de passe de l’utilisateur MySQL. Vous pouvez le spécifier pour toutes les répliques, ou individuellement pour chacune d’elles (dans `<replica>`).                                                                                                                                                                                                                                   |
| `replica`                 | Section de configuration des répliques. Il peut y avoir plusieurs sections.                                                                                                                                                                                                                                                                                                             |
| `replica/host`            | Hôte MySQL.                                                                                                                                                                                                                                                                                                                                                                             |
| `replica/priority`        | Priorité de la réplique. Lors d’une tentative de connexion, ClickHouse parcourt les répliques par ordre de priorité. Plus le nombre est faible, plus la priorité est élevée.                                                                                                                                                                                                            |
| `db`                      | Nom de la base de données.                                                                                                                                                                                                                                                                                                                                                              |
| `table`                   | Nom de la table.                                                                                                                                                                                                                                                                                                                                                                        |
| `where`                   | Critère de sélection. La syntaxe des conditions est la même que celle de la clause `WHERE` dans MySQL, par exemple `id > 10 AND id < 20`. Facultatif.                                                                                                                                                                                                                                   |
| `invalidate_query`        | Requête permettant de vérifier l’état du dictionnaire. Facultatif. Pour en savoir plus, consultez la section [Actualisation des données du dictionnaire à l’aide de LIFETIME](/fr/reference/statements/create/dictionary/lifetime).                                                                                                                                                     |
| `fail_on_connection_loss` | Contrôle le comportement du serveur en cas de perte de connexion. Si `true`, une exception est immédiatement levée si la connexion entre le client et le serveur est perdue. Si `false`, le serveur réessaie de récupérer les données au moins trois fois avant de signaler une erreur. Notez que ces nouvelles tentatives augmentent le temps de réponse. Valeur par défaut : `false`. |
| `query`                   | Requête personnalisée. Facultatif.                                                                                                                                                                                                                                                                                                                                                      |
| `enable_compression`      | Active la compression zlib pour la connexion utilisant le protocole MySQL. Lorsqu’elle est définie sur `1`, ClickHouse demande une compression au niveau du protocole au serveur MySQL. Peut également être définie pour chaque réplique dans `<replica>`. Valeur par défaut : `0`.                                                                                                     |

<Note>
  Les champs `table` ou `where` ne peuvent pas être utilisés avec le champ `query`. L’un des champs `table` ou `query` doit obligatoirement être déclaré.
</Note>

<Note>
  Il n’existe pas de paramètre explicite `secure`. Lors de l’établissement d’une connexion SSL, la sécurité est obligatoire.
</Note>

Il est possible de se connecter à MySQL sur un hôte local via des sockets. Pour ce faire, définissez `host` et `socket`.

Exemple de paramètres :

<Tabs>
  <Tab title="DDL">
    ```sql theme={null}
    SOURCE(MYSQL(
        host 'localhost'
        socket '/path/to/socket/file.sock'
        user 'clickhouse'
        password 'qwerty'
        db 'db_name'
        table 'table_name'
        where 'id=10'
        invalidate_query 'SQL_QUERY'
        fail_on_connection_loss 'true'
        query 'SELECT id, value_1, value_2 FROM db_name.table_name'
    ))
    ```
  </Tab>

  <Tab title="Fichier de configuration">
    ```xml theme={null}
    <source>
      <mysql>
          <host>localhost</host>
          <socket>/path/to/socket/file.sock</socket>
          <user>clickhouse</user>
          <password>qwerty</password>
          <db>db_name</db>
          <table>table_name</table>
          <where>id=10</where>
          <invalidate_query>SQL_QUERY</invalidate_query>
          <fail_on_connection_loss>true</fail_on_connection_loss>
          <query>SELECT id, value_1, value_2 FROM db_name.table_name</query>
      </mysql>
    </source>
    ```
  </Tab>
</Tabs>
