zoukankan      html  css  js  c++  java
  • MaxScale读写分离

    1.简介
    maxscale是mariadb公司开发的一套数据库中间件,可以很方便的实现读写分离方案;并且提供了读写分离的负载均衡和高可用性保障。另外maxscale对于前端应用而言是透明的,我们可以很方便的将应用迁移到maxscale中实现读写分离方案,来分担主库的压力。maxscale也提供了sql语句的解析过滤功能。这里我们主要讲解maxscale的安装、配置以及注意事项。
     
    2.安装环境
    CentOS 6.5 x86_64:10.10.214.18 MaxScale
    CentOS 6.5 x86_64:10.10.214.88 Master MySQL-5.6.19
    CentOS 6.5 x86_64:10.10.214.89 Slave MySQL-5.6.19
    CentOS 6.5 x86_64:10.10.214.90 Slave MySQL-5.6.19
    配置好主从
    在开始配置之前,需要在 master和slave中为 MaxScale 创建两个用户,用于监控模块和路由模块。
    创建监控用户
    mysql> create user scalemon@'%' identified by "123456";
    mysql> grant replication slave, replication client on *.* to scalemon@'%';
    mysql> grant select on test.* to scaleroute@'%';
    mysql> grant select on mysql.* to scaleroute@'%';
    创建路由用户
    mysql> create user scaleroute@'%' identified by "123456";
    mysql> grant select on mysql.* to scaleroute@'%';
    flush privileges;
     
    3.MaxScale安装、配置和启动
    下载rpm包maxscale-2.0.1-2.centos.6.x86_64.rpm
    rpm -ivh  maxscale-2.0.1-2.centos.6.x86_64.rpm
     
    cat /etc/maxscale.cnf
    [maxscale]
    threads=1
    log_info=1
    logdir=/tmp/
     
    [server1]
    type=server
    address=10.10.214.88
    port=3306
    protocol=MySQLBackend
    serv_weight=1
     
    [server2]
    type=server
    address=10.10.214.89
    port=3306
    protocol=MySQLBackend
    serv_weight=3
     
    [server3]
    type=server
    address=10.10.214.90
    port=3306
    protocol=MySQLBackend
    serv_weight=3
     
    [MySQL Monitor]
    type=monitor
    module=mysqlmon
    servers=server1,server2,server3
    user=scalemon
    passwd=123456
    monitor_interval=10000
    #默认每隔10秒执行监控检查
     
     
    [Read-Write Service]
    type=service
    router=readwritesplit
    servers=server1,server2,server3
    user=scaleroute
    passwd=123456
    max_slave_connections=100%
     
    [Read Connection Router]
    type=service
    router=readconnroute
    router_options=slave
    servers=server1,server2,server3,server3
    user=scalemon
    passwd=123456
     
    [MaxAdmin Service]
    type=service
    router=cli
     
    [Read-Write Listener]
    type=listener
    service=Read-Write Service
    protocol=MySQLClient
    port=4006
    #读/写分离的端口,应用连接这个端口
     
    [Read Connection Listener] 
    type=listener 
    service=Read Connection Router 
    protocol=MySQLClient 
    port=4008
    #slave负载均衡的端口,应用连接这个端口
     
    [MaxAdmin Listener]
    type=listener
    service=MaxAdmin Service
    protocol=maxscaled
    socket=default
    maxscale.cnf
    启动MaxScale
    /etc/init.d/maxscale restart
    查看具体的启动日志,有报错可以根据日志调试
    tail -f /tmp/maxscale1.log
     
    读写分离验证
    mysql  -h10.10.214.18 -P4006 -uscalemon -p123456  test
    mysql> insert into t1 values(1,'aa');
    Query OK, 1 row affected (0.12 sec)
     
    mysql>
    mysql> insert into t1 values(2,'bb');
    Query OK, 1 row affected (0.15 sec)
     
    mysql> insert into t1 values(3,'cc');
    Query OK, 1 row affected (0.12 sec)
     
    可以看到写的全部落到了88上     
    mysql> select count(*) from t1;
    可以看到读全部落到了89上
     
    负载均衡验证:
    mysql  -h10.10.214.18 -P4008 -uscalemon -p123456  test
    mysql> select count(*) from t1;
     
    可以看到读平均落到了89和90上
     
    maxadmin -S /tmp/maxadmin.sock
    MaxScale> list services
    Services.
    --------------------------+----------------------+--------+---------------
    Service Name              | Router Module        | #Users | Total Sessions
    --------------------------+----------------------+--------+---------------
    Read-Write Service        | readwritesplit       |      1 |     4
    Read Connection Router    | readconnroute        |      2 |     7
    MaxAdmin Service          | cli                  |      2 |     2
    --------------------------+----------------------+--------+---------------
     
    MaxScale> list servers
    Servers.
    -------------------+-----------------+-------+-------------+--------------------
    Server             | Address         | Port  | Connections | Status             
    -------------------+-----------------+-------+-------------+--------------------
    server1            | 10.10.214.88    |  3306 |           0 | Master, Running
    server2            | 10.10.214.89    |  3306 |           0 | Slave, Running
    server3            | 10.10.214.90    |  3306 |           1 | Slave, Running
    -------------------+-----------------+-------+-------------+--------------------
     
  • 相关阅读:
    第二节:ts变量声明、通用js数据类型、ts新数据类型、ts类型补充
    第一节:TypeScript简介(特点、编译环境、运行模式)、基于webpack 或 ts-node运行ts详解
    第十七节:Vuex4.x 之Module详解(局部状态、命名空间、辅助函数等) 和 补充nexttick用法
    第十六节:Vuex4.x 简介及state、getters、mutations、actions详解(OptionApi 和 CompositionApi)
    第十五节:VueRouter4.x用法之router-link/router-view的v-slot、动态增删路由、路由导航守卫
    第十四节:VueRouter4.x简介、基本用法、路由懒加载(打包分析)、动态路由、路由嵌套、相关Api
    第十三节:Vue3高级之 render/h函数、jsx、自定义指令、teleport、插件
    HTML让内部元素居中
    蓝桥杯 Web 应用开发模拟赛首次公开!参赛选手速进!
    蓝桥杯历年真题你刷了吗?过来人教你逆袭!
  • 原文地址:https://www.cnblogs.com/manger/p/7212323.html
Copyright © 2011-2022 走看看