zoukankan      html  css  js  c++  java
  • proxysql

    proxysql软件包的下载地址:

    Github下载地址: https://github.com/sysown/proxysql/releases

    proxysql网站的下载地址:https://proxysql.com/documentation/installing-proxysql/

    可以yum直接安装

    配置文件路径/etc/proxysql.cnf

     启动proxysql的服务

    service proxysql start 

    注:6032是proxysql的管理端口号,6033是对外服务的端口号

    用户名和密码都是默认的admin

    关闭proxysql:

    service   proxysql   stop

    管理员的登录命令:

    /usr/local/mysql/bin/mysql   -uadmin -padmin -h  127.0.0.1  -P  6032

    可见有四个库:main 、disk 、stats 和monitor。分别说明一下这四个库的作用。

      main:内存配置数据库,即MEMORY,表里存放后端db实例、用户验证、路由规则等信息。main库中有如下信息:

       库下的主要表:

      mysql_servers ——后端可以连接mysql服务器的列表。

      mysql_users——配置后端数据库的账号和监控的账号。

      mysql_query_rules——指定query路由到后端不同服务器的规则列表。

      注:表名以runtime_开头的表示proxysql当前运行的配置内容,不能通过DML语句修改。只能修改对应的不以runtime开头的表,然后“LOAD”使其生效,“SAVE”使其存到硬盘以供下次重启加载。

      disk库:持久化磁盘的配置。

      stats库:统计信息的汇总。

      monitor库:一些监控的收集信息,包括数据库的健康状态等。

    配置PROXYSQL监控

    首先在master()上创建proxysql的监控账户和对外访问账户并赋予权限。

    给全权限。

    proxysql有一套很完整的配置系统,方便DBA对线上的操作。整套配置系统分为三层,顶层为RUNTIME,中间层为MEMORY,底层也就是持久层为DISK和CONFIG FILE。

    RUNTIME:代表proxysql当前生效的正在使用的配置,无法直接修改这里的配置,必须要从下一层“load”进来。

    MEMORY:MEMORY层上面连接RUNTIME层,下面连接持久化层。在这层可以正常操作proxysql配置,随便修改,不会影响生产环境。修改一个配置一般都是先在MEMORY层完成的,确认正常之后再加载到RUNTIME和持久化到磁盘上。

    DISK和CONFIG FILE:持久化配置信息,重启后内存中的配置信息会丢失,所以需要将配置信息保留在磁盘中。重启时,可以从磁盘快速加载回来。

    然后用超管用户登录proxysql来添加主从服务器列表。

    insert into mysql_servers (hostgroup_id,hostname,port)   values (10,'192.168.2.100',3306);

    insert into mysql_servers (hostgroup_id,hostname,port)  values  (10,'192.168.2.101',3306);

    insert into mysql_servers (hostgroup_id,hostname,port)  values  (10,'192.168.2.102',3306);

    load mysql servers to runtime;

    save mysql servers to disk;

      登录proxysql之后,凡是进行任何操作,都需要运行load ** to runtime,从memory加载到runtime,再执行save ** to disk 持久化到磁盘。

    加载完成之后,三台机器都是online 状态。

      接下来继续为proxysql配置监控账号,命令如下:

      set mysql-monitor_username='monitor';

      set mysql-monitor_password='monitor';

      load mysql variables to runtime;

      save mysql variables to disk;

     

      配置proxysql主从分组信息


    这里会用到一张表mysql_replication_hostgroups;

    里面的writer_hostgroup是写入组的编号,reader_hostgroup是读取组的编号。10作为写入组,20作为读取组编号。

      insert into mysql_replication_hostgroups values (10,20,'proxy');

      load mysql servers to runtime;

      save mysql servers to disk;

    proxysql 会根据server的read_only的取值将服务器进行分组。read_only=0的server,master被分到编号为10的写组,read_only=1的server,slave则被分到编号为20的读组。

    配置对外访问账号,默认指定主库,并对该用户开启事务持久化保护。

    注:mysql_users表中的transaction_persistent字段默认为0,建议在创建完用户之后设置为1,避免发生脏读、幻读等现象,命令如下:

    insert into mysql_users(username,password,default_hostgroup) values ('wcf','wcf',10);

    update mysql_users set transaction_persistent=1  where username='zs';

    load mysql users to runtime;

    save mysql users to disk;

    注:对外访问的端口号需要指定为6033.

    配置读写分离策略

      配置读写分离策略需要使用mysql_query_rules表。表中的match_pattern字段就是代表设置的规则,destination_hostgroup字段代表默认指定的分组,apply代表真正执行应用规则。

      把所有以select开头的语句全部分配到编号为20的读组中。select for update会产生一个写锁,对数据查询的时效性要求高,把它分配到编号为10的写组中,其他所有操作都会默认路由到写组中。

      命令如下:

      insert into mysql_query_rules(active,match_pattern,destination_hostgroup,apply) values (1,'^select.*for update$',10,1);

      insert into mysql_query_rules(active,match_pattern,destination_hostgroup,apply) values (1,'^select',20,1);

      load mysql query rules to runtime;

      save mysql query rules to disk;

       


      

  • 相关阅读:
    opencv学习笔记7 重映射和仿射变换
    opencv学习笔记8 高斯金字塔,拉普拉斯金字塔,调整大小
    opencv学习笔记6 角点检测
    opencv学习笔记5 霍夫变换 漫水填充
    opencv学习笔记4 边缘检测
    opencv学习笔记3 滤波 形态学
    opencv学习笔记2 拖动条,亮度对比度 颜色空间缩减 鼠标事件
    opencv学习笔记1 加载图像 图像融合 分通道与合并
    URL编码表
    BUUCTF-[GWCTF 2019]我有一个数据库 1
  • 原文地址:https://www.cnblogs.com/wonchaofan/p/13512453.html
Copyright © 2011-2022 走看看