zoukankan      html  css  js  c++  java
  • Lniux MySQLmaxscale的读写分离部署笔记

    MaxScale 的基础构成

    MaxScale 是 Mysql 的兄弟公司 MariaDB 开发的,现在已经发展得非常成熟

    MaxScale 是插件式结构,允许用户开发适合自己的插件

    MaxScale 目前提供的插件功能分为5类

    认证插件

    提供了登录认证功能,MaxScale 会读取并缓存数据库中 user 表中的信息,当有连接进来时,先从缓存信息中进行验证,如果没有此用户,会从后端数据库中更新信息,再次进行验证

    协议插件

    包括客户端连接协议,和连接数据库的协议

    路由插件

    决定如何把客户端的请求转发给后端数据库服务器,读写分离和负载均衡的功能就是由这个模块实现的

    监控插件

    对各个数据库服务器进行监控,例如发现某个数据库服务器响应很慢,那么就不向其转发请求了

    日志和过滤插件

    提供简单的数据库防火墙功能,可以对SQL进行过滤和容错

    MaxScale 的安装使用

    例如有 2 台数据库服务器,是一主一从的结构

    过程概述

    (1)配置好集群环境

    (2)下载安装 MaxScale

    (3)配置 MaxScale,添加各数据库信息

    (4)启动 MaxScale,查看是否正确连接数据库

    (5)客户端连接 MaxScale,进行测试

    详细过程

    (1)配置一主二从的集群环境

    准备2台服务器,安装 Mysql,配置一主一从的复制结构

    主从复制的配置过程可以参考以前的一篇文章

    (2)安装 MaxScale

    最好在另一台服务器上安装,如果资源不足,可以和某个 Mysql 放在一起

    MaxScale 的下载地址

    https://downloads.mariadb.com/files/MaxScale

    (3)配置 MaxScale

    在开始配置之前,需要在 master 中为 MaxScale 创建两个用户,用于监控模块和路由模块

    创建监控用户

    mysql> create user 用户名@'%' identified by "密码";

    mysql> grant replication slave, replication client on *.* to 用户名'%';

    创建路由用户

    mysql> create user 用户名@'%' identified by "密码";

    mysql> grant select on mysql.* to 用户名@'%';

    用户创建完成后,开始配置

    vi /etc/maxscale.cnf

    找到 [server1] 部分,修改其中的 address 和 port,指向 master 的 IP 和端口

    复制1次 [server1] 的整块儿内容,改[server1]为[server2] ,同样修改其中的 address 和 port,指向slave

    找到 [MySQL Monitor] 部分,修改 servers 为 server1,server2,server3,修改 user 和 passwd 为之前创建的监控用户的信息

    找到 [Read-Write Service] 部分,修改 servers 为 server1,server2,server3,修改 user 和 passwd 为之前创建的路由用户的信息

    由于我们使用了 [Read-Write Service],需要删除另一个服务 [Read-Only Service],删除整个内容 注意还有其他的  Read-Only Listener

    配置完成,保存并退出编辑器

    (4)启动 MaxScale

    执行启动命令

    maxscale --config=/etc/maxscale.cnf

    查看 MaxScale 的响应端口是否已经就绪

    netstat -ntelp

    4006 是连接 MaxScale 时使用的端口

    6603 是 MaxScale 管理器的端口

    登录 MaxScale 管理器,查看一下数据库连接状态,默认的用户名和密码是 admin/mariadb

    maxadmin --user=admin --password=mariadb

    MaxScale> list servers

    木有6603 这个端口 不知道是不是版本原因还是什么  所以

    这里直接用 -S /tmp/xxxx

    可以看到,MaxScale 已经连接到了 master 和 slave

    (5)测试

    先在 master 上创建一个测试用户

    mysql> grant ALL PRIVILEGES on *.* to rtest@"%" Identified by "111111";

    使用 Mysql 客户端到连接 MaxScale

    mysql -h MaxScale所在的IP -P 4006 -u rtest -p111111

    执行查看数据库服务器名的操作来知道当前实际所在的数据库

    开启事务后,就自动路由到了 master,普通的查询操作,是在 slave上

    MaxScale 的配置完成了

  • 相关阅读:
    【转】浅谈Node.js单线程模型
    进程
    网络编程:tcp、udp、socket、struct、socketserver
    Python基础练习
    面向对象:其他双下方法
    isinstance、issubclass、反射
    面向对象:__getitem__、__setitem__、__delitem__
    面向对象:classmethod、staticmethod、property
    面向对象:继承、多态、封装
    异常处理
  • 原文地址:https://www.cnblogs.com/xiaolizikj/p/11766168.html
Copyright © 2011-2022 走看看