一 常用命令
   //实时加载
   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系列 ~ 运维相关的更多相关文章

  1. Open edX 学习、开发、运维相关链接整理

    原文地址:http://edustack.org/ 所需知识: Linux Git Python (Django Mako coffeescript sass) (MongoDB Mysql) Ans ...

  2. redis运维相关(基本数据库命令)【十四】

    -----------------------------运维相关------------------------- redis持久化,两种方式1.rdb快照方式2.aof日志方式 --------- ...

  3. Linux系统运维相关的面试题 (问答题)

    这里给大家整理了一些Linux系统运维相关的面试题,有些问题没有标准答案,希望要去参加Linux运维面试的朋友,可以先思考下这些问题.   一.Linux操作系统知识 1.常见的Linux发行版本都有 ...

  4. Linux运维相关目录

  5. 转载---linux运维相关

    前段时间,我在准备面试的时搜到的一套Linux运维工程师面试题,感觉比较全面,一直保存在草稿,刚在整理后台时翻了出来,干脆就发出来好了,以备不时之需. 1.linux如何挂在windows下的共享目录 ...

  6. Linux网络运维相关

    删除特殊的用户和用户组 userdel games group games   关闭不需要的服务 chkconfig chkconfig --level 345 bluetooth off   删减系 ...

  7. redis运维相关

    一.redis都有哪些数据类型?分别在哪些场景下使用比较合适?二.redis双写不一致三.雪崩和穿透四.redis的过期策略,LRU五.redis是如何实现高性能高并发六.如何保证Redis的高并发和 ...

  8. mysql运维相关

    1.为什么要分库分表(设计高并发系统的时候,数据库层面该如何设计)?用过哪些分库分表中间件?不同的分库分表中间件都有什么优点和缺点?2.现在有一个未分库分表的系统,未来要分库分表,如何设计才可以让系统 ...

  9. Centos7.5部署MySQL5.7基于GTID主从复制+并行复制+半同步复制+读写分离(ProxySQL) 环境- 运维笔记 (完整版)

    之前已经详细介绍了Mysql基于GTID主从复制的概念,原理和配置,下面整体记录下MySQL5.7基于GTID主从复制+并行复制+增强半同步复制+读写分离环境的实现过程,以便加深对mysql新特性GT ...

随机推荐

  1. CSAPP:第十章 系统级I/O

    CSAPP:第十章 系统级I/O 10.1 unix I/O10.2 文件10.3 读取文件元数据10.4 读取目录内容10.5 共享文件10.6 我们该使用哪些I/O函数? 10.1 unix I/ ...

  2. day22 面向对象

    面向对象 ''''1.面向过程编程   核心是"过程"二字,过程指的是解决问题的步骤,即先干什么再干什么   基于该思想编写程序就好比在编写一条流水线,是一种机械式的思维方式​   ...

  3. Activiti开发案例之代码生成工作流图片

    图例 环境 软件 版本 SpringBoot 1.5.10 activiti-spring-boot-starter-basic 6.0 生成代码 以下是简化代码: /** * 查看实例流程图,根据流 ...

  4. Friendly Date Ranges 让日期区间更友好

    把常见的日期格式如:YYYY-MM-DD 转换成一种更易读的格式. 易读格式应该是用月份名称代替月份数字,用序数词代替数字来表示天 (1st 代替 1). 记住不要显示那些可以被推测出来的信息: 如果 ...

  5. C#-之属性(1)

    1. 属性定义方式与字段类似,但还包括Set和Get两个访问器,其格式如下: public/private <type> Name { get { return variable:    ...

  6. Spring 框架中注释驱动的事件监听器详解

    事件交互已经成为很多应用程序不可或缺的一部分,Spring框架提供了一个完整的基础设施来处理瞬时事件.下面我们来看看Spring 4.2框架中基于注释驱动的事件监听器. 1.早期的方式 在早期,组件要 ...

  7. python读取导出数据

    1,python读取csv的某一列 import pandas as pd data1 = pd.read_csv('cotton.csv', usecols=[0, 1], encoding='ut ...

  8. Educational Codeforces Round 63 (Rated for Div. 2) B. Game with Telephone Numbers 博弈思维+模拟+贪心思维

    题意:博弈题面  给出一个数字序列 (>=11)  有两个人任意删除数字 直到 数字只剩下11位 如果删除后的数字串开头是8那么就是第一个赢 否则就是第二个人赢 第一个人先手  数字序列一定是奇 ...

  9. MAVEN打包同时引入本地jar包

    方法一(pom文件指定jar包目录进行引入) 1.将需要手动引入的包放在项目目录下,如lib目录下: 修改pom文件,引入依赖并且将scope设置为system 2.同时配置maven打包插件 方法二 ...

  10. PHP 面向切面编程

    面向切面编程介绍: 介绍: AOP(Aspect-Oriented Programming,面向方面编程),可以说是OOP(Object-Oriented Programing,面向对象编程)的补充和 ...