proxysql 是一个比较强大的mysql proxy 服务,支持动态mysql 实例调整,查询重写,查询cache,监控,数据镜像,读写分离
以及ha,最近已经发布了2.0 ,很值得试用下

环境准备

  • docker-compose 文件
version: "3"
services:
  mysql:
    image: mysql:5.7.16
    ports:
      - 3306:3306
    command: --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
    environment:
      MYSQL_ROOT_PASSWORD: dalongrong
      MYSQL_DATABASE: test
      MYSQL_USER: test
      MYSQL_PASSWORD: test
      TZ: Asia/Shanghai
  proxysql:
    image: proxysql/proxysql:2.0.5
    volumes: 
    - "./proxysql.cnf:/etc/proxysql.cnf"
    ports:
    - "6033:6033"
    - "6032:6032"
  • proxysql.cnf 文件

    主要是关于proxysql 的一些运行是配置,同时我们也可以配置mysql server 实例,以下为了简单,直接使用配置文件的方式

datadir="/var/lib/proxysql"
admin_variables=
{
    admin_credentials="admin:admin;radmin:radmin"
    mysql_ifaces="0.0.0.0:6032"
}
mysql_variables=
{
    threads=4
    max_connections=2048
    default_query_delay=0
    default_query_timeout=36000000
    have_compress=true
    poll_timeout=2000
    interfaces="0.0.0.0:6033"
    default_schema="information_schema"
    stacksize=1048576
    server_version="5.5.30"
    connect_timeout_server=3000
    monitor_username="root"
    monitor_password="dalongrong"
    monitor_history=600000
    monitor_connect_interval=60000
    monitor_ping_interval=10000
    monitor_read_only_interval=1500
    monitor_read_only_timeout=500
    ping_interval_server_msec=120000
    ping_timeout_server=500
    commands_stats=true
    sessions_sort=true
    connect_retries_on_failure=10
}
 mysql_servers =
 (
  {
    address="mysql"
    port=3306
    hostgroup=0
    max_connections=200
  }
 )
mysql_users:
 (
  {
    username = "root"
    password = "dalongrong"
    default_hostgroup = 0
    max_connections=1000
    default_schema="information_schema"
    active = 1
  }
 )

启动&&简单操作

  • 启动
docker-compose up -d
  • 管理连接接口
mysql -h127.0.0.1 -P6032 -uradmin -pradmin --prompt "ProxySQL Admin>"
  • 简单操作
show databases;

效果

ProxySQL Admin>show databases;
+-----+---------------+-------------------------------------+
| seq | name          | file                                |
+-----+---------------+-------------------------------------+
| 0   | main          |                                     |
| 2   | disk          | /var/lib/proxysql/proxysql.db       |
| 3   | stats         |                                     |
| 4   | monitor       |                                     |
| 5   | stats_history | /var/lib/proxysql/proxysql_stats.db |
+-----+---------------+-------------------------------------+
5 rows in set (0.01 sec)

查询mysql server

select * from main.mysql_servers\G;

效果

select * from main.mysql_servers\G;
*************************** 1. row ***************************
       hostgroup_id: 0
           hostname: mysql
               port: 3306
          gtid_port: 0
             status: ONLINE
             weight: 1
        compression: 0
    max_connections: 200
max_replication_lag: 0
            use_ssl: 0
     max_latency_ms: 0
            comment: 
1 row in set (0.00 sec)
ERROR: 
No query specified
 

查询运行时mysql server

select * from runtime_mysql_servers\G;
*************************** 1. row ***************************
       hostgroup_id: 0
           hostname: mysql
               port: 3306
          gtid_port: 0
             status: ONLINE
             weight: 1
        compression: 0
    max_connections: 200
max_replication_lag: 0
            use_ssl: 0
     max_latency_ms: 0
            comment: 
1 row in set (0.01 sec)
  • 应用连接
    应用连接的端口为6033
    连接方式:
mysql -h127.0.0.1 -P6033 -uroot -pdalongrong

简单查询

 select * from rongdemo.usersinfo;
+----------+--------+
| username | userid |
+----------+--------+
| dalong | 1 |
+----------+--------+
1 row in set (0.00 sec)
 

说明

proxysql 功能是比较强大的,性能也很不错,对于同时提供了管理以及连接地址,暴露为标准的mysql 协议,对于配置的生效
并不是添加mysql server 实例到main.mysql_servers 就可以了,需要到runtime ,同时还需要配置进行持久化,相关命令有

LOAD MYSQL USERS TO RUNTIME;
SAVE MYSQL USERS TO DISK;
LOAD MYSQL SERVERS TO RUNTIME;
SAVE MYSQL SERVERS TO DISK;
LOAD MYSQL QUERY RULES TO RUNTIME;
SAVE MYSQL QUERY RULES TO DISK;
LOAD MYSQL VARIABLES TO RUNTIME;
SAVE MYSQL VARIABLES TO DISK;
LOAD ADMIN VARIABLES TO RUNTIME;
SAVE ADMIN VARIABLES TO DISK;

对于proxysql,社区也提供了好多方便的监控工具,比如exporter ,方便与promethues 集成
对应官方的dockerfile 文件

 
FROM debian:stretch
MAINTAINER Nikolaos Vyzas <nick@proxysql.com>
RUN apt-get update && apt-get install -y wget lsb-release gnupg apt-transport-https ca-certificates && wget -O - 'https://repo.proxysql.com/ProxySQL/repo_pub_key' | apt-key add - && echo deb https://repo.proxysql.com/ProxySQL/proxysql-2.0.x/$(lsb_release -sc)/ ./ | tee /etc/apt/sources.list.d/proxysql.list && apt-get update && apt-get install proxysql=2.0.5 && rm -rf /var/lib/apt/lists/*
ENTRYPOINT ["proxysql", "-f", "-D", "/var/lib/proxysql"]

参考资料

https://github.com/sysown/proxysql/wiki/Configuring-ProxySQL
https://github.com/sysown/proxysql
https://github.com/rongfengliang/proxysql-docker-compose
https://hub.docker.com/r/proxysql/proxysql

proxysql 学习一 proxysql docker 运行试用的更多相关文章

  1. scylladb docker 运行试用

      scylladb 是兼容cassandra 的数据存储系统,从官方的性能报告,比原生的apache cassandra 有好多 的提高 使用docker 运行,具体的也可以参考官方文档,后边会提供 ...

  2. workerman docker 运行试用

    看到别人项目使用了workerman 作为webserver ,看了下介绍发现此框架还是挺强大的,比较喜欢使用 docker运行软件,所以基于php 7.3 的基础镜像简单使用下 环境准备 项目使用了 ...

  3. cronicle docker 运行试用

    Cronicle 是一款基于nodejs 开发的分布式任务调度工具,包含了比较全的UI,使用也比较简单,为了 方便学习,简单制作了一个docker 镜像,方便使用 Dockerfile   FROM ...

  4. torodb docker 运行试用

    torodb 可以方便的让你迁移到pg,同时使用标准原生的sql 查询 使用官方的docker-compose 进行测试 环境准备 docker-compose 文件 wget https://raw ...

  5. ipfs docker 运行试用

    ipfs 是一个分布式,p2p 的文件系统,参考了git.bt.sfs 以及web 的设计 环境准备 docker-compose 文件 version: "3" services ...

  6. Docker学习笔记之搭建Docker运行环境

    0x00 概述 既然 Docker 是一款实用软件,我们就不得不先从它的安装说起,只有让 Docker 运行在我们的计算机上,才能更方便我们对 Docker 相关知识和使用方式的学习.得益于与商业性的 ...

  7. Singer 学习五 docker 运行说明

    介绍过一个工具knots ,方便Singer 可视化开发的工具,但是默认这个工具包含的tap 以及target 比较少(可以自己扩展) 同时这个工具就是基于docker 运行的 docker 运行的几 ...

  8. deno学习四 docker 运行官方的一个http file server

    github 上已经有人搞了一个deno 的docker 镜像,是基于源码编译的,挺好的 所以结合官方的http server demo 使用docker 运行 环境准备 docker-compose ...

  9. proxysql 学习二 admin-web 启用

    proxysql 从1.4.4 开始内置了一个简单的http server,可以方便进行状态信息的查看,今天在 尝试通过配置参数以及update global_variables 没有生效,set 也 ...

随机推荐

  1. 解决clover配置文件conf.plist中nv_disable=1或者nvda_drv=1不生效或者说不能删除的问题

    情况一:U盘安装MacOS的时候conf.plist中设置了nv_disable=1,但是启动的时候任然显示nvda_drv=1. 这种情况一般出现在该机器曾经安装过MacOS,MacOS会将这个参数 ...

  2. pytest_03_pycharm运行pytest (转:上海悠悠)

    前言 上一篇pytest文档2-用例运行规则已经介绍了如何在cmd执行pytest用例,平常我们写代码在pycharm比较多 写完用例之后,需要调试看看,是不是能正常运行,如果每次跑去cmd执行,太麻 ...

  3. .NET 使用 JustAssembly 比较两个不同版本程序集的 API 变化

    原文:.NET 使用 JustAssembly 比较两个不同版本程序集的 API 变化 最近我大幅度重构了我一个库的项目结构,使之使用最新的项目文件格式(基于 Microsoft.NET.Sdk)并使 ...

  4. C语言--简易词法分析器

    #include <stdio.h>#include <stdlib.h>#include <string.h>int p,m,syn,n,sum;       / ...

  5. 微服务架构ServiceMesh

    公司用的架构,在此找了资料作为记录复看所用: 什么是Service Mesh? Service Mesh的概念最早是由Buoyant公司的CEO William Morgan在一篇文章里提出,他给出的 ...

  6. JAVA - @WebServlet的使用方法

    在servlet3.0以后,我们可以不用再web.xml里面配置servlet,只需要加上@WebServlet注解就可以修改该servlet的属性了. 下面是@WebServlet的属性列表. 属性 ...

  7. mysql模糊查询1,11,111用逗号(其他符号)拼接的相似字符串

    mysql进行模糊查询时,基本都是LIKE "%sss%",有时候这种查询时准确的,但是有种情况这种查询会出现很大问题. 看一下下面这张表 如果想查询字段test包含1的数据,一般 ...

  8. 如何在SAP Cloud Platform上进行第一个integration flow开发

    登录SAP Cloud Platform integration tenant,点击Edit图标: 创建一个新的Content package: 保存content package后,点击artifa ...

  9. python系列:一、Urllib库的基本使用

    开篇介绍: 因为我本人也是初学者,爬虫的例子大部分都是学习资料上面来的,只是自己手敲了一遍,同时加上自己的理解. 写得不好请多谅解,如果有错误之处请多赐教. 我本人的开发环境是vscode,pytho ...

  10. SpringBoot整合定时任务和异步任务处理

    SpringBoot定时任务schedule讲解 简介:讲解什么是定时任务和常见定时任务区别 1.常见定时任务 Java自带的java.util.Timer类 timer:配置比较麻烦,时间延后问题, ...