Public | Automated Build

Last pushed: 8 months ago
Short Description
ProxySQL docker image to work with a PerconaXtraDB cluster
Full Description

ProxySQL Docker

This is a container image for ProxySQL. It is meant to run alongside a PerconaXtraDB cluster and etcd. (Image following soon)

Usage

To start ProxySQL you will need PerconaXtraDB and etcd up and running on docker swarm. This images creates a proxy service to distribute requests to a database cluster.

There are some scripts that you can run to provision you databases without loggin in to them.

Start the service

docker service create --name mysql_cluster_proxy \
  --network app-network \
    --network mysql-client \
    --mount type=volume,source=proxysql,target=/var/backup \
    -p 3306 -p 6032 \
    -e DISCOVERY_SERVICE=10.100.0.11:2379 \
    -e CLUSTER_NAME=client_mysql \
    -e MYSQL_PROXY_USER=proxyuser \
    -e MYSQL_PROXY_PASSWORD=s3cret \
    -e MYSQL_ROOT_PASSWORD=password \ 
    phasehosting/mysql-proxy

The service watches for changes in the database cluster and removes dead nodes from the proxy automatically.

I strongly advise to set the followin variables to something uncommon, these credentials are for the superuser and it can connect to every database.

    -e MYSQL_PROXY_USER=proxyuser \                       # Superuser username
    -e MYSQL_PROXY_PASSWORD=s3cret \                      # Superuser password

Create database

(Comming Soon)

Create a database user

To add a new user and restrict access to a database execute the following command:

docker exec -it <container> bash add_user <database> <user> <password>

Automatic backups

The proxy creates backup automatically every 60 min and get retained for 30 days. It is advised to mount a volume to /var/backup for not losing backups when the container gets deleted. Soon, S3 will be added as a storage backend for the backups.

Environment variables

MYSQL_PROXY_SUPERUSER
MYSQL_PROXY_PASSWORD
DISCOVERY_SERVICE
CLUSTER_NAME
PROXY_ADMIN_PORT
PROXY_ADMIN_USER
PROXY_ADMIN_PASS

Custom scripts

You can put custom scripts in the bin folder, they will automatically be copied to /user/bin when building the image. This can make common administrative tasks easy and fast.

Todo

  • Backups to S3
  • Scaling/HA ProxySQL
  • Improve monitoring
  • Improve Etcd discovery
  • Read/write split
Docker Pull Command
Owner
phasehosting
Source Repository