对MySQL慢❖查询日志进行分析的基本教程

对MySQL慢查询日志进行分析的基本教程

开启慢查询日志

对MySQL慢❖查询日志进行分析的基本教程

mysql>setglobalslow_query_log=1;

定义时间SQL查询的超时时间

mysql>setgloballong_query_time=0.005;

查看慢查询日志的保存路径

mysql>showglobalvariableslike'slow_query_log_file';

查看慢查询

cat/var/log/mysql/slow.log

为什么连接数据库时出现2003

这个错误有两个原因:

一是mysql数据库没启动(检查是否启动,可检查端口,可查看▨mysql的错误日志);

二是目标服务器拒绝连接,原因可能是mysql的允许连接数满了(可调整mysql的最大连接数,这个出现的概率比较小,因为默认连接数是比较大的),也可能是内存紧张,不能为连接分配出内存来(这个在目标服务器利用率很大时才会出现)。按以上排查下吧。

mysql在没事务,没备份的情况下⚘,过段

您好:首先这个情况一定是不正常的。

您最好监测一下,是某些表回档还是整库回档❖,大概多长时间出现,这有助于排查问题。

然后,从服务器方面看,有没有做Raid镜像,热备份,云盘快照等。

再然后,查看数据库日志,是否有异常连接和异常请求,排除SQL注入等因素。

再再然后,检测一下程序代码,是否有程序包含定时作业。

是否有对数据库操作的小程序或服务器组件,系统服务等。

最后,逐步停止会操作数据库的因素,逐一排查。

如何使用MySQL数✐据库

主从架构— —概念

binlog日志

MySQL的二进制日志可以说是MySQL最重要的日志了,它记录了所有的DDL和DML(除了数据查询语句)语句,以事件形式记录,还包含语句所执行的消耗的时间。

复制原理

1. 主库操作保留binlog日志

2. 从库的IO线程从主库拉取binlog日♨志,并生成中继日志(relay log)

3. 从库的SQL线程解析中继日志,并在本身回放

状态检查

主要通过判断IO线程和SQL线程是否处于Running判断复制是否正常,判断Seconds_Behind_Master参数代表数据同步是否延迟:

mysql> show slave statusG… Slave_IO_Running: YesSlave_SQL_Running: YesSeconds_Behind_Master: 0…

主从架构— —衍生各种扩展的主从架构

1. 一主多从

2. 双主复制

3. 级联复制

4. 等等

读写分离

大部分场景下,读的频率比写的频率会高很多。对MySQL慢❖查询日志进行分析的基本教程所以可以通过扩展多个SLAVE节点提高整体的使用性能。

数据备份

传统的备份包括三种

1. lvm snapshot(LVM快照备份)

2. mysqldump

3. Xtarbackup

那么要如何实现数据的一致性备份呢(一致性备份是所有数据/文件/磁盘 需要在同一个时间点进行备份)

LVM SNAPSHOT

1. 执行FTWRL(FLUSH TABLES WITH READ LOCK)

1.1上全局读锁(lock_global_read_lock)

1.2清理表缓存(close_cached_tables)

1.3上全局COMMIT锁(make_global_read_lock_block_commit)

2. 执行lvcreate 创建lv快照.

3. UNLOCK TABLES解锁

MYSQLDUMP

1. 开启可重复读事务隔离

2. 开启事务

3. 建立数据快照(可以理解为select from )

4. 结束事务

XTRABACKUP

1. 不是整体采用备份锁,只有特定阶段。

2. indodb阶段不需要加锁,ACID的C(持续性)是通过Redo log实现,通过线程增量记录redo log实现。

对MySQL慢❖查询日志进行分析的基本教程

原创文章,作者:Ame,如若转载,请注明出处:https://www.lbseo.cn/13285.html