MySQL
MySQL Data Connector Documentation
MySQL is an open-source relational database management system that uses structured query language (SQL) for managing and manipulating databases.
The MySQL Data Connector enables federated/accelerated SQL queries on data stored in MySQL databases.
datasets:
- from: mysql:mytable
name: my_dataset
params:
mysql_host: localhost
mysql_tcp_port: 3306
mysql_db: my_database
mysql_user: my_user
mysql_pass: ${secrets:mysql_pass}
mysql_pool_min: 10
mysql_pool_max: 100Configuration
from
fromThe from field takes the form mysql:database_name.table_name where database_name is the fully-qualified table name in the SQL server.
If the database_name is omitted in the from field, the connector will use the database specified in the mysql_db parameter. If the mysql_db parameter is not provided, it will default to the user's default database.
These two examples are identical:
name
nameThe dataset name. This will be used as the table name within Spice.
Example:
The dataset name cannot be a reserved keyword or any of the following keywords that are reserved by MySQL:
PARTITION
params
paramsThe MySQL data connector can be configured by providing the following params. Use the secret replacement syntax to load the secret from a secret store, e.g. ${secrets:my_mysql_conn_string}.
mysql_connection_string
The connection string to use to connect to the MySQL server. This can be used instead of providing individual connection parameters.
mysql_host
The hostname of the MySQL server.
mysql_tcp_port
The port of the MySQL server.
mysql_db
The name of the database to connect to.
mysql_user
The MySQL username.
mysql_pass
The password to connect with.
mysql_sslmode
Optional. Specifies the SSL/TLS behavior for the connection, supported values: required (default) - requires an SSL connection, preferred - tries SSL but connects insecurely if not supported, disabled - does not use SSL.
mysql_sslrootcert
Optional parameter specifying the path to a custom PEM certificate that the connector will trust.
mysql_time_zone
Optional. Specifies connection time zone. Default is UTC. Accepts fixed offsets (e.g., +02:00), IANA time zone names (e.g., America/Los_Angeles) if supported by the MySQL server, system (MySQL server host's OS time zone), or local_system (local runtime OS time zone).
mysql_pool_min
The minimum number of connections to keep open in the pool, lazily created when requested. Default: 10
mysql_pool_max
The maximum number of connections to allow in the pool. Default: 100
metrics
metricsThe MySQL data connector supports the following optional component metrics:
connection_count
Gauge
Gauge of active connections to the database server
connections_in_pool
Gauge
Gauge of active connections that are idling in the pool
active_wait_requests
Gauge
Gauge of requests that are waiting for a connection to be returned to the pool
create_failed
Counter
Counter of connections that failed to be created
discarded_superfluous_connection
Counter
Counter of connections that were closed because there were already enough idle connections in the pool
discarded_unestablished_connection
Counter
Counter of connections that were closed because they could not be established
dirty_connection_return
Counter
Counter of connections that were returned to the pool but were dirty (ie. open transactions, pending queries, etc)
discarded_expired_connection
Counter
Counter of connections that were discarded because they were expired by the pool constraints (i.e. TTL expired)
resetting_connection
Counter
Counter of connections that were reset
discarded_error_during_cleanup
Counter
Counter of connections that were discarded because they returned an error during cleanup
connection_returned_to_pool
Counter
Counter of connections that were returned to the pool
These metrics are not enabled by default, enable them by setting the metrics parameter:
Types
The table below shows the MySQL data types supported, along with the type mapping to Apache Arrow types in Spice.
TINYINT
Int8
SMALLINT
Int16
INT
Int32
MEDIUMINT
Int32
BIGINT
Int64
DECIMAL
Decimal128 / Decimal256
FLOAT
Float32
DOUBLE
Float64
DATETIME
Timestamp(Microsecond, None)
TIMESTAMP
Timestamp(Microsecond, None)
YEAR
Int16
TIME
Time64(Nanosecond)
DATE
Date32
CHAR
Utf8
BINARY
Binary
VARCHAR
Utf8
VARBINARY
Binary
TINYBLOB
Binary
TINYTEXT
Utf8
BLOB
Binary
TEXT
Utf8
MEDIUMBLOB
Binary
MEDIUMTEXT
Utf8
LONGBLOB
LargeBinary
LONGTEXT
LargeUtf8
SET
Utf8
ENUM
Dictionary(UInt16, Utf8)
BIT
UInt64
Examples
Connecting using username and password
Connecting using SSL
Connecting using a Connection String
Connecting to the default database
With custom connection pool settings
Last updated
Was this helpful?