`

(转)测试快速关闭innodb的方法

 
阅读更多
测试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的时间
最终达到减少影响用户的时间
参考资料
分享到:
评论

相关推荐

    MySQL管理之道 性能调优、高可用与监控.part2.rar

    1.1.20 可动态关闭innodb更新元数据的统计功能 37 1.2 安全性、稳定性的显著改变 38 1.2.1 复制功能加强 38 1.2.2 中继日志relay-log可自我修复 39 1.2.3 开启innodb严格检查模式 39 1.3 动态更改系统配置参数...

    SQLyog Ultimate v10.4.2 官方中文注册版

    SQLyog 是一个易于使用的、快速而简洁的图形化管理MYSQL数据库的工具,它能够在任何地点有效地管理你的数据库,而且它本身是完全免费的!!功能: 1、快速备份和恢复数据; 2、以GRID / TEXT 格式显示结果; 3、...

    MySQL 5.1中文手冊

    7.3.1. 锁定方法 7.3.2. 表锁定事宜 7.4. 优化数据库结构 7.4.1. 设计选择 7.4.2. 使你的数据尽可能小 7.4.3. 列索引 7.4.4. 多列索引 7.4.5. MySQL如何使用索引 7.4.6. MyISAM键高速缓冲 7.4.7. MyISAM索引统计集合...

    MySQL 5.1参考手册 (中文版)

    7.3.1. 锁定方法 7.3.2. 表锁定事宜 7.4. 优化数据库结构 7.4.1. 设计选择 7.4.2. 使你的数据尽可能小 7.4.3. 列索引 7.4.4. 多列索引 7.4.5. MySQL如何使用索引 7.4.6. MyISAM键高速缓冲 7.4.7. MyISAM索引统计集合...

    mysql官方中文参考手册

    7.3.1. 锁定方法 7.3.2. 表锁定事宜 7.4. 优化数据库结构 7.4.1. 设计选择 7.4.2. 使你的数据尽可能小 7.4.3. 列索引 7.4.4. 多列索引 7.4.5. MySQL如何使用索引 7.4.6. MyISAM键高速缓冲 7.4.7. MyISAM索引统计集合...

    MYSQL中文手册

    7.3.1. 锁定方法 7.3.2. 表锁定事宜 7.4. 优化数据库结构 7.4.1. 设计选择 7.4.2. 使你的数据尽可能小 7.4.3. 列索引 7.4.4. 多列索引 7.4.5. MySQL如何使用索引 7.4.6. MyISAM键高速缓冲 7.4.7. MyISAM...

    MySQL 5.1参考手册中文版

    7.3.1. 锁定方法 7.3.2. 表锁定事宜 7.4. 优化数据库结构 7.4.1. 设计选择 7.4.2. 使你的数据尽可能小 7.4.3. 列索引 7.4.4. 多列索引 7.4.5. MySQL如何使用索引 7.4.6. MyISAM键高速缓冲 7.4.7. MyISAM索引...

    MySQL 5.1参考手册

    7.3.1. 锁定方法 7.3.2. 表锁定事宜 7.4. 优化数据库结构 7.4.1. 设计选择 7.4.2. 使你的数据尽可能小 7.4.3. 列索引 7.4.4. 多列索引 7.4.5. MySQL如何使用索引 7.4.6. MyISAM键高速缓冲 7.4.7. MyISAM索引统计集合...

    MySQL5.1参考手册官方简体中文版

    7.3.1. 锁定方法 7.3.2. 表锁定事宜 7.4. 优化数据库结构 7.4.1. 设计选择 7.4.2. 使你的数据尽可能小 7.4.3. 列索引 7.4.4. 多列索引 7.4.5. MySQL如何使用索引 7.4.6. MyISAM键高速缓冲 7.4.7. MyISAM索引统计集合...

    mysql5.1中文手册

    MySQL如何打开和关闭表 7.4.10. 在同一个数据库中创建多个表的缺陷 7.5. 优化MySQL服务器 7.5.1. 系统因素和启动参数的调节 7.5.2. 调节服务器参数 7.5.3. 控制查询优化器的性能 7.5.4. 编译和...

    2017最新老男孩MySQL高级专业DBA实战课程全套【清晰不加密】,看完教程月入40万没毛病

    01-MySQL启动与关闭深入知识及原理.avi 02-登录MySQL知识深入讲解.avi 03-学会使用MySQL数据库的帮助.avi 04-修改mysql密码多方法实战及注意-排错.avi 05-找回丢失的mysql密码实战.avi 06-多实例找回丢失的mysql密码...

    MySQL 5.1官方简体中文参考手册

    目录 前言 1. 一般信息 1.1. 关于本手册 ...7.3.1. 锁定方法 7.3.2. 表锁定事宜 7.4. 优化数据库结构 7.4.1. 设计选择 7.4.2. 使你的数据尽可能小 7.4.3. 列索引 7.4.4. 多列索引 7.4.5. MySQL如何使用索引 ...

    PHP和MySQL Web开发第4版pdf以及源码

    13.3.2 通过InnoDB使用事务 13.4 外键 13.5 存储过程 13.5.1 基本示例 13.5.2 局部变量 13.5.3 游标和控制结构 13.6 进一步学习 13.7 下一章 第三篇 电子商务与安全性 第14章 运营一个电子商务网站 14.1 ...

    PHP和MySQL WEB开发(第4版)

    13.3.2 通过InnoDB使用事务 13.4 外键 13.5 存储过程 13.5.1 基本示例 13.5.2 局部变量 13.5.3 游标和控制结构 13.6 进一步学习 13.7 下一章 第三篇 电子商务与安全性 第14章 运营一个电子商务网站 14.1 我们要实现...

    PHP和MySQL Web开发第4版

    13.3.2 通过InnoDB使用事务 13.4 外键 13.5 存储过程 13.5.1 基本示例 13.5.2 局部变量 13.5.3 游标和控制结构 13.6 进一步学习 13.7 下一章 第三篇 电子商务与安全性 第14章 运营一个电子商务网站 14.1 ...

Global site tag (gtag.js) - Google Analytics