真实客户数据库优化及数据库读写分离实施方案

举报
架构师聊技术 发表于 2021/12/28 09:44:19 2021/12/28
【摘要】 随着监控系统的不间断运行,数据库中数据量也随之增加,数据库出现查询缓慢、锁等待情况,因此需要对数据库进行优化,提高数据库性能,加快查询速度。

版本

操作

描述

人员

时间

V1.0

新增

文档编写

郭佳明

2021/12/15

V2.0

新增

文档优化

陈壹

2021/12/20

V2.5

完善

文档完善

刘志虎

2021/12/27

技术方案

1. 关闭AHI

通过对数据库存储引擎信息的查询,发现Innodb等待次数非常高

真实客户数据库优化及数据库读写分离实施方案


注:第一列是引擎名称 第二类是索类型加代码文件行数 第三个是等待次数

通过翻看mysql 源码(5.7.33):\storage\innobase\btr\btr0sea.cc,发现是跟自适应哈希索引(Adaptive Hash Index,AHI)相关的函数

随后翻阅官方文档,官方文档提到这在高负载工作的情况下,可能是一个争用点。

结合上金所这边的实际情况,需要将AHI进行关闭。


2. 读写分离

  • 从目前的数据量上,SQL本身已经很难进行优化,通过对慢Sql日志分析,发现慢Sql中针对历史数据的查询都是Range级别
真实客户数据库优化及数据库读写分离实施方案


  • 索引情况如下:
真实客户数据库优化及数据库读写分离实施方案


  • 字段如下:
真实客户数据库优化及数据库读写分离实施方案


  • 注:其中ns字段是微秒时间,可以忽略。综合来说:表已经物尽其用,其本身很难有改进的空间,因此需要进行数据库读写分离,提高数据库性能。
  • 读写分离流程
真实客户数据库优化及数据库读写分离实施方案


实施步骤

1. 关闭AHI步骤

  1. 7.211.2.12,7.211.2.13登录数据库:
Mysql -uroot -pp@ssw0rd
  1. 执行以下Sql命令:
set global innodb_adaptive_hash_index=off

2. 读写分离步骤

  1. 登陆7.211.2.14,7.211.2.15

用户:sysmon

  1. 进入db.php所在目录,这里有两个目录分别存放了db.php文件所有都要更改:
cd /cmp/nginx/html/lwjk_v3/config
mv db.php db.php.bf   //备份
cd /cmp/nginx/html/lwjk_v3/local
mv db.php db.php.bf.   //备份
  1. 替换db.php文件更新内容,添加了读写分离的配置
cd /cmp/nginx/html/lwjk_v3/config
rz db.php       //上传新db.php文件
ll  //查看权限,如果权限和老的db.php文件不相同需更改权限与授权组和授权主
cd /cmp/nginx/html/lwjk_v3/local
rz db.php       //上传新db.php文件
ll  //查看权限,如果权限和老的db.php文件不相同需更改权限与授权组和授权主

注:上述的配置指定了主从的相关设置。 从库将被用来执行读操作,而主库将被用来执行写操作,这样读写分离将通过上述配置自动地完成。

3 版本回退

  1. 7.211.2.12,7.211.2.13登录数据库:
 mysql -uroot -pp@ssw0rd 
  1. 执行以下sql命令,开启AHI:
set global innodb_adaptive_hash_index=no
  1. 登陆web主机,恢复db.php文件

用户:sysmon

ip:7.211.2.14,7.211.2.15

  1. 恢复config和local目录下的db.php文件:
cd /cmp/nginx/html/lwjk_3/config
rm -f db.php   //删除更改的db.php文件
mv db.php.bf db.php  //恢复原有db.php文件
cd /cmp/nginx/html/lwjk_v3/local
rm -f db.php   //删除更改的db.php文件
mv db.php.bf db.php  //恢复原有db.php文件
  • 由于客户哪边数据量大的表主要是监控系统,监控平台是客户购买的第三方监控系统,监控服务商说可以通过配置实现,但这个方式在非不得已的情况下不建议使用,推荐使用通过中间件的方式,对业务层透明,业务实现不考虑底层的数据存储。


喜欢的朋友记得给个关注~

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。