测试mysqlporformanceblog提供的减少关闭innodb时间的方法 
经常发现一些MySQL镜像库的InnoDB的关闭时间会特别久,mysqlperformanceblog给出了一个不错的解决方案 
How to decrease InnoDB shutdown times http://www.mysqlperformanceblog.com/2009/04/15/how-to-decrease-innodb-shutdown-times/ 
InnoDB关闭的过程解释 
MySQL官方手册介绍 影响到InnoDB关闭的参数有

innodb_fast_shutdown 
如果你把这个参数设置为0,InnoDB在关闭之前做一个完全净化和一个插入缓冲合并。这些操作要花几分钟时间,在极端情况下要几个小时。 
如果你设置这个参数为1,InnoDB在关闭之时跳过这些操作。 默认值为1。 
如果你设置这个值为2 (在Netware无此值), InnoDB将刷新它的日志然后冷关机,仿佛MySQL崩溃一样。已提交的事务不会被丢失,但在下一次启动之时会做一个崩溃恢复。

innodb_max_dirty_pages_pct 
这是一个范围从0到100的整数。默认是90。InnoDB中的主线程试着从缓冲池写页面,使得脏页(没有被写的页面)的百分比不超过这个值。如果你有SUPER权限,这个百分比可以在服务器运行时按下面来改变: 
SET GLOBAL innodb_max_dirty_pages_pct = value;

100423  0:10:18  InnoDB: Starting shutdown… 
100423  0:10:20  InnoDB: Shutdown completed; log sequence number 0 4000976145 
100423  0:10:20 [Note] /usr/sbin/mysqld: Shutdown complete

测试环境 
1.在一个镜像库节点进行测试,innodb_buffer_pool_size=1G 
2.在一个线上节点进行测试,碰巧这个节点要进行机架更换,所以可以趁机测试一把 
innodb_buffer_pool_size=12G,线上环境和镜像环境还是有点不一样,没法让Innodb_buffer_pool_pages_dirty的值少于1000,虽然是大于1000,但关闭起来还是比较快速的

测试过程 
正常关闭的normal-shutdown.sh

#!/bin/bash 
#正常关闭innodb 
log=”normal-shutdown.log” 
start_time=`date` 
echo “start time:”$start_time > $log 
mysqladmin –defaults-file=db-32-1.cnf -uxxx -pxxx  ext  | grep dirty >> $log 
mysqladmin –defaults-file=db-32-1.cnf -uxxx -pxxx shutdown 
end_time=`date` 
echo “end time:” $end_time >> $log 
normal-shutdown.log 输出的日志如下

start time:2010年 06月 18日 星期五 17:21:00 CST 
| Innodb_buffer_pool_pages_dirty    | 43492        | 
end time: 2010年 06月 18日 星期五 17:23:10 CST 
设置set global innodb_max_dirty_pages_pct =0的关闭方式

首先执行 mysql –defaults-file=db-31-2.cnf -uxxx -pxxx -e” set global innodb_max_dirty_pages_pct =0“ 
经过了大概3分钟后 Innodb_buffer_pool_pages_dirty的值少于1000 
然后执行faster-shutdown.sh,生成faster-shutdown.log 
#!/bin/bash 
log=”faster-shutdown.log” 
start_time=`date` 
echo “faster shutdown start time:”$start_time >$log 
mysqladmin –defaults-file=db-32-1.cnf -uxxx -pxxx  ext  | grep dirty >> $log 
mysqladmin –defaults-file=db-32-1.cnf -uxxx -pxxx shutdown 
end_time=`date` 
echo “faster shutdown end time:” $end_time >>$log 
faster-shutdown.log的内容 
faster shutdown start time:2010年 06月 18日 星期五 17:47:08 CST 
| Innodb_buffer_pool_pages_dirty    | 569        | 
faster shutdown end time: 2010年 06月 18日 星期五 17:47:12 CST 
关闭时间比较

正常关闭 快速关闭 
Innodb_buffer_pool_pages_dirty 43492 569 
关闭时间 2分10秒 4秒 
结论 
日常维护中,可以使用set global innodb_max_dirty_pages_pct =0,让Innodb_buffer_pool_pages_dirty 的数值为一个较小的值,这样就可以减少在关闭mysql服务器中耗费在innodb的时间 
最终达到减少影响用户的时间

测试快速关闭innodb的方法的更多相关文章

  1. 基于Python的XSS测试工具XSStrike使用方法

    基于Python的XSS测试工具XSStrike使用方法 简介 XSStrike 是一款用于探测并利用XSS漏洞的脚本 XSStrike目前所提供的产品特性: 对参数进行模糊测试之后构建合适的payl ...

  2. .NET中如何测试Private和Protected方法

    TDD是1)写测试2)写通过这些测试的代码,3)然后重构的实践.在,NET社区中, 这个概念逐渐变得非常流行,这归功于它所增加的质量保证.此时,它很容易测试public方法,但是一个普遍的问题出现了, ...

  3. RegisterUserFunc为测试对象添加新方法或重写已有方法

    QTP中为了提高扩展性,提供了一个为测试对象添加一个新的自定义方法,或者重写测试对象已有的方法的函数RegisterUserFunc,在此给大家分享一下. RegisterUserFunc:为测试对象 ...

  4. Java工作流引擎的测试容器-功能-使用方法-注意事项

    工作流引擎的测试容器-功能-使用方法-注意事项 关键字 Ccbpm, ccflow,jflow,工作流引擎,工作流引擎测试容器,表单引擎 功能说明 工作流的测试容器是为了解决手工模拟人工登录模式下测试 ...

  5. 用tpcc测试对比 innodb 和 tokudb

    测试环境 1台IBM Intel(R) Xeon(R) CPU           E5606  @ 2.13GHz,内存12G cd tpcc/tpcc-mysql/src # make cc lo ...

  6. 【mysql启动Innodb的方法】

    点击此处进入原网页 1.存储引擎是什么? Mysql中的数据用各种不同的技术存储在文件(或者内存)中.这些技术中的每一种技术都使用不同的存储机制.索引技巧.锁定水平并且最终提供广泛的不同的功能和能力. ...

  7. 真机测试INSTALL_FAILED_INSUFFICIENT_STORAGE 的解决方法

    来源:http://blog.csdn.net/aikongmeng/article/details/9793809 INSTALL_FAILED_INSUFFICIENT_STORAGE 的解决方法 ...

  8. LR测试https协议设置方法

    测试ssl隧道的设置方法: 前一段时间使用loadrunner测试ssl vpn时,使用ssl隧道一直配置不成功,经过查资料,终于成功,记录一下,方便大家测试.走ssl隧道与普通http,只需多设两个 ...

  9. PI-利用SoapUI 测试web service的方法介绍

    在运用webservice调用数据的过程中,非常关键的一个步骤就是获取到webservice的地址,并测试webservice的连通情 况,webservice的连通测试主要是两个方面:1,查看web ...

随机推荐

  1. 3.STM32复位系统

    一.概念 复位: 使系统结束当前运行状态,重新开始运行,并根据复位种类,将系统的寄存器(特定的寄存器除外)恢复到默认状态. 二.复位的种类 1.系统复位 将除了系统后备区域寄存器(BKP)和时钟控制寄 ...

  2. kubernetes学习笔记之七: Ingress-nginx 部署使用

    一.Ingress 简介 在Kubernetes中,服务和Pod的IP地址仅可以在集群网络内部使用,对于集群外的应用是不可见的.为了使外部的应用能够访问集群内的服务,在Kubernetes 目前 提供 ...

  3. 转:StarUML3.0的破解方法

    转自:https://blog.csdn.net/sam_shan/article/details/80585240 StarUML3.0的破解方法 最近StarUML由2.0更新到3.0.原来的破解 ...

  4. hadoop的hdfs中的javaAPI操作

    package cn.itcast.bigdata.hdfs; import java.net.URI; import java.util.Iterator; import java.util.Map ...

  5. laravel中消息通知功能

    以laravel5.5为例子,这个功能laravel自带的有: 1.生成表文件的migration文件,再migrate一下在数据库里生成表.命令为:php artisan notifications ...

  6. Django中的class Meta

    元数据 class Meta做为嵌套类,主要目的是给上级类添加一些功能,或者指定一些标准 # 格式化  将返回的结果自定义 def __str__(self) rerurn self.username ...

  7. DOCKER解析(转)

    Docker基本概念详解 本文只是对Docker的概念做了较为详细的介绍,并不涉及一些像Docker环境的安装以及Docker的一些常见操作和命令. 阅读本文大概需要15分钟,通过阅读本文你将知道一下 ...

  8. IP路由实验之---Telnet远程登陆

    实验设备:一台华三路由器,一台PC 骤一,为路由器端口配置 IP 地址 <H3C>system-view #进入系统视图 [H3C] / #进入0/0端口 [H3C-Ethernet-/] ...

  9. nginx-web身份验证

    1.配置文件设置: server { listen 80; server_name www.longshuai.com www1.longshuai.com; location / { root /w ...

  10. php curl抓取类分享

    class UsualFunForNetWorkHelper { /*** * post请求数据 */ public static function HttpsPost($url, $data = n ...