-
MySQL中间件之ProxySQL(9):ProxySQL的查询缓存功能
ProxySQL支持查询缓存的功能,可以将后端返回的结果集缓存在自己的内存中,在某查询的缓存条目被清理(例如过期)之前,前端再发起同样的查询语句,将直接从缓存中取数据并返回给前端。如此一来,ProxySQL处理的性能会大幅提升,也会大幅减轻后端MySQL Server的压力。 1.开启query cache功能 ProxySQL的查询缓存功能由mysql_query_rules表中的cache_ttl字段控制,该字段设置每个规则对应的缓存时长,时间单位为毫秒。 当前端发送的SQL语句命中了某规则后(严格地说,是最后应用的那条规则,因为链式规则下会操作多个规则),如果这个规则同时还设置了"cache_ttl"字段的值,则这个SQL语句返回的结果将会被缓存一定时间,过期后将等待专门的线程(purge线程)来清理。 例如: delete from mysql_query_rules; select * from stats_mysql_query_digest_reset where 1=0; insert into mysql_query_rules(rule_id,active,apply,destination_hostgroup,match_pattern,cache_ttl) values(1,1,1,10,"^select .* test1.t1",20000); load mysql query rules to runtime; save mysql query rules to disk; select rule_id,destination_hostgroup,match_pattern,cache_ttl from mysql_query_rules; 这表示匹配上述规则(查询test1.t1表)的查询结果集将在ProxySQL上缓存20秒。 可以执行下面的语句进行测试,每个语句循环执行10次: # 在bash下执行 proc="mysql -uroot -pP@ssword1! -h127.0.0.1 -P6033 -e" for ((i=0;i<10;i++));do $proc "select * from test1.t1;" $proc "select * from test1.t2;" $proc "select * from test2.t1;" $proc "select * from test2.t2;" done 再去查看规则统计表: Admin> select * from stats_mysql_query_rules; +---------+------+ | rule_id | ……
SE_You 2024-03-2520 0 0 -
linux系统无法正常启动的解决方法
一.root密码忘记的解决方法 1.开机后在系统选择页面按e,找到以linux16为开头的那一行,删除ro后面的内容,并将ro改为rw rd.break 同时按下ctrl+x进入拯救模式 2.在命令界面输入 chroot /sysroot/ ##从内核模式切换到shell模式 echo westos | passwd --stdin root ##设置密码为westos touch /.autorelabel ##建立密码认证文件 3.root密码更改完成,重新启动即可 二.硬盘引导阶段丢失 1.模拟问题 MBR主引导记录丢失 dd if=/dev/zero of=/dev/vda bs=446 count=1 ##破坏MBR,/dev/vda是本机所在的/boot区 1 2.解决方法如下: 若是真实主机,则需要插入镜像光驱,并从光驱启动 :若是虚拟机,则添加虚拟光驱,从光驱启动 以下为在虚拟机中的操作过程: 启动虚拟机后进入挽救模式 按1 表示继续进行下一步,会出现命令行 出现命令行后输入: chroot /mnt/sysimage ##切换到真实根目录 grub-install /dev/vda ##/dev/vda与模拟问题所截的/boot的所在位置一致 force off 虚拟机,然后改从磁盘启动,系统恢复正常 三.文件引导阶段的问题 模拟问题:引导文件丢失 (1)引导文件所在路径: /boot/grub2/grub.cfg (2)查看根目录所在的分区和内核版本 查看根目录所在分区: 查看内核版本: (3)模拟问题: rm -rf /boot/grub2/grub.cfg ##删除引导文件 reboot ##重启系统 解决方法 在命令行输入: set root='hd0,msdos1' linux 16 /vmlinuz-3.10.0-514.el7.x86_64 ro root=/dev/mapper/rhel-root ##内核版本制定本机的,位置指定根目录所在分区 initrd16 /initramfs-3.10-514.el7.x86_64.img ##内核版本指定本机的 注:以上步骤只是临时更改,下次开机会有同样的错误,所以需要进入系统后恢复引导文件 grub2-mkconfig > /boot/grub2/grub.cfg ##恢复开机引导文件 模拟问题:内核文件丢失 (1)内核文件: /boot/vmlinuz-3.10.0-514.el7.x86_64 (2)模拟问题:……
SE_You 2024-03-2425 0 0 -
MySQL中间件之ProxySQL(8):SQL语句的重写规则
1.为什么要重写SQL语句 ProxySQL在收到前端发送来的SQL语句后,可以根据已定制的规则去匹配它,匹配到了还可以去重写这个语句,然后再路由到后端去。 什么时候需要重写SQL语句? 对于下面这种简单的读、写分离,当然用不上重写SQL语句。 这样的读写分离,实现起来非常简单。如下: mysql_replication_hostgroups: +------------------+------------------+----------+ | writer_hostgroup | reader_hostgroup | comment | +------------------+------------------+----------+ | 10 | 20 | cluster1 | +------------------+------------------+----------+ mysql_servers: +--------------+----------+------+--------+--------+ | hostgroup_id | hostname | port | status | weight | +--------------+----------+------+--------+--------+ | 10 | master | 3306 | ONLINE | 1 | | 20 | slave1 | 3306 | ONLINE | 1 | | 20 | slave2 | 3306 | ONLINE | 1 | +--------------+----------+------+--------+--------+ mysql_query_rules: +---------+-----------------------+----------------------+ | rule_id | destination_hostgroup | match_digest | +---------+-----------------------+----------------------+ | 1 | 10 | ^SELECT.*FOR UPDATE$ | | 2 | 20 | ^SELECT | +---------+-----------------------+----------------------+ 但是,复杂一点的,例如ProxySQL实现sharding功能。对db1库的select_1语句路由给hg=10的组,将db2库的select_2语句路由给hg=20的组,将db3库的select_3语句路由给hg=30的组。 ……
SE_You 2024-03-2224 0 0 -
5885v3 配置NVIDIA NVS315显卡在BIOS自检阶段无显示
目录 问题描述处理过程根因解决方案 问题描述 1.1 问题现象描述 硬件配置: RH5885v3服务器,配置1张NVS315。 配置NVS315后插独立显卡,并外接显示器;启动服务器进入BIOS,将Active Video设置成Offboard Device,如图1-1所示; 图1-1 BIOS界面设置 远程KVM提示如图1-2所示;此时已提示显示已切换至NVS315独显输出,但是外接显示器一直黑屏,待进OS后,显示正常。 处理过程 关键过程、根本原因分析 问题定位解决步骤如下: 1) 检查NVS315显卡现场所安装的位置:直接安装在主板PCIE Slot1槽位; 2) 经确认,查询兼容性列表,独立显卡只能安装在RISER卡 PCIE Slot5槽位(因为该卡为PCIE 2.0 X16显卡,而主板上Slot 1槽位虽物理上是X16接插件,但实际确只有X8链路信号); 3) 将显卡更换正确位置后,重启,发现故障现象仍存在; 4) 获取现场服务器软件版本信息,发现不是最新BIOS版本,经与一线及客户会议达成一致后,客户同意升级BIOS版本;BIOS版本升级后,再配置Active Video设置成Offboard Device;故障消除。 根因 根本原因分析: 故障服务器版本中:AMI HSW代码没有打开64为资源的GPU显示;升级新版本后,新BIOS中打开CSM_VGA_64BITBAR_WORKAROUND开关; 解决方案 结论 老版本BIOS中AMI HSW代码没有打开64为资源的GPU显示; 解决方案 升级BIOS至新版本(V628及以后版本)后,即可正常显示。 1.1 5. 经验总结、预防措施和规范建议 1) 此类问题首先确认硬件上安装位置是否正确,并确认该卡是否在服务器兼容性列表上,有何限制条件等; 2) 其次确认服务器软件版本是否为最新在网版本;(如果是最新版本仍有问题,可以在客户同意前提下,尝试重新再升级一次,因为有的客户会改BIOS一些设置); 规范建议: 在此问题处理过程中,发现一线安装不规范,未按照……
SE_You 2024-03-226 0 0 -
centos7 下创建LVM流程
简单介绍 LVM相关概念介绍请自行Google,这里仅给出简单的介绍: 基本的逻辑卷管理概念: PV(Physical Volume)- 物理卷 物理卷在逻辑卷管理中处于最底层,它可以是实际物理硬盘上的分区,也可以是整个物理硬盘,也可以是raid设备。 VG(Volumne Group)- 卷组 卷组建立在物理卷之上,一个卷组中至少要包括一个物理卷,在卷组建立之后可动态添加物理卷到卷组中。一个逻辑卷管理系统工程中可以只有一个卷组,也可以拥有多个卷组。 LV(Logical Volume)- 逻辑卷 逻辑卷建立在卷组之上,卷组中的未分配空间可以用于建立新的逻辑卷,逻辑卷建立后可以动态地扩展和缩小空间。系统中的多个逻辑卷可以属于同一个卷组,也可以属于不同的多个卷组。 PE(Physical Extent)- 物理块 LVM 默认使用4MB的PE区块,而LVM的LV最多仅能含有65534个PE (lvm1 的格式),因此默认的LVM的LV最大容量为4M*65534/(1024M/G)=256G。PE是整个LVM 最小的储存区块,也就是说,其实我们的资料都是由写入PE 来处理的。简单的说,这个PE 就有点像文件系统里面的block 大小。所以调整PE 会影响到LVM 的最大容量!不过,在 CentOS 6.x 以后,由于直接使用 lvm2 的各项格式功能,因此这个限制已经不存在了。 一、创建系统分区 选择/dev/sdb创建分区; 将整个sdb磁盘划分为一个sdb1分区,格式为Linux LVM; 由于显示信息过长,这里省略了部分不重要的显示信息。 # fdisk /dev/sdb Command (m for help): n (创建新分区) Partition type: p primary (0 primary, 0 extended, 4 free) e extended Select (default p): p (选择创建主分区) Partition number (1-4, default 1): 1 (分区号选择1) First sector (2048-31457279, default 2048): Using default value 2048 Last sector, +sectors or +size{K,M,G} (2048-31……
SE_You 2024-03-2212 0 0 -
MySQL中间件之ProxySQL(7):详述ProxySQL的路由规则
1.关于ProxySQL路由的简述 当ProxySQL收到前端app发送的SQL语句后,它需要将这个SQL语句(或者重写后的SQL语句)发送给后端的MySQL Server,然后收到SQL语句的MySQL Server执行查询,并将查询结果返回给ProxySQL,再由ProxySQL将结果返回给客户端(如果设置了查询缓存,则先缓存查询结果)。 ProxySQL可以实现多种方式的路由:基于ip/port、username、schema、SQL语句。其中基于SQL语句的路由是按照规则进行匹配的,匹配方式有hash高效匹配、正则匹配,还支持更复杂的链式规则匹配。 本文将简单演示基于端口、用户和schema的路由,然后再详细介绍基于SQL语句的路由规则。不过需要说明的是,本文只是入门,为后面ProxySQL的高级路由方法做铺垫。 在阅读本文之前,请确保: 已经理解ProxySQL的多层配置系统,可参考:ProxySQL的多层配置系统 会操作ProxySQL的Admin管理接口,可参考:ProxySQL的Admin管理接口 已经配置好了后端节点、mysql_users等。可参考:ProxySQL管理后端节点 如果想速成,可参考;ProxySQL初试读写分离 本文涉及到的实验环境如下: 角色 主机IP server_id 数据状态 Proxysql 192.168.100.21 null 无 Master 192.168.100.22 110 刚安装的全新MySQL实例 Slave1 192.168.100.23 120 刚安装的全新MySQL实例 Slave2 192.168.100.24 130 刚安装的全新MySQL实例 该实验环境已经在前面的文章中搭建好,本文不再赘述一大堆的内容。环境的搭建请参考前面给出的1、2、3。 2.ProxySQL基于端口的路由 我前面写了一篇通过MySQL Router实现MySQL读写分离的文章,MySQL Router实现读写分离的方式就是通过监听不同端口实现的:一个端口负责读操作,一个端口负责写操作。这样的路由逻辑非常简单,配置起来也很方便。 虽然基于端口实现读写分离配置起来非常简单,但是缺点也很明显:必须在前端ap……
SE_You 2024-03-2173 0 0 -
MySQL中间件之ProxySQL(6):管理后端节点
1.配置后端节点前的说明 为了让ProxySQL能够找到后端的MySQL节点,需要将后端的MySQL Server加入到ProxySQL中。ProxySQL的一切配置行为都是在修改main库中的对应的表,所以添加节点到ProxySQL中实际上也是通过修改相关表来实现的。 管理后端节点有几个过程: 将后端MySQL Server的主从复制结构配置好。 将后端MySQL Server节点加入到ProxySQL中。相关的表为mysql_servers。 监控后端节点。相关的表是全局变量表global_vairbles,相关的变量为mysql-monitor_开头的变量。 配置读、写组。相关的表为mysql_replication_hostgroups。 配置MySQL用户,用于发送SQL语句。相关的表为mysql_users。 几个注意点: (1).ProxySQL是通过监控后端节点的read_only值来自动调整节点所属组的,例如read_only=1的节点会移动到读组,read_only=0的节点会移动到写组。所以,在配置读、写组之前,需要先监控后端节点。ProxySQL也支持手动管理后端节点,这种模式不会根据read_only的值自动调整,在后面的文章中会介绍这种模式。 (2).对于传统的主从复制,默认的read_only=0,所以在第一步中,各slave节点的配置文件中需要加上read_only=1。对于组复制、Galera,因为会自动强制设置非写节点的read_only=1,所以无需额外配置该属性。 (3).ProxySQL支持传统主从复制结构(即异步、半同步、gtid复制)的后端,读、写组相关的表是mysql_replication_hostgroups。还支持MySQL组复制结构的后端,相关的表是mysql_group_replication_hostgroups,还支持Galera(如percona XtraDB cluster)结构的后端,不过ProxySQL是通过scheduler调度proxysql_galera_checker.sh脚本来支持Galera的,而且目前还没有mysql_galera_hostgroups(ProxySQL 2.0才新增该表)。 本文暂时只解释mysql_servers和mysql_replication_hostgroups,组复制相关的表在在后面介……
SE_You 2024-03-2066 0 0 -
MySQL中间件之ProxySQL(5):线程、线程池、连接池
1.ProxySQL的线程 ProxySQL由多个模块组成,是一个多线程的daemon类程序。每个模块都有一个或多个线程去执行任务。 例如,以下是刚启动ProxySQL时的进程情况,一个main进程,一个主线程,21个线程。 [root@s1 ~]# pstree | grep proxy |-proxysql---proxysql---21*[{proxysql}] 下面是正常运行时使用的线程列表: 1.1 Main thread 这其实是一个进程,该进程只负责引导、启动核心模块以及启动其它核心线程。 1.2 Admin thread 该线程负责以下几件事: 初始化并引导启动Admin接口。 从磁盘数据库或配置文件中加载配置,为ProxySQL的运行提供环境。 启动一个监听者,让其负责监听并接受到Admin接口的新连接,并为每个这样的连接创建一个新线程。 所以,每连接一次admin接口,就会新生成一个线程。每次退出admin接口时,减去一个线程。 1.3 MySQL workers mysql-threads线程负责处理MySQL流量,包括所有来自客户端的连接以及所有到后端服务器节点的连接。也就是:用少量线程处理任意多数量的连接。 MySQL workers线程在相同的端口上进行监听。当新客户端发起连接请求,其中一个MySQL worker线程将成功接受该连接,并创建一个MySQL会话(session):客户端和会话绑定在该worker线程上,直到连接断开。换句话说,在断开连接之前,某客户端的所有连接总是被同一个worker线程处理。 默认情况下,MySQL worker的线程数量为4。 mysql> select @@mysql-threads; +-----------------+ | @@mysql-threads | +-----------------+ | 4 | +-----------------+ mysql-threads变量修改后,必须重启ProxySQL才能生效,这是少有的需要重启的变量之一(另一个是mysql-stacksize)。例如,修改为8个mysql worker线程。 set mysql-threads=8; save mysql variables to disk; select * from ru……
SE_You 2024-03-1932 0 0 -
MySQL中间件之ProxySQL(4):多层配置系统
1.ProxySQL中的库 使用ProxySQL的Admin管理接口连上ProxySQL,可查看ProxySQL拥有的库。 mysql -uadmin -padmin -h127.0.0.1 -P6032 --prompt 'admin> ' admin> show databases; +-----+---------------+-------------------------------------+ | seq | name | file | +-----+---------------+-------------------------------------+ | 0 | main | | | 2 | disk | /var/lib/proxysql/proxysql.db | | 3 | stats | | | 4 | monitor | | | 5 | stats_history | /var/lib/proxysql/proxysql_stats.db | +-----+---------------+-------------------------------------+ 其中: main库是ProxySQL最主要的库,是需要修改配置时使用的库,它其实是一个内存数据库系统。所以,修改main库中的配置后,必须将其持久化到disk上才能永久保存。 disk库是磁盘数据库,该数据库结构和内存数据库完全一致。当持久化内存数据库中的配置时,其实就是写入到disk库中。磁盘数据库的默认路径为$DATADIR/proxysql.db。 stats库是统计信息库。这个库中的数据一般是在检索其内数据时临时填充的,它保存在内存中。因为没有相关的配置项,所以无需持久化。 monitor库是监控后端MySQL节点相关的库,该库中只有几个log类的表,监控模块收集到的监控信息全都存放到对应的log表中。 stats_history库是1.4.4版新增的库,用于存放历史统计数据。默认路径为$DATADIR/proxysql_stats.db。 ProxySQL内部使用的是SQLite3数据库,无论是内存数据库还是磁盘数据库,都是通过SQLite3引擎进行解析、操作的。它和MySQL……
SE_You 2024-03-1817 0 0 -
MySQL中间件之ProxySQL(3):Admin管理接口
1.ProxySQL的Admin管理接口 当ProxySQL启动后,将监听两个端口: (1).admin管理接口,默认端口为6032。该端口用于查看、配置ProxySQL。 (2).接收SQL语句的接口,默认端口为6033,这个接口类似于MySQL的3306端口。 ProxySQL的admin管理接口是一个使用MySQL协议的接口,所以,可以直接使用mysql客户端、navicat等工具去连接这个管理接口。 例如,使用mysql客户端去连接ProxySQL的管理接口。下面使用的是管理接口的默认用户名和密码admin:admin。 mysql -uadmin -padmin -h127.0.0.1 -P6032 --prompt 'admin> ' mysql: [Warning] Using a password on the command line interface can be insecure. Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 30 Server version: 5.5.30 (ProxySQL Admin Module) Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. admin> 由于ProxySQL的配置全部保存在几个自带的库中,所以通过管理接口,可以非常方便地通过发送一些SQL命令去修改ProxySQL的配置。ProxySQL会解析通过该接口发送的某些对ProxySQL有效的特定命令,并将其合理转换后发送给内嵌的SQLite3数据库引擎去运行。 例如,查看库、库中的表。 admin> show databases; +-----+---------------+-------------------------------------+ | seq | name | file | +-----+---------------+-------------------------------------+ | 0 | ma……
SE_You 2024-03-1520 0 0
升级版本
评论于 华为2288h v5 对iBMC上报Nand Flash预留块不足10%告警的说明