- 
ProxySQL
:6032(admin,user: admin2,pass: pass2):6033(MySQL endpoint,user: root,pass: password)
 - 
MySQL replication
- master x 1
 - slave x 2
 user: root,pass: password
 - 
Prometheus
:9090- using 
msqld-exporterto obtain mysql metrics 
 - 
Grafana
:3000id: adminpassword: admin
 
docker-compose up -d
                      Name                                     Command               State                       Ports
-------------------------------------------------------------------------------------------------------------------------------------------
proxysql-mysql-replication-master                   docker-entrypoint.sh mysqld      Up      0.0.0.0:3306->3306/tcp, 33060/tcp
proxysql-mysql-replication-mysqld-exporter-master   /bin/mysqld_exporter             Up      0.0.0.0:9104->9104/tcp
proxysql-mysql-replication-mysqld-exporter-slave1   /bin/mysqld_exporter             Up      0.0.0.0:9105->9104/tcp
proxysql-mysql-replication-mysqld-exporter-slave2   /bin/mysqld_exporter             Up      0.0.0.0:9106->9104/tcp
proxysql-mysql-replication-proxysql                 proxysql -f -D /var/lib/pr ...   Up      0.0.0.0:6032->6032/tcp, 0.0.0.0:6033->6033/tcp
proxysql-mysql-replication-slave1                   docker-entrypoint.sh mysqld      Up      0.0.0.0:3307->3306/tcp, 33060/tcp
proxysql-mysql-replication-slave2                   docker-entrypoint.sh mysqld      Up      0.0.0.0:3308->3306/tcp, 33060/tcp
proxysql-mysql-replication_grafana_1                /run.sh                          Up      0.0.0.0:3000->3000/tcp
proxysql-mysql-replication_prometheus_1             /bin/prometheus --config.f ...   Up      0.0.0.0:9090->9090/tcp
- 
MySQL master
$ docker-compose exec mysql-master sh -c "export MYSQL_PWD=password; mysql -u root sbtest -e 'show master status\G'" - 
MySQL slave
If slave fails to connect master, remove
{master,slave}/dataand restart master, then restart slave.$ docker-compose exec mysql-slave1 sh -c "export MYSQL_PWD=password; mysql -u root sbtest -e 'show slave status\G'" - 
ProxySQL
$ mysql -h 0.0.0.0 -P 6032 -u admin2 -p -e 'select * from mysql_servers' Enter password: +--------------+--------------+------+-----------+--------+--------+-------------+-----------------+---------------------+---------+----------------+---------+ | hostgroup_id | hostname | port | gtid_port | status | weight | compression | max_connections | max_replication_lag | use_ssl | max_latency_ms | comment | +--------------+--------------+------+-----------+--------+--------+-------------+-----------------+---------------------+---------+----------------+---------+ | 10 | mysql-master | 3306 | 0 | ONLINE | 1 | 0 | 100 | 5 | 0 | 0 | | | 20 | mysql-slave1 | 3306 | 0 | ONLINE | 1 | 0 | 100 | 5 | 0 | 0 | | | 20 | mysql-slave2 | 3306 | 0 | ONLINE | 1 | 0 | 100 | 5 | 0 | 0 | | +--------------+--------------+------+-----------+--------+--------+-------------+-----------------+---------------------+---------+----------------+---------+ 
- prepare test data
 
❯ sysbench --db-driver=mysql \
        --mysql-host=0.0.0.0 \
        --mysql-port=6033 \
        --mysql-user=root \
        --mysql-password=password \
        --mysql-db=sbtest \
        --threads=10 \
        --tables=10 \
        --table-size=10000 \
        oltp_read_only \
        prepare- run benchmark
 
❯ sysbench --db-driver=mysql \
        --mysql-host=0.0.0.0 \
        --mysql-port=6033 \
        --mysql-user=root \
        --mysql-password=password \
        --mysql-db=sbtest \
        --threads=100 \
        --time=120 \
        oltp_read_only \
        run- Access 
localhost:3000and login. (id: admin,pass: admin) - Go 
Configuration > Add data source - Add Prometheus. (
URL: http://prometheus:9090) - Go 
Create > Importand import MySQL Overview json. - Go 
Dashboards > Home > MysQL Overview 

