MySQL服务怎么关闭

  介绍

这篇文章给大家介绍MySQL服务怎么关闭,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

1。停止复制

在一些特殊环境下,奴隶节点可能会尝试从错误的位置(位置)进行启动。为了减少这种风险,要先停止io线程,从而不接收新的事件信息。

mysql>, stop  slave  io_thread;

等sql线程应用完所有的事件之后,也将sql线程停掉。

mysql> show  slave 状态\ G   mysql>, stop  slave  sql_thread;

这样io线程和sql线程就可以处于一致性位置,这样中继日志就只是包含被执行过的事件,relay_log_info_repository中的位置信息也是最新的。

对于开启了多线程复制的奴隶,确保在关闭复制之前,已经填充了空白

mysql>, stop 奴隶;   mysql>, start  slave  until  sql_after_mts_gaps;, #应用完relay 日志中的差距   mysql>, show  slave 地位\ G  #要确保在之前已经停掉了sql_thread   mysql>, stop  slave ;

2。提交,回滚或杀死长时间运行的事务

1分钟内可以发生很多的事,在关闭时,innodb必须回滚未提交的事务。事务回滚的代价是非常昂贵的,可能会花费很长时间。任何事务回滚都可能意味着数据丢失,因此理想情况下关闭时没有打开任何事务。

如果关闭的是读写的数据库,写操作应该提前路由到其他节点。如果必须关闭还在接收事务的数据库、下面的查询会输出运行时间大于60秒的会话信息。根据这些信息再决定下一步:

mysql>, SELECT  trx_id,, trx_started,,(现在(),安康;trx_started), trx_duration_seconds,, id  processlist_id,,用户,如果(左(主机,(定位(& # 39;:& # 39;,,主机),安康;1)),=,& # 39;& # 39;,,,,离开(主机,(定位(& # 39;:& # 39;,,主机),安康;1))),主持人,,,,,,取代(SUBSTRING(信息,1,25)& # 39;\ n # 39;, & # 39; & # 39;), info_25 得到information_schema.innodb_trx  JOIN  information_schema.processlist 提醒innodb_trx.trx_mysql_thread_id =, processlist.id  WHERE (现在(),安康;trx_started),祝辞,60,ORDER  BY  trx_started;   + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +   | |,trx_id  trx_started ,,,,,,,, |, trx_duration_seconds  |, processlist_id  |, user  |, host ,,,,, |, command  |, time  |, info_25 ,,,,,,,,,,,,,,,,, |   + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +   |,511239,|,2020 - 04 - 22,16:52:23  |,,,,,,,,,,,,,,,,, 2754, |,,,,,,,,,,, 3515, |, dba , |, localhost  |, Sleep ,, |, 1101, |, NULL ,,,,,,,,,,,,,,,,,,,, |   |,511240,|,2020 - 04 - 22,16:53:44  |,,,,,,,,,,,,,,,,,,, 74, |,,,,,,,,,,, 3553, |, root  |, localhost  |, Query ,, |,,, 38, |, update  t1  set  name=皌est" |   + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +   2,rows  set 拷贝;(0.00,sec)

3。清空processlist

mysql要断开连接并关闭了。我们可以手动帮助mysql一下。

使用pt-kill查看并杀死活跃和睡眠状态的连接。这时应该不会有新的写连接进来。我们只是处理读的连接。

pt-kill ——主机=發ocalhost",——受害者=癮ll",,间隔=10,——忽略用户=皃mm | orchestrator",,繁忙时间=1,,空闲时间=1,——print [——杀死]

这里可以选择性地排除某些用户建立的连接。

4。配置innodb完成最大刷新(冲洗)

SET  GLOBAL  innodb_fast_shutdown=0;   SET  GLOBAL  innodb_max_dirty_pages_pct=0;   SET  GLOBAL  innodb_change_buffering=& # 39;没有# 39;;

禁用掉innodb_fast_shutdown可能会使得关闭过程花费几分钟甚至个把小时,因为需要等待undo日志的清洗和changebuffer的合并。

为了加速关闭,设置innodb_max_dirty_pages_pct=0并监控下面查询的结果。期望值是0,但并不总是能保证,如果mysql中还有活动的话。那么,查出的结果不再继续变小的话,就可以继续下一步了:

MySQL服务怎么关闭