MySQL 异常及处理方法
发布时间:2023-09-21 10:26:11 所属栏目:MySql教程 来源:
导读:在使用 MysqL 的过程中,我们会碰到各种各样的问题,如数据库突然响应很慢、表碎片空间占比过大等。本小节我们一起来学习一些常见的 MysqL 异常,以及响应的处理方法。
1. 主从同步数据异常,如何跳过错误?
由于
1. 主从同步数据异常,如何跳过错误?
由于
在使用 MysqL 的过程中,我们会碰到各种各样的问题,如数据库突然响应很慢、表碎片空间占比过大等。本小节我们一起来学习一些常见的 MysqL 异常,以及响应的处理方法。 1. 主从同步数据异常,如何跳过错误? 由于种种原因,有时候从库可能会出现因主从数据导致的无法执行的 sql 语句,那么此时就要跳过该sql 语句了。 1.1 binlog+position 模式 -- 在从库上操作 ) 跳过错误报错 MysqL> stop slave; MysqL> set global sql_slave_skip_counter =; MysqL> start slave; ) 查看同步状态 MysqL> show slave status\G 1.2 GTID 模式 方法一:直接跳过错误: -- 在从库上操作 ) 停止slave进程 MysqL> STOP SLAVE; ) 设置事务号,事务号从Executed_Gtid_Set获取,在session里设置gtid_next,即跳过这个GTID 如从show slave status拿到Executed_Gtid_Set为xxxx:- MysqL> SET @@SESSION.GTID_NEXT= 'xxxx:5' ) 设置空事物 MysqL> BEGIN; COMMIT; ) 恢复事物号 MysqL> SET SESSION GTID_NEXT = AUTOMATIC; ) 启动slave进程 MysqL> START SLAVE; 2. 如何清理表碎片 当某张表删除完大量数据,或 MysqL 运行很长时间(一般指半年)后,难免会产生表碎片,这时就要对表进行碎片清理。 ) 查询表碎片大小(一般碎片率超过%,可以考虑清理表碎片) MysqL> select t.table_name, t.table_schema, t.ENGINE, t.TABLE_ROWS, ROUND(t.DATA_LENGTH//,) DATA_LENGTH_MB, ROUND(t.INDEX_LENGTH//,) INDEX_LENGTH_MB, ROUND((t.DATA_LENGTH+t.INDEX_LENGTH)//,) SUM_LENGTH_MB, ROUND(t.DATA_FREE//,) DATA_FREE_MB, CONCAT(ROUND((t.DATA_FREE / (t.DATA_LENGTH + t.INDEX_LENGTH + t.DATA_FREE)) * ,),'%') FRAGMENT_RATE from information_schema.tables t where = and t.DATA_FREE != and (t.DATA_FREE / (t.DATA_LENGTH + t.INDEX_LENGTH + t.DATA_FREE)) >= -- 碎片率超过30% and t.TABLE_ROWS >= and ROUND(t.DATA_FREE//,) >= order by t.DATA_FREE / t.DATA_LENGTH desc ) 清理表碎片 -- MyISAM存储引擎 MysqL> OPTIMIZE TABLE tbl_name -- Innodb存储引擎 MysqL> ALTER TABLE tbl_name ENGINE = Innodb; 3. cpu突然爆表,如何解决? cpu 使用率突然暴增至 90% 以上,数据库响应非常缓慢,一般都是某个 sql 出现性能问题,耗光 cpu 资源。 ) 定位问题sql -- 找到执行时间很长,且占用会话比较多的sql MysqL> show processlist\G MysqL> select * from information_schema.processlist order by info desc\G ) 分析执行计划,判断sql是否存在优化空间 MysqL> explain select * from xxx where xxx=xxx\G ) 实施优化措施 这里就比较考验优化功力了,根据不同的问题sql,快速判断需要采取何种优化措施。最简单的例子,sql的where条件没有走索引,而且字段的选择性比较高,那这时就要考虑给字段创建相应的索引来解决。 (编辑:汽车网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |