MySQL数据库mycat高可用

高可用方案 我们可以使用 HAProxy + Keepalived 配合两台 Mycat 搭起 Mycat 集群,实现高可用性。 HAProxy实现了 MyCat 多节点的集群高可用和负载均衡, 而 HAProxy 自身的高可用则可以通过 Keepalived 来实现. 安装配置 HAProxy 解压编译

make TARGET=linux310 PREFIX=/usr/local/haproxy ARCH=x86_64

ARGET=linux310,内核版本,使用uname -r查看内核,如: 3.10.0-514.el7,此时该参数就为 linux310;

#ARCH=x86_64,系统位数; #PREFIX=/usr/local/haprpxy #/usr/local/haprpxy,为haprpxy安装路径。 编译完成后进行安装

进入haproxy下sbin中编写配置文件

编写配置文件

global
 log 127.0.0.1 local0
 #log 127.0.0.1 local1 notice
 #log loghost local0 info
 maxconn 4096
 chroot /usr/local/haproxy
 pidfile /usr/local/haproxy/haproxy.pid
 uid 99
 gid 99
 daemon
#debug
 #quiet
defaults
 log global
 mode tcp
 option abortonclose
 option redispatch
 retries 3
 maxconn 2000
 timeout connect 5000
 timeout client 50000
 timeout server 50000
listen proxy_status
 bind :48066
 mode tcp
 balance roundrobin
        server mycat_1 192.168.179.148:8066 check inter 10s
        server mycat_2 192.168.179.152:8066 check inter 10s
frontend admin_stats
 bind :7777
 mode http
 stats enable
 option httplog
 maxconn 10
 stats refresh 30s
 stats uri /admin
 stats auth admin:123123
 stats hide-version
 stats admin if TRUE

创建软连接

启动haproxy服务查看端口

关闭7777和48066防火墙端口

验证7777和48066 7777: 在浏览器上输入http://ip:7777/admin

输入配置的用户与密码登录进去

48066:

安装配置keep 创建防火墙规则 firewall-cmd --direct --permanent --add-rule ipv4 filter OUTPUT 0 --in-interface enp0s3 --destination 224.0.0.18 --protocol vrrp -j ACCEPT firewall-cmd --direct --permanent --add-rule ipv4 filter INPUT 0 --in-interface enp0s3 --destination 224.0.0.18 --protocol vrrp -j ACCEPT firewall-cmd --reload

安装依赖包 yum install kernel-devel openssl-devel popt-devel

解压keep包后编译安装 tar zxf keepalived-2.2.4.tar.gz cd keepalived-2.2.4/ ./configure --prefix=/ && make && make install

修改keep主配文件 Vim /etc/keepalived/keepalived.conf 主配翻译:

第二台mycat修改优先级

启动keep

查看进程是否开启 ps -ef |grep keep

查看mycat1ip

使用192.168.179.100登录mycat查看是否登录成功

Mycat安全设置 权限配置 user 标签权限控制 目前 Mycat 对于中间件的连接控制并没有做太复杂的控制,目前只做了中间件逻辑库 级别的读写权限控制。是通过 server.xml 的 user 标签进行配置。

privileges 标签权限控制 在 user 标签下的 privileges 标签可以对逻辑库(schema)、表(table)进行精 细化的 DML 权限控制。 privileges 标签下的 check 属性,如为 true 开启权限检查,为 false 不开启,默 认为 false。 由于 Mycat 一个用户的 schemas 属性可配置多个逻辑库(schema) ,所以 privileges 的下 级节点 schema 节点同样可配置多个,对多库多表进行细粒度的 DML 权限控制.

配置说明

Sql拦截 firewall 标签用来定义防火墙; firewall 下 whitehost 标签用来定义 IP 白名单 , blacklist 用来定义SQL 黑名单。

  1. 白名单 可以通过设置白名单, 实现某主机某用户可以访问 Mycat,而其他主机用户禁止访问。 ####设 置白名单

配置只有192.168.179网段的主机可以通过mycat用户访问 2. 黑名单 可以通过设置黑名单, 实现 Mycat 对具体 SQL 操作的拦截, 如增删改查等操作的拦截。

配置禁止mycat用户进行删除操作

可以设置的黑名单 SQL 拦截功能列表

经验分享 程序员 微信小程序 职场和发展