zoukankan      html  css  js  c++  java
  • ProxySQL(读写分离)部署

    proxySQL是MySQL的中间件产品,是灵活强大的代理层,实现读写分离,支持Query路由功能,支持动态指定某个SQL进行缓存,支持动态加载配置,故障切换和一些SQL

    过滤功能

    环境:

    192.168.139.152  proxy SQL中间件   server-id=1

    192.168.139.153  master mysql         server-id=2

    192.168.139.154 slave mysql            server-id=3

    proxy SQL更多信息可以访问 https://github.com/sysown/proxysql/wiki

     

    MYSQL安装(all node)

    要点:所有节点都安装MySQL并修改/etc/my.cnf 中的server-id

     更新root密码123qweASD!

    修改配置文件/etc/my.cnf

    [mysqld]

    server-id=1   

    mysql主从部署(master-slave)

    从节点read_only=on

    PROXYSQL安装(proxysql node)

    安装依赖包:

    yum install -y perl-DBD-MySQL  perl-DBI  perl-Time-HiRes perl-IO-Socket-SSL 

    创建repo文件

    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


    安装proxy SQL
    yum install -y proxysql

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

    启动proxy SQL
    service proxysql start

    查看proxysql版本:
    proxy SQL--version

    proxy SQL 默认用户名/密码 admin/admin

    proxysql 管理端口6032 对外服务端口6033
    登陆proxysql :
    mysql -u admin -padmin -h 127.0.0.1 -P 6032
    MySQL>show databases; 显示5个数据库 main disk stats monitor stats_history
    main 内存配置数据库,即MEMORY ,表里存放后端db实例,用户验证,路由规则等信息
      主要表:mysql_servers 后端可以连接MySQL服务器的列表
          mysql_users 配置后端数据库的账户和监控账户
         mysql_query_rules 指定Query路由到后端不同服务器的规则列表
    注:runtime 开头的表,表示当前运行的配置,不可修改;其余表修改后,LOAD使其生效,SAVE使其存到硬盘以供下次重启加载


    master 节点创建proxy SQL监控账户:
    create user 'monitor'@'192.168.139.%' identified by '123qweASD!';
    grant all privileges on *.* to 'monitor'@'192.168.139.%' with grant option;

    master节点创建对外访问账户:
    mysql> create user 'zs'@'192.168.139.%' identified by '123qweASD!';
    mysql> grant all privileges on *.* to 'zs'@'192.168.139.%' with grant option;

    proxy SQL节点:添加主服务器列表 将主从MySQL加进去,自己不加
    mysql -uadmin -padmin -h 127.0.0.1 -P 6032
    mysql>insert into mysql_servers(hostgroup_id,hostname,port) values(10,'192.168.139.153',3306);
    mysql>insert into mysql_servers(hostgroup_id,hostname,port) values(10,'192.168.139.154',3306);
    mysql>load mysql servers to runtime;
    mysql>save mysql servers to disk;

       机器的状态都是online状态

    proxysql配置监控账号
    mysql> set mysql-monitor_username='monitor';
    mysql> set mysql-monitor_password='123qweASD!'; ===》 /etc/proxysql.cnf 中的monitor_password也要修改

    配置proxy SQL主从分组
    mysql> insert into  mysql_replication_hostgroups values(10,20,'proxy');
    mysql> load mysql servers to runtime;
    mysql> save mysql servers to disk;

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

    mysql> insert into mysql_users(username,password,default_hostgroup) values('zs','123qweASD!',10);
    mysql> update mysql_users set transaction_persistent=1 where username='zs';
    mysql> load mysql users to runtime;
    mysql> save mysql users to disk;

    验证登陆服务器就:
    是主库
    读写分离策略配置

    mysql> insert into mysql_query_rules(active,match_pattern,destination_hostgroup,apply) values(1,'^SELECT.*FOR UPDATE$',10,1); ===》写
    mysql> insert into mysql_query_rules(active,match_pattern,destination_hostgroup,apply) values(1,'^SELECT',20,1); ===》读
    mysql> load mysql query rules to runtime;
    mysql> save mysql query rules to disk;

    读写分离测试:

    mysql -u zs -p123qweASD! -h 192.168.139.152 -P 6033 登陆proxysql所在机器登陆数据库
    mysql> select * from mysql.user; 读操作
    mysql> create database zhangyu ; 写操作

    登陆proxysql管理账户

    10 是写库组 20是读库组

        调整权重,让某个机器承受更多读操作

    mysql> update mysql_servers set weight=10 where hostname='192.168.139.154';

    mysql> load mysql servers to runtime;

    mysql> save mysql servers to disk;



  • 相关阅读:
    1265 四点共面
    1003 阶乘后面0的数量
    1080 两个数的平方和
    1090 3个数和为0
    1087 1 10 100 1000
    1082 与7无关的数
    OpenLayers工作原理
    CI(持续集成)CD(持续交付)
    打包命令
    文件与目录管理重点
  • 原文地址:https://www.cnblogs.com/zy1234567/p/10220232.html
Copyright © 2011-2022 走看看