mysql繁忙_在数据库繁忙时如何快速有效的关闭MySQL服务

如果InnoDB_buffer_size参数很大,缓冲区内的脏数据太多,那么关闭MySQL的时候

必须把脏数据刷新到磁盘,这个过程有可能是很漫长的,从而导致关闭MySQL服务的时间过长。

可以临时设置innodb_max_dirty_pages_pct=0,然后等到脏数据大部分都刷新到磁盘后(通过查看show engine innodb status命令输出中的Modified db pages,这个值应该很小),再手动关闭数据库。

方法1:

mysql>set global innodb_max_dirty_pages_pct=0;

Query OK, 0 rows affected (0.00 sec)

运行命令mysqladmin -uroot ext -i10 |grep dirty,检查状态变量值,等到它接近0的时候关闭它,如果是生产繁忙的系统,这个值可能会一直偏大,待innodb_max_dirty_pages的值很小时,就可以

用mysqladmin关闭MySQL了.

# mysqladmin -uroot ext -i10 |grep dirty

| Innodb_buffer_pool_pages_dirty                | 0                                                |

| Innodb_buffer_pool_bytes_dirty                | 0                                                |

| Innodb_buffer_pool_pages_dirty                | 0                                                |

| Innodb_buffer_pool_bytes_dirty                | 0

方法2:

mysql>set global innodb_fast_shutdown=2;  默认为1

Query OK, 0 rows affected (0.00 sec)

虽然这样可以快速关闭mysql,但启动时候需要执行更多的恢复操作.

Innodb_fast_shutdown三个值的含义:

Innodb_fast_shutdown告诉innodb在它关闭的时候该做什么工作。有三个值可以选择:

0表示在innodb关闭的时候,需要purge all, merge insert buffer,flush dirty pages。这是最慢的一种关闭方式,但是restart的时候也是最快的。后面将介绍purge all,merge insert buffer,flush dirty pages这三者的含义。

1表示在innodb关闭的时候,它不需要purge all,merge insert buffer,只需要flush dirty page。

2表示在innodb关闭的时候,它不需要purge all,merge insert buffer,也不进行flush dirty page,只将log buffer里面的日志flush到log files。因此等下进行恢复的时候它是最耗时的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值