mysql/mysql-router

By mysql

Updated about 2 years ago

MySQL Router provides transparent routing between your application and back-end MySQL Servers.

Image
28

5M+

logo

What is MySQL Router?

MySQL Router is part of InnoDB cluster, and is lightweight middleware that provides transparent routing between your application and back-end MySQL Servers. It can be used for a wide variety of use cases, such as providing high availability and scalability by effectively routing database traffic to appropriate back-end MySQL Servers. The pluggable architecture also enables developers to extend MySQL Router for custom use cases.

Supported Tags and Respective Dockerfile Links

Images are updated when new MySQL Server maintenance releases and development milestones are published. Please note that non-GA releases are for preview purposes only and should not be used in production setups.

How to Use the MySQL Router Images

The image currently uses the following mandatory variables:

VariableDescription
MYSQL_HOSTMySQL host to connect to
MYSQL_PORTPort to use
MYSQL_USERUser to connect with
MYSQL_PASSWORDPassword to connect with

Running in a container requires a working InnoDB cluster.

The image uses the following optional variables:

VariableDescription
MYSQL_INNODB_CLUSTER_MEMBERSWait for at least this number of cluster instances to be ONLINE
MYSQL_CREATE_ROUTER_USERWhether to create a new account for the Router to use when it's running. Defaults to 1, set to 0 to disable.

If supplied the run script waits for the given mysql host to be up, the InnoDB cluster to have MYSQL_INNODB_CLUSTER_MEMBERS members and then uses the given server for its bootstrap mode Bootstrapping.

The image can be run via:

docker run -e MYSQL_HOST=localhost -e MYSQL_PORT=3306 -e MYSQL_USER=mysql -e MYSQL_PASSWORD=mysql -e MYSQL_INNODB_CLUSTER_MEMBERS=3 -ti mysql/mysql-router

It can be verified by typing:

docker ps

The following output should be displayed:

4954b1c80be1 mysql-router:8.0 "/run.sh mysqlrouter" About a minute ago Up About a minute (healthy) 6447/tcp, 6448/tcp, 0.0.0.0:6446->6446/tcp, 6449/tcp innodbcluster_mysql-router_1

Exposed Ports

The following TCP ports are exposed by the MySQL Router container:

PortDescription
6446R/W connection port. Clients that connect to this port will be forwarded to the PRIMARY
6447R/O connection port. Clients that connect to this port will be forwarded to a SECONDARY
6448X Protocol R/W connection port. R/W port for X protocol client connections
6449X Protocol R/O connection port. R/O port for X protocol client connections
8443HTTPS REST interface port.

For more information about the REST interface API, see:

https://dev.mysql.com/doc/mysql-router/8.0/en/mysql-router-rest-api-reference.html

For full usage documentation, see:

https://dev.mysql.com/doc/mysql-router/8.0/en/mysql-router-installation-docker.html

Docker Pull Command

docker pull mysql/mysql-router