一次系统升级的过程

【问题背景】公司的一个销售系统运行了有5年的时间了,最近需要对该系统升级,其中有个问题一直导致整个升级过程一直停滞;升级的过程中,需要对一个表做添加字段的操作,直接运行alter语句进行操作,需要消耗大概8个小时,由于操作的过程中会进行锁表的操作,但是业务允许的停机操作只有4个小时;经过了一系列的测试终于完成了系统的更新,以下是更新过程中的一些经验。

 

【1】环境说明:

数据库版本:5.5.36

数据库架构:主从架构

数据库引擎:innodb

需要修改的表大小:300W行,大小4GB

 

计算表占用的空间,方法如下

 

 

alter  table add column的原理:整个过程跟oracle的在线重定义表很像,首先创建一个临时表,再把数据从源表一条条insert到这个临时表中,当所有的数据都insert完成后,再把运来的表drop掉,把临时表rename成源表;

  • 整个过程会对源表进行加锁的操作,避免这个过程被锁定;
  • 临时表会写到数据库的tmp空间里,当这部分的空间不足时,再写入到磁盘中;

 

知道了我们要处理的对象和整个操作的原理之后,初步的优化如下:

1、参数的调优

修改参数tmp_table_size和max_heap_table_size的值

mysql>  show variables like '%tmp%';
+-------------------+----------+
| Variable_name     | Value    |
+-------------------+----------+
| max_tmp_tables    | 32       |
| slave_load_tmpdir | /tmp     |
| tmp_table_size    | 16777216 |
| tmpdir            | /tmp     |
+-------------------+----------+
4 rows in set (0.00 sec)

max_tmp_tables 默认值为32M

tmp_table_size默认值为16M

 

调整后的参数为

max_tmp_tables 值为256M

tmp_table_size值为128M

 

调整结果:经过调整后,整个过程的更新速度提升了30%;

 

2、使用pt-online-schema-change工具

通过上面的优化后,还是不能达到要求,万能的谷歌告诉我,这个mysql在线增加字段其实很多大的互联网公司都会碰到的,Percona公司早就为这种业务场景提供了相应的解决方法:使用pt-online-schema-change进行添加字段,这种方法跟oracle的在线重定义表很像。这样再进行增加列的同时,不会影响当前业务的插入操作;

 

详细的操作如下:

2.1 pt-online-schema-change的下载,通过下载percona-toolkit软件即可,软件的下载方法已经介绍过,麻烦找下本博客的连接;

2.2 设置可以直接运行命令,在/usr/local/percona-toolkit/bin目录下运行, ln pt-table-checksum    /usr/bin/pt-table-checksum

 

2.3 使用方法,

pt-online-schema-change的执行分成试运行和执行两个步骤

  • 试运行
pt-online-schema-change --alter "ADD org_id INT(11) NULL DEFAULT 0 COMMENT '组织ID' " D='pos',t='record_detail' -uroot -p123456 --dry-run

 

 

  • 执行
pt-online-schema-change --alter "ADD org_id INT(11) NULL DEFAULT 0 COMMENT '组织ID' " D='retail',t='record_detail' -uroot -p123456 –execute

 

【2】经过以上操作,在两个夜深人静的晚上,顺利的完成了系统的升级;有时候我们遇到的很多问题,其实网上都有了很好的解决方法,学以致用,感谢网友们的智慧;

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

本文作者:JOHN,某上市公司DBA,业余时间专注于数据库的技术管理,从管理的角度去运用技术。

技术博客:猎人笔记                                                数据库技术群:367875324 (请备注数据库类型)

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/12679300/viewspace-1806414/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/12679300/viewspace-1806414/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Gateway系统是一个典型的网络架构,它负责整个网络的流量传递和安全保障。然而,在实际应用过程中,Gateway系统常常会存在性能问题,需要进行调优来提升系统的响应速度和处理能力。下面介绍一次Gateway系统调优案例。 1. 问题描述 客户的Gateway系统经常出现延迟高和网络拥塞等问题,严重影响了用户体验。经过初步分析,发现问题主要集中在系统内部的负载均衡和安全认证模块 2. 解决方案 针对以上问题,我们提出以下调优方案: (1)优化负载均衡策略:通过优化DNS解析和后端服务器的配置,提升负载均衡的效率,避免某些机器过载而导致整个系统出现延迟或拥塞。 (2)升级SSL证书:为了提高安全性,原先的SSL证书采用了较为低端的算法,导致SSL握手速度较慢。我们建议客户升级证书,采用更加安全和高效的算法。 (3)优化防火墙规则:原有的防火墙规则较为冗余和复杂,导致了安全认证时的延迟。我们建议客户对规则进行简化和优化,提高检查效率,并将协议和服务端口进行明确的配置。 (4)引入缓存机制:针对大量的重复请求,我们建议客户引入缓存机制,以减少请求的次数和响应时间。 3. 成果与评价 经过上述调优方案的实施,客户的Gateway系统的性能得到了明显提升,延迟和拥塞等问题得到了解决,用户体验得到了极大的改善。同时,我们还给客户提供了后续的技术支持和维护服务,确保系统的稳定和高效运行。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值