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

# Fonte de dicionário do MySQL

> Configure o MySQL como fonte de dicionário no ClickHouse.

Exemplo de configurações:

<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="Arquivo de configuração">
    ```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 />

Campos de configuração:

| Configuração                    | Descrição                                                                                                                                                                                                                                                                                                                                                              |
| ------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `port`                          | A porta no servidor MySQL. Você pode especificá-la para todas as réplicas ou para cada uma individualmente (dentro de `<replica>`).                                                                                                                                                                                                                                    |
| `user`                          | Nome do usuário do MySQL. Você pode especificá-lo para todas as réplicas ou para cada uma individualmente (dentro de `<replica>`).                                                                                                                                                                                                                                     |
| `password`                      | Senha do usuário do MySQL. Você pode especificá-la para todas as réplicas ou para cada uma individualmente (dentro de `<replica>`).                                                                                                                                                                                                                                    |
| `replica`                       | Seção de configuração da réplica. Pode haver várias seções.                                                                                                                                                                                                                                                                                                            |
| `replica/host`                  | O host do MySQL.                                                                                                                                                                                                                                                                                                                                                       |
| `replica/priority`              | A prioridade da réplica. Ao tentar se conectar, o ClickHouse percorre as réplicas em ordem de prioridade. Quanto menor o número, maior a prioridade.                                                                                                                                                                                                                   |
| `db`                            | Nome do banco de dados.                                                                                                                                                                                                                                                                                                                                                |
| `table`                         | Nome da tabela.                                                                                                                                                                                                                                                                                                                                                        |
| `where`                         | O critério de seleção. A sintaxe das condições é a mesma da cláusula `WHERE` no MySQL, por exemplo, `id > 10 AND id < 20`. Opcional.                                                                                                                                                                                                                                   |
| `invalidate_query`              | Consulta para verificar o status do dicionário. Opcional. Leia mais na seção [Atualizando os dados do dicionário usando LIFETIME](/pt-BR/reference/statements/create/dictionary/lifetime).                                                                                                                                                                             |
| `fail_on_connection_loss`       | Controla o comportamento do servidor em caso de perda de conexão. Se `true`, uma exceção é lançada imediatamente se a conexão entre cliente e servidor for perdida. Se `false`, o servidor tenta buscar os dados novamente pelo menos três vezes antes de relatar um erro. Observe que as tentativas de repetição aumentam o tempo de resposta. Valor padrão: `false`. |
| `query`                         | A consulta personalizada. Opcional.                                                                                                                                                                                                                                                                                                                                    |
| `enable_compression`            | Habilita a compressão zlib para a conexão do protocolo MySQL. Quando definido como `1`, o ClickHouse solicita compressão no nível do protocolo ao servidor MySQL. Também pode ser definido por réplica dentro de `<replica>`. Valor padrão: `0`.                                                                                                                       |
| `ssl_ca_pem`                    | Conteúdo do certificado da CA usado para verificar o certificado do servidor MySQL. Opcional.                                                                                                                                                                                                                                                                          |
| `ssl_cert_pem`                  | Conteúdo do certificado do cliente, para autenticação baseada em certificado. Opcional.                                                                                                                                                                                                                                                                                |
| `ssl_key_pem`                   | Conteúdo da chave privada associada a `ssl_cert_pem`. Opcional.                                                                                                                                                                                                                                                                                                        |
| `ssl_ca`, `ssl_cert`, `ssl_key` | As mesmas credenciais, como caminhos para arquivos no servidor. Permitido apenas para um dicionário definido em um arquivo de configuração do servidor ou por meio de uma coleção nomeada definida nele; veja abaixo. Opcional.                                                                                                                                        |

<Note>
  Os campos `table` ou `where` não podem ser usados junto com o campo `query`. Além disso, um dos campos `table` ou `query` deve ser declarado.
</Note>

<Note>
  `ssl_ca`, `ssl_cert` e `ssl_key` nomeiam arquivos que o servidor abre com seus próprios privilégios; portanto, são aceitos apenas para um dicionário definido em um arquivo de configuração do servidor ou por meio de uma coleção nomeada definida nele. Uma consulta `CREATE DICTIONARY` que especifica as credenciais TLS diretamente deve fornecer seu conteúdo em `ssl_ca_pem`, `ssl_cert_pem` e `ssl_key_pem`. Esses valores são mascarados nos logs e em consultas `SHOW`, da mesma forma que as senhas.
</Note>

<Note>
  Não há um parâmetro explícito `secure`. Ao estabelecer uma conexão SSL, a segurança é obrigatória.
</Note>

É possível conectar-se ao MySQL em um host local via sockets. Para isso, defina `host` e `socket`.

Exemplo de configurações:

<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="Arquivo de configuração">
    ```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>
