通过 ProxySQL 均衡负载 StarRocks, doris

本文详细介绍了如何在CentOS上安装和配置ProxySQL,包括依赖安装、文件路径、配置修改、启动服务、用户管理、全局日志设置、后端数据库连接、监控配置及解决常见问题,如连接超时和事务处理等。
摘要由CSDN通过智能技术生成

1. 通过 ProxySQL 均衡负载
  1.1 安装相关依赖
      yum install -y gnutls perl-DBD-MySQL perl-DBI perl-devel
  1.2 下载并解压 ProxySQL 。
      wget https://github.com/sysown/proxysql/releases/download/v2.0.14/proxysql-2.0.14-1-centos7.x86\_64.rpm 
      -- 安装文件
      rpm -ivh proxysql-2.0.14-1-centos7.x86_64.rpm
      -- 查看相应安装文件路径,有哪些文件
      rpm -ql proxysql
      例如:如下路径
      /etc/logrotate.d/proxysql
      /etc/proxysql.cnf
      /etc/systemd/system/proxysql-initial.service
      /etc/systemd/system/proxysql.service
      /usr/bin/proxysql
      /usr/share/proxysql/tools/proxysql_galera_checker.sh
      /usr/share/proxysql/tools/proxysql_galera_writer.pl
      
  在测试机器  172.00.01.03 安装
  1.3 修改配置文件 /etc/proxysql.cnf
      修改以下配置项为您有访问权限的目录(绝对路径)。
      datadir = "/var/lib/proxysql"
      errorlog = "/var/lib/proxysql/proxysql.log"
  
  1.4 启动 ProxySQL。
      1)启动方式一: systemctl start proxysql
      2)启动方式二: systemctl restart proxysql 
      
      3)查看状态:
        ss -antl
        # systemctl enable proxysql     -- ??
        # chkconfig proxysql on         -- ??
        ss -anlp|grep proxysql
        netstat -tunlp   -- 端口监听 
      
        systemctl status proxysql
      #(StarRocks 启动命令异常) ./usr/bin/proxysql -c ./etc/proxysql.cnf --no-monitor

  1.5 登录 StarRocks(管理 端口6032)。
      mysql -u admin -padmin -h 127.0.0.1 -P6032   -- 这里是管理方式的登录
      备注:这里登录的是ProxySQL(如果使用 StarRocks 账户是无法登录的)
            ProxySQL 默认包含两个端口,其中 6032 是 ProxySQL 的管理端口,
            6033 是 ProxySQL 的流量转发端口,即对外提供服务的端口;
      用户管理
        a: 普通用户只能查看
             select @@admin-stats_credentials;    //查看当前的普通用户和密码
        b: 增加普通用户
           set admin-stats_credentials='stats:stats;dev_user:dev_pswd99';    //添加普通用户 dev_user 密码为 dev_pswd99
        c: 是账户生效        
           load admin variables to runtime;
           save admin variables to disk;    
           mysql -udev_user -pdev_pswd99 -h172.00.01.03 -P6032             // 通用用户登录
           登录后,智能看到三个库
           
           
  
  1.6 配置全局日志
      SET mysql-eventslog_filename='proxysql_queries.log';
      SET mysql-eventslog_default_log=1;
      SET mysql-eventslog_format=2;
      load mysql variables to runtime;
      save mysql variables to disk;  
  1.7 插入主节点以及 Observer 节点并读取配置
      ProxySQL 配置后端 StarRocks FE
      insert into mysql_servers(hostgroup_id, hostname, port) values(1, '172.00.01.02', 9030);
      insert into mysql_servers(hostgroup_id, hostname, port) values(1, '172.00.01.03', 9030);
      insert into mysql_servers(hostgroup_id, hostname, port) values(1, '172.00.01.04', 9030);
      insert into mysql_servers(hostgroup_id, hostname, port) values(1, '172.00.01.05', 9030);
      insert into mysql_servers(hostgroup_id, hostname, port) values(1, '172.00.01.06', 9030);
      load mysql servers to runtime;
      save mysql servers to disk;  
      -- 查看配置情况 
      select * from mysql_servers\G;
      
      -- 首先在后端master主数据节点上创建一个用于监控的用户名
      在StarRocks fe master 主数据库节点行执行:
      # mysql -P9030 -uroot -p 
        mysql -h172.00.01.03 -P9030 -uroot -proot_123
       mysql> create user monitor@'XXX.XXX.XXX.%' identified by 'pwsd_123';
              create user monitor@'172.19.135.%' identified by 'pwsd_123';
       mysql> grant ADMIN_PRIV on *.* to monitor@'XXX.XXX.XXX.%';    
              grant ADMIN_PRIV on *.* to monitor@'172.00.01.%';          
       
      然后回到 mysql-proxy 代理层节点上配置监控
       -- mysql -uadmin -padmin -P6032 -h127.0.0.1
       MySQL > set mysql-monitor_username='monitor';
       MySQL > set mysql-monitor_password='pwsd_123';
       -- 修改后,加载到RUNTIME,并保存到disk
       MySQL > load mysql variables to runtime;
       MySQL > save mysql variables to disk;

      
      -- 使用root 用户登录
       mysql -uroot -proot_123 -P6033 -h172.00.01.03 -e "show databases;"     -- root 这个是无法登录
       -- 增加普通用户
       首先,在 StarRocks FE master主数据库节点上执行:
       mysql> create user StarRocks_user@'%' identified by 'Strk_user@09';
       mysql> grant ADMIN_PRIV on *.* to StarRocks_user@'%';
       
       -- 然后回到mysql-proxy代理层节点,配置 mysql_users表,将刚才的两个用户添加到该表中。
       admin> insert into mysql_users(username,password,default_hostgroup) values('root','root_123',1);
       admin> insert into mysql_users(username,password,default_hostgroup) values('StarRocks_user','Strk_user@09',1);
   
       备注:这里的坑是 账户密码要和 StarRocks 保持一致;
       -- 加载用户到运行环境中,并将用户信息保存到磁盘
       admin> load mysql users to runtime;
       admin> save mysql users to disk;
       -- 查看表结构
       admin> select * from mysql_users\G
       
       -- 链接查看 StarRocks数据(以下测试成功)
       mysql -uStarRocks_user -pStrk_user@09 -P6033 -h172.00.01.03 -e "show databases;"
       mysql -uroot -proot_123 -P6033 -h172.00.01.03 -e "show databases;"
       # mysql -uStarRocks_user -pStrk_user@09 -P6033 -h172.00.01.03
       
       
       报错:ERROR 9001 (HY000) at line 1: Max connect timeout reached while reaching hostgroup 1 after 10000m
          这个时候发现出错,并没有转发到后端真正的StarRocks fe上
          通过日志看到有set autocommit=0 这样开启事务
          检查配置发现:
          mysql-forward_autocommit=false
          mysql-autocommit_false_is_transaction=false
          我们这里不需要读写分离,只需要将这两个参数通过下面语句直接搞成true就可以了
          -- 客户端执行(使用 6032 端口进去)
          mysql> UPDATE global_variables SET variable_value='true' WHERE variable_name='mysql-forward_autocommit';
          mysql> UPDATE global_variables SET variable_value='true' WHERE variable_name='mysql-autocommit_false_is_transaction';
          -- 保存 
          mysql> load mysql variables to runtime;
          mysql> save mysql variables to disk;
      
      
  1.8 配置用户名和密码并读取配置(这里配置的是 6032 管理用户)。    
      insert into mysql_users(username, password, active, default_hostgroup, backend, frontend) 
      values('root', 'root_123', 1, 1, 1, 1);
      load mysql users to runtime; 
      save mysql users to disk;
      备注:必须在MySQL 下生产 select password('root_123'); 
      
  1.9 写入代理规则并读取配置。
      insert into mysql_query_rules(rule_id, active, match_digest, destination_hostgroup, mirror_hostgroup, apply) values(1, 1, '.', 1, 2, 1);
      load mysql query rules to runtime; 
      save mysql query rules to disk;         
  
  备注:特殊命令说明
        一般在内存那层修改 ,然后保存到运行系统,保存到磁盘数据库系统
        load xxx to runtime;
        save xxx to disk;
  
  
  完成以上步骤后,您可以通过 ProxySQL 经由 6033 端口对数据库进行操作。
   ---------------
   ---------------
   -- 以下进行测试 -- 
   mysql -uStarRocks_user -pStrk_user@09 -P6033 -h172.00.01.03 -e "show databases;"
  
---------------------------------------
1. ProxySQL  一些基本维护问题

  
  
---------------------------------------  
  
  
官方文档
-- StarRocks 官网写的比较粗糙,存在部分问题,不准;
https://docs.starrocks.io/zh-cn/2.3/administration/Load_balance  

-- doris 官网更详细,更准确
https://doris.apache.org/zh-CN/docs/dev/admin-manual/cluster-management/load-balancing


      
      

  • 19
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值