proxysql系列 ~ 运维相关
一 常用命令
//实时加载
load mysql servers to runtime; mysql_server
load mysql users to runtime; mysql_users
load mysql variables to runtime; variables
load mysql query rules to runtime; query_rule
//刷新到磁盘
save mysql servers to disk;
save mysql users to disk;
save mysql variables to disk;
save mysql query rules to disk;
二 监控
stats 是proxysql运行抓取的统计信息,包括到后端各命令的执行次数、流量、processlist、查询种类汇总/执行时间,等等。
相关表
1 stats_mysql_connection_pool连接相关
2 stats_mysql_processlist 运行相关
3 stats_mysql_query_digest sql请求比例相关
4 系统监控
5 默认级别内存监控是被禁用的,这里要注意
三 数据备份与恢复
常见于节点的扩容和恢复
sqlite3 sqa.db ".dump [mytabl%]" > sqa.sql
sqlite3 sqb.db < sqa.sql
具体请参考sqlite3的备份恢复
四 相关问题
1 大量查询虽然导向从库,但是返回的数据量太大导致阻塞proxysql代理,导致性能问题甚至导致阻塞.可能场景常见于
1 大数据查询 2 特殊需求需要大批量获取数据等
2 数据库延迟问题导致所有从库打向主库,增大压力
1 DDL大表操作导致延迟
2 大事物导致延迟
解决方法1: DDL操作尽量采用pt-osc操作,然后控制从库延迟参数 2 加大proxysql本身延迟容忍参数(请以实际业务为准) 3 对大事物进行拆分 4 优化慢sql 减少从库IO压力
3 业务进行改造
业务针对主库进行的查询需要添加注释改造业务,后续要养成习惯
4 版本本身BUG导致
比如内存泄漏 无端cacsh等,建议时长对github留言区进行跟踪,最好上线采用全新版本,定期对版本进行升级等
5 是否真的该用proxysql用来代理
这取决于两个原因
1 你的业务是读的比例远远大于写的比例,并且写的压力对于主库已经很大
2 通过测试能保证proxysql读写分离后效率远远高于由于proxysql本身处理所带来的损耗
五 原理相关
1 后端从库延迟检测
通过show slave status 获取 Seconds_Behind_Master,以下情况会发生移除节点
1 和后端的连接断开。
2 slave落后于master过多。
3 和后端建立连接时,错误次数过多。
4 second_behind_master=null时,即slave的SQL线程未运行,或者slave未连接到master。(不过这种自动避开的情况是可控的,见全局变量mysql-monitor_slave_lag_when_null,这个变量值是置换值,设置最好大于能容忍的阈值)
2 连接池复用技术
情况:一个后端DB的连接,可以“同时”被多个客户端使用
改进对比
传统的连接池,会在客户端断开连接(会话)后,把连接放回到池里。
在ProxySQL中,由于连接复用,连接会在 sql语句 执行结束后,便将连接放回到池里(客户端会话可能并没有断开),这样便可大大提高后端连接的使用效率,而避免前段请求过大导致后端连接数疯长。
六 相关架构
1 proxysql本身有性能损耗,可以靠增加多台proxysql进行流量均衡,弥补带来的性能损耗,但是需要维护配置文件的统一
2 proxysql后端监控read_only,配合MHA切换后端mysql,实现高可用.由于proxysql的出现,MHA不必再使用VIP,有效的避免了脑裂的风险
七 参数优化
mysql-monitor_slave_lag_when_null 设置延时参数
mysql-max_allowed_packet 设置数据包大小
mysql-free_connections_pct 保持连接池连接数百分比 X最大连接数/100为保持连接数的连接值
max_connections 最大连接数,不要大于后端数据库的相对应值
表级别
mysql.server-> transaction_persisnt(1) 保证事务内查询路由到主库
proxysql系列 ~ 运维相关的更多相关文章
- Open edX 学习、开发、运维相关链接整理
原文地址:http://edustack.org/ 所需知识: Linux Git Python (Django Mako coffeescript sass) (MongoDB Mysql) Ans ...
- redis运维相关(基本数据库命令)【十四】
-----------------------------运维相关------------------------- redis持久化,两种方式1.rdb快照方式2.aof日志方式 --------- ...
- Linux系统运维相关的面试题 (问答题)
这里给大家整理了一些Linux系统运维相关的面试题,有些问题没有标准答案,希望要去参加Linux运维面试的朋友,可以先思考下这些问题. 一.Linux操作系统知识 1.常见的Linux发行版本都有 ...
- Linux运维相关目录
- 转载---linux运维相关
前段时间,我在准备面试的时搜到的一套Linux运维工程师面试题,感觉比较全面,一直保存在草稿,刚在整理后台时翻了出来,干脆就发出来好了,以备不时之需. 1.linux如何挂在windows下的共享目录 ...
- Linux网络运维相关
删除特殊的用户和用户组 userdel games group games 关闭不需要的服务 chkconfig chkconfig --level 345 bluetooth off 删减系 ...
- redis运维相关
一.redis都有哪些数据类型?分别在哪些场景下使用比较合适?二.redis双写不一致三.雪崩和穿透四.redis的过期策略,LRU五.redis是如何实现高性能高并发六.如何保证Redis的高并发和 ...
- mysql运维相关
1.为什么要分库分表(设计高并发系统的时候,数据库层面该如何设计)?用过哪些分库分表中间件?不同的分库分表中间件都有什么优点和缺点?2.现在有一个未分库分表的系统,未来要分库分表,如何设计才可以让系统 ...
- Centos7.5部署MySQL5.7基于GTID主从复制+并行复制+半同步复制+读写分离(ProxySQL) 环境- 运维笔记 (完整版)
之前已经详细介绍了Mysql基于GTID主从复制的概念,原理和配置,下面整体记录下MySQL5.7基于GTID主从复制+并行复制+增强半同步复制+读写分离环境的实现过程,以便加深对mysql新特性GT ...
随机推荐
- day 24 面向对象之继承及属性查找顺序
组合 组合:自定义类的对象作为另外一个类的属性 class Teacher: def init(self, name, age): self.name = name self.age = age t1 ...
- nginx配置文件详细解读
https://m.w3cschool.cn/nginx/nginx-d1aw28wa.html ######Nginx配置文件nginx.conf中文详解##### #定义Nginx运行的用户和用户 ...
- Python:time模块/random模块/os模块/sys模块
time 模块 #常用方法 1.time.sleep(secs) (线程)推迟指定的时间运行.单位为秒. 2.time.time() 获取当前时间戳 python中时间日期格式化符号: %y 两位数的 ...
- Luogu P5283 [十二省联考2019]异或粽子
感觉不是很难的一题,想了0.5h左右(思路歪了,不过想了一个大常数的两只\(\log\)做法233) 然后码+调了1h,除了一个SB的数组开小外基本上也没什么坑点 先讲一个先想到的方法,我们对于这种问 ...
- 人生第一个过万 Star 的 github 项目诞生
写 Spring Boot 开源项目走入第三个年头,终于有一个开源项目要破万 Star 了,请各位读者大人批评指正. Spring Boot 文章 2016年,我开始学习 Spring Boot 的时 ...
- Vue (三) --- Vue 组件开发
------------------------------------------------------------------好心情,会让你峰回路转. 5. 组件化开发 5.1 组件[compo ...
- day08(字符编码,字符与字节,文件操作)
一,复习 ''' 类型转换 1.数字类型:int() | bool() | float() 2.str与int: int('10') | int('-10') | int('0') | float(' ...
- Markdown语法基础
Markdown基本语法 创建 2018-09-07 by YANHAI 标题:Setext方式 三个或更多 大标题 === 小标题 --- 大标题 小标题 标题:Atx方式 # 内容 (一级标题) ...
- sonar 匿名内部类写法不推荐
今天sonar扫出一个问题, 是这样说的. 我觉得有点牵强吧. 有点个人情绪在的样子. 那Java设计这种方式干嘛?
- 2019春招面试高频题(Java版),持续更新(答案来自互联网)
第一模块--并发与多线程 Java多线程方法: 实现Runnable接口, 继承thread类, 使用线程池 操作系统层面的进程与线程(对JAVA多线程和高并发有了解吗?) 计算机资源=存储资源+计算 ...