"; > grant select on mysql.* to maxscale@'%'; maxscale 部署: rpm -ivh maxscale-2.0.5-1.rhel.6.x86_64.rpm /var /var/lib /var/lib/maxscale 创建秘钥文件: [root@maxscale /root ]# maxkeys /var/lib/maxscale 生成加密后的密码: [root@maxscale /root ]# maxpasswd/var/lib/maxscale/.secrets 123456 上面划掉的这2步骤我们用不到,直接在配置文件/etc/maxscale.cnf : maxscale -f/etc/maxscale.cnf ss -lnt 可以看到4006端口启动了。 /maxscale.log记录如下: ?
MaxScale 是干什么的? MaxScale 的基础构成 MaxScale 是 Mysql 的兄弟公司 MariaDB 开发的,现在已经发展得非常成熟 MaxScale 是插件式结构,允许用户开发适合自己的插件 MaxScale 的安装使用 例如有 3 台数据库服务器,是一主二从的结构 过程概述 (1)配置好集群环境 (2)下载安装 MaxScale (3)配置 MaxScale,添加各数据库信息 (4)启动 MaxScale maxscale --config=/etc/maxscale.cnf 查看 MaxScale 的响应端口是否已经就绪 netstat -ntelp ? 4006 是连接 MaxScale 时使用的端口 6603 是 MaxScale 管理器的端口 登录 MaxScale 管理器,查看一下数据库连接状态,默认的用户名和密码是 admin/mariadb
Node3 上安装maxscale: rpm -ivh maxscale-2.1.4-1.rhel.6.x86_64.rpm mkdir /data/binlog/ -p chown maxscale.maxscale *这种命名方式 添加这个master.ini文件,以便启动maxscale后自动去拉取主库的目前的全部binlog文件(即便后来主库的binlog过期后被自动purge掉了,maxscale服务器上的binlog 还会保存着的) 然后,在node3上开启maxscale服务: /etc/init.d/maxscale start 稍等片刻,node3会把主库的全部binlog都拉过来。 日志记录在/var/log/maxscale/maxscale.log 里面。 ss -lnt|grep 5308 端口起来的话。 还可以登陆maxscale控制台: maxadmin -S /tmp/maxadmin.sock MaxScale> show services 等其他很多查看状态的命令,可使用help提示。
---- 中间件maxScale 实现读写分离 主流的两个 : mysql-proxy (未正式发布,性能和稳定性有点问题,不建议) 和 maxScale . maxScale 是 MariaDB(MySQL maxScale 不仅能提供读写分离,而且能实现读请求的负载均衡 。 ---- 使用中间件实现读写分离的优缺点 优点: 由中间件根据查询语法分析,自动完成读写分离。 如何实现读的负载均衡 : 软件 :LVS 、 Haproxy、MaxScale 等 , 硬件: F5 等 ---- MaxScale 最终的架构 我们先看下我们再次将要完成的方案的架构 MySQL -- -- > MaxScale -----> MHA集群 ? ---- MaxScale Core介绍 ?
-g maxscale maxscale## 解压安装包并授权mkdir /data/maxscaletar xf maxscale-6.1.4.rhel.7.tar.gz -C /data/maxscale /maxscale/var/lib/maxscale/.secrets' set to owner:read.Ownership of '/data/maxscale/var/lib/maxscale/ .secrets' given to maxscale. ## 使用密钥对明文密码加密# /data/maxscale/bin/maxpasswd /data/maxscale/var/lib/maxscale /data/maxscale/ssl/ -R配置 MaxScale 配置文件# vim /data/maxscale/etc/maxscale.cnf[maxscale]threads=auto # # Start MaxScaleExecStart=/data/maxscale/bin/maxscale --user=maxscale --basedir=/data/maxscale/ --config
另外maxscale对于前端应用而言是透明的,我们可以很方便的将应用迁移到maxscale中实现读写分离方案,来分担主库的压力。maxscale也提供了sql语句的解析过滤功能。 x86_64/maxscale-2.2.0-1.rhel.7.x86_64.rpm 3.1 安装 将maxscale安装在主节点 rpm -ivh maxscale-2.2.0-1.rhel.7.x86 _64.rpm 3.2 创建所需目录 mkdir -p /maxscale/cache mkdir -p /maxscale/data mkdir -p /maxscale/log /log/ datadir=/maxscale/data/ libdir=/usr/lib64/maxscale/ cachedir=/maxscale/cache/ piddir=/maxscale 3.6 启动MaxScale maxscale -f /etc/maxscale.cnf 3.7 查看MaxScale 状态 [root@www.linuxmi.com software]# maxadmin
之前介绍了 MaxScale 可以实现 Mysql 的读写分离和读负载均衡,那么当 slave 出现故障后,MaxScale 会如何处理呢? MaxScale 的状态,需要把 MaxScale 的日志打开 修改配置文件 vi /etc/maxscale.cnf 找到 [maxscale] 部分,这里用来进行全局设置,在其中添加日志配置 log_info =1 logdir=/tmp/ 通过开启 log_info 级别,可以看到 MaxScale 的路由日志 修改配置后,重启 MaxScale 实验过程 1单个 slave 故障的情况 初始状态是一切正常 slave2 又可以正常接受查询请求 通过实验可以看到,在部分 slave 发生故障时,MaxScale 可以自动识别出来,并移除路由列表,当故障恢复重新上线后,MaxScale 也能自动将其加入路由, =true 保存退出,然后重启 MaxScale 验证 停掉两台 slave ,查看 MaxScale 服务器状态 ?
MaxScale:也支持读写分离来实现负载均衡。MaxScale 提供了多种路由模块,例如读写分离模块和读负载均衡模块,用户可以根据需要启用不同的模块。 MaxScale:也提供了自动故障检测和故障转移,保证服务的高可用性。MaxScale 的故障转移策略可以与MariaDB的复制集群紧密集成。 MaxScale:MaxScale 的响应速度可能相对较慢,因为它不支持查询缓存,对于每个查询请求都需要向数据库服务器发送请求并等待响应。 MaxScale:MaxScale 也可以处理大量的并发连接,它支持多线程处理,并且其连接池可以有效地管理并发连接。 故障检测:MaxScale可以监控主从数据库服务器,自动检测节点故障。 自动切换:在检测到主服务器故障时,MaxScale可以自动执行故障转移,将从服务器提升为新的主服务器。
对于延迟敏感的业务无法自动在主库执行 使用MaxScale解决读压力大的问题 MaxScale介绍 支持高可用,负载均衡,良好扩展的插件式数据库中间层软件 MaxScale允许用户开发和定制适合自己的插件 协议插件 负责 MaxScale和外部系统间接口的协议,包括客户端到MaxScale的接口,以及MaxScale 到后端数据库的接口 3. 对数据库密码进行加密 因为maxScale的配置文件是一个文本格式的明文文件,在文件中直接书写mysql密码是不安全的 maxScale提供了加密mysql密码的命令,这个命令是在maxScale节点中运行 对maxscale进行配置 [root@Node3 tools]# vim /etc/maxscale.cnf 参数说明 [maxscale] thread=1 # 不要超过cpu的数量 [ 启动maxscale服务 [root@Node3 tools]# maxscale -f /etc/maxscale.cnf 6.
2.部署Maxscale服务 Maxscale下载 1.下载并安装Maxscale服务 [root@test3 ~]# wget https://downloads.mariadb.com/MaxScale 9 16:40 /etc/maxscale.cnf -----下面是备份maxscale服务的配置文件----- [root@test3 ~]# mkdir maxscale [root@test3 ~]# cp /etc/maxscale.cnf /root/maxscale/ [root@test3 ~]# ll /root/maxscale/ 总用量 4 -rw-r--r-- 1 root root 1560 6月 9 16:44 maxscale.cnf 2.修改Maxscale配置文件 [root@test3 ~]# vim /etc/maxscale.cnf [maxscale 服务 [root@test3 ~]# maxscale -f /etc/maxscale.cnf //启动maxscale服务 [root@test3 ~]# ss -antulp | grep
以往在没有 MariaDB MaxScale 的情况下,这通常需要大量的代码重构。 /maxscale-24.02.2-1.rhel.7.x86_64.rpmshell> yum install maxscale-24.02.2-1.rhel.7.x86_64.rpm -y2)配置 MaxScale 支持 MongoDB协议环境: 192.168.176.204 - MaxScale 192.168.198.239 - MariaDB1.创建MaxScale配置文件shell> vim /etc/maxscale.cnf[maxscale]threads=autoadmin_secure_gui=falseadmin_host=0.0.0.0[server1]type=serveraddress ● maxscale.service - MariaDB MaxScale Database Proxy Loaded: loaded (/usr/lib/systemd/system/maxscale.service
scale: initialScale, // 当前缩放比例 initialScale: initialScale, // 初始缩放比例 maxScale: maxScale, // 最大缩放比例 if (progress < 0.2) { // 平滑插值从initialScale到maxScale icon.scale = icon.initialScale + (icon.maxScale - icon.initialScale) * (progress / 0.2) } else { // 保持maxScale icon.scale = icon.maxScale } // // 平滑插值从initialScale到maxScale icon.scale = icon.initialScale + (icon.maxScale - icon.initialScale ) * (progress / 0.2) } else { // 保持maxScale icon.scale = icon.maxScale
└─$cp /etc/maxscale.cnf /etc/maxscale.cnf.bak ┌──[root@vms152.liruilongs.github.io]-[~] └─$vim /etc/ maxscale.cnf 备份配置文件,然后修改 ┌──[root@vms152.liruilongs.github.io]-[~] └─$cat /etc/maxscale.cnf # MaxScale 服务 ┌──[root@vms152.liruilongs.github.io]-[~] └─$maxscale -f /etc/maxscale.cnf -U maxscale ┌──[root@vms152 ┌──[root@vms152.liruilongs.github.io]-[~] └─$maxscale -f /etc/maxscale.cnf -U maxscale ┌──[root@vms152 .liruilongs.github.io]-[~] └─$ 测试 MaxScale 检查全局配置 使用maxctrl show maxscale命令查看全局maxscale配置。
一:部署mysql-proxy代理服务器 1)安装mariadb官方提供的maxscale软件包 # rpm -ivh maxscale-2.1.2-1.rhel.7.x86_64.rpm # vim /etc/maxscale.cnf [maxscale] threads=1 [server1] #指定ip地址对应的名字 type=server address=192.168.4.10 # on *.* to scalemon@'%' identified by “111111”; //创建监控用户 mysql> grant select on mysql.* to maxscale 创建路由用户 mysql> grant all on *.* to student@'%' identified by “111111”; //创建客户端访问用户 2)启动maxscale 服务 # maxscale --config=/etc/maxscale.cnf # netstat -utnalp | grep maxscale # kill -9 进程id //通过杀进程的方式停止服务
SELECT @@server_id 如果被替换成读取敏感文件的语句,Well~ 实战演示 配置服务 我们用 Ubuntu 16.04 进行演示,安装好 mariadb 和 maxscale MaxScale 确认 mariadb 可用之后,我们再配置下 maxscale 插件,完整配置在文末可以下载。 而恶意的MariaDB服务器上,最后一行是 work 账号,而且没有 xfs 用户(grep 验证了下) 下面我们来连接到恶意的服务器,执行一下 select @@server_id 命令(注意 MaxScale 附件 完整 MaxScale 配置查看阅读原文。
GestureConfig 参数说明 参数 描述 默认值 minScale 缩放最小值 0.8 animationMinScale 缩放动画最小值,当缩放结束时回到minScale值 minScale * 0.8 maxScale 缩放最小值 5.0 animationMaxScale 缩放动画最大值,当缩放结束时回到maxScale值 maxScale * 1.2 speed 缩放拖拽速度,与用户操作成正比 1.0 inertialSpeed if gesture exceeded the maxScale specified if (_gestureDetails.totalScale > _gestureConfig.maxScale ) { final double velocity = (_gestureDetails.totalScale - _gestureConfig.maxScale) / , _gestureConfig.maxScale, velocity); return; } //animate back to minScale if gesture
public class PinchZoom : MonoBehaviour { private float scale_factor= 0.07f; private float MAXSCALE if(touchDelta>0) { if(parentObject.transform.localScale.x < MAXSCALE && parentObject.transform.localScale.y < MAXSCALE) { Vector3 scale MAXSCALE : scale.x; scale.y = (scale.y > MAXSCALE) ? MAXSCALE : scale.y; scaleFromPosition(scale,midPoint); }
= maxSize.Width / width; var maxHeightScale = maxSize.Height / height; var maxScale = Math.Min(maxWidthScale, maxHeightScale); 现在获取了 minScale 和 maxScale 需要根据这两个缩放计算最小的缩放 var scale = Math.Min(minScale, maxScale); 为了让图片显示更锐利,这里让缩放是整数,使用整数可能略大于最大的宽度和高度 scale = Math.Ceiling = maxSize.Width / width; var maxHeightScale = maxSize.Height / height; var maxScale heightScale); minScale = Math.Max(minScale, 1.0); var scale = Math.Min(minScale, maxScale
35.30335092712114 }, "layers" : [ { "defaultVisibility" : true, "id" : 0, "maxScale subLayerIds" : null }, { "defaultVisibility" : true, "id" : 1, "maxScale subLayerIds" : null }, { "defaultVisibility" : true, "id" : 2, "maxScale : "Layers", "maxImageHeight" : 2048, "maxImageWidth" : 2048, "maxRecordCount" : 1000, "maxScale
adjusted soul, from 0.0 to 1.0, with a default of 0.5 public var soul: Float = 0.5 public var maxScale return .compute(kernel: "C7SoulOut") } public var factors: [Float] { return [soul, maxScale , maxAlpha] } public init() { } } 此过滤器需要三个参数: soul:调整后的灵魂,从 0.0 到 1.0,默认为 0.5 maxScale: float(grid.y) / outputTexture.get_height(); const half soul = half(*soulPointer); const half maxScale *maxAlphaPointer); const half alpha = maxAlpha * (1.0h - soul); const half scale = 1.0h + (maxScale