目录
Mycat安全设置_user标签权限控制
Mycat安全设置_privileges标签权限控制
Mycat安全设置_SQL拦截白名单
Mycat安全设置_SQL拦截黑名单
Mycat性能监控_Mycat-web安装
Mycat性能优化
Mycat实施指南
Mycat安全设置_user标签权限控制
目前 Mycat 对于中间件的连接控制并没有做太复杂的控制,目前只做了中间件逻辑库级别的读写权限控制。是通过 server.xml 的 user 标签进行配置。
#server.xml配置文件user部分
<user name="mycat">
<property name="password">123456</property>
<property name="schemas">TESTDB</property>
</user>
<user name="user">
<property name="password">user</property>
<property name="schemas">TESTDB</property>
<property name="readOnly">true</property>
</user>
参数:
- name:应用连接中间件逻辑库的用户名
- password:该用户对应的密码
- TESTDB:应用当前连接的逻辑库中所对应的逻辑表。
- schemas 中可以配置一个或多个
- readOnly:应用连接中间件逻辑库所具有的权限。true 为只读,false 为读写都有,默认为 false
测试案例
使用user用户,权限为只读(readOnly:true),验证是否可以查 询出数据,验证是否可以写入数据。
1、用user用户登录,运行命令如下:
mysql -uuser -puser -h 192.168.140.128 -P8066
2、切换到TESTDB数据库,查询orders表数据,如下:
use TESTDB
select * from orders;
3、执行插入数据sql
insert into orders(id,order_type,customer_id,amount) values(7,101,101,10000);
4、可看到运行结果,插入失败,只有只读权限
mysql> insert into orders(id,order_type,customer_id,amount) values(7,101,101,10000);
ERROR 1495 (HY000): User readonly
实时学习反馈
1.Mycat技术中如何设置用户只读操作___。
A Only="true"
B readOnly="false"
C read="true"
D readOnly="true"
Mycat安全设置_privileges标签权限控制
在 user 标签下的 privileges 标签可以对逻辑库(schema)、表 (table)进行精细化的 DML 权限控制。
#server.xml配置文件privileges部分
#配置orders表没有增删改查权限
<user name="mycat">
<property name="password">123456</property>
<property name="schemas">TESTDB</property>
<!-- 表级 DML 权限设置 -->
<privileges check="true">
<schema name="TESTDB" dml="1111" >
<table name="orders" dml="0000"></table>
<!--<table name="tb02" dml="1111"></table>-->
</schema>
</privileges>
</user>
配置说明
测试案例
使用mycat用户,privileges配置orders表权限为禁止增删改查 (dml="0000") 验证是否可以查询出数据,验证是否可以写入数据。
1、重启mycat,用mycat用户登录,运行命令如下:
mysql -umycat -p123456 -h 192.168.66.101 -P8066
2、切换到TESTDB数据库,查询orders表数据,如下:
use TESTDB
select * from orders;
3、禁止该用户查询数据
mysql> use TESTDB
Database changed
mysql> select* from orders;
ERROR 3012(HY000): The statement DML
privilege check is not passed,reject for user 'mycat'
4、执行插入数据sql,如下
insert into orders(id,order_type,customer_id,amount) values(8,101,101,10000);
5、可看到运行结果,禁止该用户插入数据
mysql> insert into orders(id,order_type,customer_id,amount)
values(8,101,101,10000)ERROR 3012 (HY000):
The statement DMLprivilege check is not
passed,reject for use
实时学习反馈
1.Mycat技术中如何细粒度控制对用户进行权限控制___。
A user
B server
C privileges
D rule
2. Mycat技术中如何设置用户对表的操作只有添加权限____。
A dml="0000"
B dml="1000"
C dml="1110"
D dml="1111"
Mycat安全设置_SQL拦截白名单
firewall标签用来定义防火墙;firewall下whitehost标签用来定义IP 白名单 ,blacklist 用来定义SQL 黑名单。
白名单
可以通过设置白名单,实现某主机某用户可以访问 Mycat,而其他主机用户禁止访问。
#设置白名单
#server.xml配置文件firewall标签
#配置只有192.168.66.101主机可以通过mycat用户访问
<firewall>
<whitehost>
<host host="192.168.66.102" user="mycat"/>
</whitehost>
</firewall>
实时学习反馈
1.Myat技术中如何添加白名单___。
A server下whitehost 标签
B rule下whitehost 标签
C schema下whitehost 标签
D firewall下whitehost 标签
Mycat安全设置_SQL拦截黑名单
可以通过设置黑名单,实现Mycat对具体SQL操作的拦截,如增删改查等操作的拦截。
#设置黑名单
#server.xml配置文件firewall标签
#配置禁止mycat用户进行删除操作
<firewall>
<whitehost>
<host host="192.168.140.128" user="mycat"/>
</whitehost>
<blacklist check="true">
<property name="deleteAllow">false</property>
</blacklist>
</firewall>
黑名单 SQL 拦截功能列表
实时学习反馈
1.Myat技术中如何设置用户不能执行删除语句___。
A selectAllow="false"
B alterTableAllow="false"
C useAllow="false"
D deleteAllow="false"
Mycat性能监控_Mycat-web安装
Mycat-web是Mycat可视化运维的管理和监控平台。Mycat-web引 入了 ZooKeeper作为配置中心,可以管理多个节点。
注意: Mycat-web 主要管理和监控 Mycat 的流量、连接、活动线程和 内存等,具备IP白名单、邮件告警等模块,还可以统计SQL并分 析慢SQL和高频 SQL等。为优化SQL提供依据。
Docker安装Zookeeper
docker run --name myzk -d -p 2181:2181 zookeeper
解压Mycat-web
tar -zxvf Mycat-web-1.0-SNAPSHOT-20170102153329-linux.tar.gz -C /usr/local
设置Zookeeper的地址
在/usr/local/mycat-web/mycat-web/WEB-INF/classes/mycat.properties文件中配置
zookeeper=192.168.66.101:2181
进入mycat-web的目录下运行启动命令
cd /usr/local/mycat-web/
./start.sh &
查看服务已经启动
lsof -i:8082
通过地址访问服务
Mycat性能优化
JVM调优
Java堆内存和直接内存映射,建议堆内存大小适度,直接映射的内存尽可能大,总计占用操作系统50%~67%的内存。
示例
下面以16GB内存的服务器为例,Mycat堆内存为4GB,直接内存映 射为6GB,
修改文件 /usr/local/mycat/bin/startup_nowrap.sh
JAVA_OPTS="-server -Xms4G -Xmx2G -XX:MaxPermSize=64M -XX:+AggressiveOpts -XX:MaxDirectMemorySize=6G"
Mycat调优
MyCAT所有的调优参数都可以才server.xml中找到。
主要讨论两个内容:
1、processors数值的影响范围。
<system>
<property name="processors">1</property>
<property name="processorExecutor">16</property>
</system>
参数:
- processors:CPU核心数越多,可以越大,当发现系统CPU压力很小的情况下,可以适当调 大此参数,如4核心的4CPU,可以设置为16,24核的可以最大设置为128
- processorExecutor:每个processor的线程池大小,建议可以是16-64,根据系统能力来测 试和确定。
设置连接数
<dataHost name="localhostl" maxCon="500" mincon="10" balance="O"
dbType="MySQL"dbDriver="native" banlance="0">
注意: 最大连接池maxCon的值可以改为1000~2000,同一个MySQL 实例上的所有dataNode节点共享本dataHost上的所有物理连接。
实时学习反馈
1.Mycat技术中使用JVM进行调优映射的内存,总计占用操作系统 ___的内存。
A 50%~67%
B 60%~70%
C 70%~80%
D 80%~90%
Mycat实施指南
分表分库原则
原则一:能不分就不分;
原则二:分片数量尽量少;
原则三:分片规则需要慎重选择;
原则四:尽量不要在一个事务中的SQL跨越多个分片;
原则五:查询条件尽量优化;
注意: 这里特别强调一下分片规则的选择问题,如果某个表的数据有明显的时间特征,比如订单、交易记录等,则他们通常比较合 适用时间范围分片,因为具有时效性的数据。
数据拆分原则
- 达到一定数量级才拆分(800 万);
- 不到 800 万但跟大表(超 800 万的表)有关联查询的表也要拆分,在此称为大表关联表;
- 小于100万的使用全局表;
- 大于100万小于800 万跟大表使用同样的拆分策略。
实时学习反馈
1.Myat技术分表分库最重要得原则___。
A 能不分就不分
B 分片数量尽量少
C 分片规则需要慎重选择
D 查询条件尽量优化
2.Myat技术分表分库达到____数量级才拆分。
A 700万
B 800万
C 900万
D 1000万