Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

MySQL dictionary source

Example of settings:

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
))
<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>

Setting fields:

Setting Description
port The port on the MySQL server. You can specify it for all replicas, or for each one individually (inside <replica>).
user Name of the MySQL user. You can specify it for all replicas, or for each one individually (inside <replica>).
password Password of the MySQL user. You can specify it for all replicas, or for each one individually (inside <replica>).
replica Section of replica configurations. There can be multiple sections.
replica/host The MySQL host.
replica/priority The replica priority. When attempting to connect, ClickHouse traverses the replicas in order of priority. The lower the number, the higher the priority.
db Name of the database.
table Name of the table.
where The selection criteria. The syntax for conditions is the same as for WHERE clause in MySQL, for example, id > 10 AND id < 20. Optional.
invalidate_query Query for checking the dictionary status. Optional. Read more in the section Refreshing dictionary data using LIFETIME.
fail_on_connection_loss Controls behavior of the server on connection loss. If true, an exception is thrown immediately if the connection between client and server was lost. If false, the server retries to fetch data at least three times before reporting an error. Note that retrying leads to increased response times. Default value: false.
query The custom query. Optional.
enable_compression Enables zlib compression for the MySQL protocol connection. When set to 1, ClickHouse requests protocol-level compression from the MySQL server. Can also be set per-replica inside <replica>. Default value: 0.
ssl_ca_pem Contents of the CA certificate that the MySQL server certificate is verified against. Optional.
ssl_cert_pem Contents of the client certificate, for certificate-based authentication. Optional.
ssl_key_pem Contents of the private key belonging to ssl_cert_pem. Optional.
ssl_ca, ssl_cert, ssl_key The same credentials as paths to files on the server. Only allowed for a dictionary defined in a server configuration file, or through a named collection defined there, see below. Optional.

MySQL can be connected to on a local host via sockets. To do this, set host and socket.

Example of settings:

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'
))
<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>
Navigation