加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长百科 > 正文

mysq通过ProxySQL实现读写疏散

发布时间:2021-03-23 18:10:35 所属栏目:站长百科 来源:网络整理
导读:mysq通过ProxySQL实现读写疏散 常见的读写疏散应用 Oracle:mysql-proxy qihoo:Atlas 美团:dbproxy 网易:cetus amoeba 阿里巴巴:cobar 基于amoeba研发 Mycat:基于cobar实现 ProxySQL ProxySQL:MySQL中间件 版本: 官方版 percona版:percona公司基于官
副问题[/!--empirenews.page--]

mysq通过ProxySQL实现读写疏散

常见的读写疏散应用

Oracle:mysql-proxy
    qihoo:Atlas
    美团:dbproxy
    网易:cetus
    amoeba
    阿里巴巴:cobar 基于amoeba研发
    Mycat:基于cobar实现
    ProxySQL

ProxySQL:MySQL中间件

  • 版本:
    • 官方版
    • percona版:percona公司基于官方版本用C++说话开拓,机能更优
  • 特点:具有中间件所需的绝大大都成果,包罗:
    • 多种方法的读/写疏散
    • 定制基于用户、基于schema、基于语句的法则对SQL语句举办路由
    • 缓存查询功效
    • 后端节点监控

      官方站点:https://proxysql.com/

ProxySQL安装:

  • 筹备:

    • 实现读写疏散前,先实现主从复制

      注:slave处事器 设置文件中必需为 read_only=1,ProxySQL通过read_only=1参数,确定哪个是salve处事器

  • 基于YUM客栈安装:

    [ [email?protected] ~]# cat <<EOF | tee /etc/yum.repos.d/proxysql.repo
    [proxysql_repo]
    name= ProxySQL YUM repository
    baseurl=http://repo.proxysql.com/ProxySQL/proxysql-1.4.x/centos/$releasever
    gpgcheck=1
    gpgkey=http://repo.proxysql.com/ProxySQL/repo_pub_key
    EOF
  • 基于RPM下载安装:https://github.com/sysown/proxysql/releases

  • ProxySQL的构成:

    • 处事剧本:/etc/init.d/proxysql
    • 设置文件:/etc/proxysql.cnf
    • 主措施:/usr/bin/proxysql
    • 基于SQLITE的数据库文件:/var/lib/proxysql/
  • 启动ProxySQL:service proxysql start

    • 启动后会监听两个默认端口:
      • 6032:ProxySQL的打点端口
      • 6033:ProxySQL对外提供处事的端口
  • 行使mysql客户端毗连到ProxySQL的打点端口6032,默认打点员用户和暗码都是admin

    [ [email?protected] ~]# mysql -uadmin -padmin -p6032 -hhost
  • ProxySQL实现读写疏散:

    内置了SQLite小型数据库,内里存储了proxysql的配置

    • 内置的数据库声名:
    • main:是默认的数据库名,表内里存放后端db实例,用户验证,路由法则等信息,表名以runtime_开头暗示ProxySQL当前运行的设置内容,不能通过dml语句修改,只能修改对应的不以runtime_开头的表,然后LOAD使其见效,save使其生涯到硬盘一共下次重启加载
    • disk:是耐久化到停盘的设置,sqlite数据文件
    • stats:是ProxySQL运行抓取到的统计信息,包罗到后端各呼吁的执行次数、流量、processlist、查询种类汇总/执行时刻、等等
    • monnitor:库存储monitor模块网络的信息,首要是对后端db的康健/耽误搜查
      注:监控模块的指标存在log表中
    - 声名:
        1. 在main和monitor数据库中的表,runtime_开头的是运行时的设置,不能修改,只能修改非runtime_表
        2. 修改后必需执行LOAD … TO RUNTIME才气加载到RUNTIME见效
        3. 执行save … to disk 才将设置耐久化生涯到磁盘,即生涯在proxysql.db文件中
        4. global_variables 有很多变量可以配置,个中就包罗监听的端口、打点账号等   
        参考: https://github.com/sysown/proxysql/wiki/Global-variables

设置- ProxySQL:

  • 向ProxySQL中的main库中指定mysql节点(不必要行使use main也可以):
    1. 查察指定的表布局:
        select * from sqlite_master where name=‘mysql_servers‘G 
    2. 添加全部参加主从复制的主机: 
        insert into mysql_servers(hostgroup_id,hostname,port) values(10,‘172.22.45.131‘,3306);  
         insert into mysql_servers(hostgroup_id,‘172.22.45.132‘,3306);  
    3. 加载到runtime中使其见效:
        load mysql servers to runtime;
    4. 生涯到硬盘中:
        save mysql servers to disk;
    字段声名:  
        hostgroup_id:分组id,用来实现区分读组和写组,后续可通过ProxySQL措施自动判定  
        hostname:主从处事器的地点  
        port:主从处事器监听的端标语
  • master和slave节点操纵:
    • 添加监控后端节点的用户,ProxySQL通过每个节点的read_only值来自动调解它们是属于读组照旧写组
      • 主从节点建设用户:
        grant replication client on *.* to [email?protected]‘172.22.45.%‘ identified by ‘centos‘; #用来实现proxysql毗连主从节点
  • ProxySQL上设置监控:

    set mysql-monitor_username=‘monitor‘;
    set mysql-monitor_password=‘centos‘;
    load mysql variables to runtime;
    save mysql variables to disk;   
    
    查察监控毗连是否正常:
        select * from mysql_server_connect_log;
    查察监控心跳信息(对ping指标的监控):
        select * from mysql_server_ping_log;
    查察read_only和replication_lag的监控日记
        select * from mysql_server_read_only_log;
        select * from mysql_server_replication_lag_log;
  • 配置分组信息:
    • 必要修改的是main库中的mysql_replication_hostgroups表,该表有3个字段:writer_hostgroup,reader_hostgroup,comment,指定写组的id为10,读组的id为20
      insert inot mysql_replication_hostgroups values(10,20,‘test‘);
      load mysql servers to runtime;
      save mysql servers to disk;
      # Monitor模块监控后端的read_only值,凭证read_only的值将节点自动移动到读/写组
      查察主从处事器的分组信息:
      select hostgroup_id,port,status,weight from mysql_servers; 
      +--------------+---------------+------+--------+--------+
      |        hostgroup_id | hostname      | port | status | weight |
      +--------------+---------------+------+--------+--------+
      | 10           | 172.22.45.131 | 3306 | ONLINE | 1      |
      | 20           | 172.22.45.132 | 3306 | ONLINE | 1      |
      +--------------+---------------+------+--------+--------+
  • 设置发送SQL语句的用户:
    • 在master节点上建设会见用户
      grant all on *.* to [email?protected]‘host‘ identified by ‘centos‘; #用来让用户毗连proxy行使
    • 在ProxySQL设置,将用户sqluser添加到mysql_users表中, default_hostgroup默认组配置为写组10,当读写疏散的路由法则不切适时,会会见默认组的数据库
      insert into mysql_users(username,password,default_hostgroup)values(‘sqluser‘,‘magedu‘,10);
      load mysql servers to runtime;
      save mysql servers to disk;
    • 测试:今朝因为没有配置读写疏散的路由法则,则全部的读写语句都到默认的分组10中实现
      mysql -usqluser -pcentos -P6033 -h127.0.0.1 -e ‘select @@server_id‘
      +-------------+
      | @@server_id |
      +-------------+
      |         131 |
      +-------------+
      mysql -usqluser -pcentos -P6033 -h127.0.0.1 -e ‘create database testdb‘
      mysql -usqluser -pcentos testdb -P6033 -h127.0.0.1 -e ‘create table t(id int)‘
  • 设置读写疏散的路由法则:

    (编辑:湖南网)

    【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读