菜鸟学Linux 第077篇笔记 mysql logs

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介:

菜鸟学Linux 第077篇笔记 mysql logs




内容总览

错误日志

一般查询日志

慢查询日志

二进制日志(重点)

中继日志

事务日志

存储引擎






日志系统

错误日志

一般查询日志

慢查询日志

二进制日志 DML, DDL(任何引起或可能引起数据库变化操作的日志)

复制,即时点恢复;

中继日志 (中继日志格式和二进制日志格式相同)

事务日志


SHOW GLOBAL VARIABLES LIKE '%log%';  查看日志相关全局变量




错误日志记录内容

服务器启动和关闭过程中的信息

服务器运行过程中的错误信息

事件调度器运行一个事件时产生的信息

在从服务器上启动从服务器进程时产生的信息


log_warnings 

log_error



一般查询日志(默认不开启)

log_output={TABLE|FILE|NONE}

SELECT 查询记录


general_log 

general_log_file



慢查询日志 (只是查询时间比较长与一般查询日志相同)

 SHOW GLOBAL VARIABLES LIKE '%long%';  指定慢查询语句执行时长


 log_slow_queries={YES|NO}

 long_query_time

 slow_query_log  

 slow_query_log_file



二进制日志

mysqlbinlog

可以重现 重新执行sql语句


二进制日志相关的全局变量

SHOW GLOBAL VARIABLES LIKE '%log%';

binlog_format  二进制日志文件格式{statement|row|mixed}


log_bin {on|off}  是否启用二进制日志(可以指定路径,不指定则在数据目录中)


binlog_cache_size 二进制日志缓冲大小默认32768


binlog_stmt_cache_size 二进制日志语句缓冲大小(不建议设置太大)


sql_log_bin={on|off} 用户控制二进制日志信息是否记录进日志文件


sync_binlog 0不同步 如果为其它数据表示以多长时间同步二进制日志文件到硬盘


expire_logs_days 日志的过期天数  (是指的所有日志不只是事务日志)


max_binlog_cache_size

max_binlog_size 

max_binlog_stmt_cache_size  

(此三条用来设置二进制日志文件大小的上限,一般不用配置)



二进制日志格式

基于语句 statement

基于行 row

混合方式 mixed


二进制日志事件

产生的时间 starttime

相对位置 position


二进制日志文件

索引文件   (默认数据库位置下 mysql-bin.index文件 )

二进制日志文件 (默认数据库位置下 mysql-bin.0000001-....)

(建议和数据库存储位置分开,最好硬盘级区分 基于数据可靠性,和性能考虑)


查看当前所拥有的二进制日志文件

SHOW BINARY LOGS;


查看当前使用的二进制日志文件   

SHOW MASTER STATUS;  


查看二进制文件里记录的内容   

SHOW BINLOG EVENTS IN 'mysql-bin.000005';

SHOW BINLOG EVENTS IN 'mysql-bin.000005' FROM 205;  指定从某个位置显示

SHOW BINLOG EVENTS IN '二进制日志文件名' [FROM pos];


手动让日志实现滚动

FLUSH LOGS;

SHOW MASTER STATUS;

重启mysql服务器也可以实现日志滚动


清除某个二进制日志文件之前的二进制日志文件

PURGE { BINARY | MASTER } LOGS {TO 'log_name' | BEFORE datetime_expr};

PURGE BINARY LOGS TO 'mysql-bin.000002';


即时点还原

当服务器出现故障时,虽然mysql有备份,但未必是故障时间点正好备份了数据

所以当mysql服务器出现故障时只可以还原故障之前某个备份时间点的数据,而备份

点之后的数据要想恢复就需要依靠二进制日志所存储的信息来还原到故障发生时的

数据库状态,需要手动去查找备份出备份时间点之后的二进制日志,将其导入数据服务

器里重新执行一次操作命令即可恢复到故障点时的数据服务器状态,此流程就叫做

即时点还原


mysqlbinlog  (命令行命令)

--start-datetime

--stop-datetime


--start-position

--stop-position


显示二进制日志文件全部内容 

mysqlbinlog mysql-bin.000004


显示指定时间的二进制日志文件内容

mysqlbinlog --start-datetime='2017-01-11 16:48:35' 

--stop-datetime='2017-01-12 01:21:52' mysql-bin.000004

(此为一行命令)

如果不指定结束时间则默认显示到文件尾部

将上述命令进行重定向写到某文件并以.sql结尾 则在进入数据库后

将此文件导入命令,即可实现即时点还原(这里只作解释之后有详细解释)


显示指定位置的二进制日志文件内容

与时间类似这里不再讲解,只需要把命令datetime 换成position 

=号后改为位置即可




中继日志

从主服务器的二进制日志文件中复制而来的事件,并保存为的日志文件

此日志文件会在从服务器里再执行一次复制过来的事件


IOPS

IO 100, 200

SSD 500, 1000, 




事务日志

事务性存储引擎用于保证原子性、一致性、隔离性和持久性

ACID (Atomicity Consistency Isolation Durability)


提交的事务要同步到数据硬盘

未提交的事务要撤消其事务操作


innodb_flush_log_at_trx_commit = {0|1|2}

0 每秒从缓存同步到事务日志一次(到内核时不会缓存,直接同步硬盘)

1 每事务提交便同步,并执行硬盘flush操作;(默认为1)

2 每事务提交同步,但不执行硬盘flush操作;


innodb_log_buffer_size

内存缓存大小


innodb_log_file_size

事务日志大小(不建议设置太大)


innodb_log_files_in_group

事务日志组文件个数 事务日志文件可以有多个,当一个写满后会切换到下一个事务

日志文件,被切换的事务日志将同步操作到数据硬盘


innodb_log_group_home_dir

事务日志存放目录


innodb_mirrored_log_groups

事务日志镜像



存储引擎

MyISAM

不支持事务

只支持表锁

不支持外键

支持B树索引,FULLTEXT索引,空间索引

支持表压缩


数据文件

.frm 表格式

.MYD 数据文件

.MYI 索引文件


InnoDB

事务

行级锁

支持B树索引,聚簇索引,自适应hash索引

表空间,raw磁盘设备(裸设备)


数据文件

.frm 表格式

.ibd 表空间


设置每表一个表空间 SHOW GLOBAL VARIABLES LIKE 'innodb%';

innodb_file_per_table=on


MRG_MYISAM

支持将MYISAM逻辑上合起来显示


CSV

将表存储为文本文件(数据库导入导出)


ARCHIVE

归档,将表归档压缩存放


MEMORY

将表存储到内存里(读写速度快,安全性相对低)


BLACKHOLE

黑洞存储引擎(以后再详细了解)



存储引擎也称之为表类型,一个库里边表的存储引擎可以不一样,

但是不建议混合使用存储引擎

(如果一个表支持事务一个表不支持,当撤消操作时 你懂得)

本文转自Winthcloud博客51CTO博客,原文链接http://blog.51cto.com/winthcloud/1891583如需转载请自行联系原作者

Winthcloud
相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
3天前
|
Linux 编译器 Android开发
FFmpeg开发笔记(九)Linux交叉编译Android的x265库
在Linux环境下,本文指导如何交叉编译x265的so库以适应Android。首先,需安装cmake和下载android-ndk-r21e。接着,下载x265源码,修改crosscompile.cmake的编译器设置。配置x265源码,使用指定的NDK路径,并在配置界面修改相关选项。随后,修改编译规则,编译并安装x265,调整pc描述文件并更新PKG_CONFIG_PATH。最后,修改FFmpeg配置脚本启用x265支持,编译安装FFmpeg,将生成的so文件导入Android工程,调整gradle配置以确保顺利运行。
24 1
FFmpeg开发笔记(九)Linux交叉编译Android的x265库
|
15天前
|
关系型数据库 MySQL Linux
linux CentOS 7.4下 mysql5.7.20 密码改简单的方法
linux CentOS 7.4下 mysql5.7.20 密码改简单的方法
19 0
|
1天前
|
关系型数据库 MySQL 中间件
【MySQL实战笔记】07 | 行锁功过:怎么减少行锁对性能的影响?-02 死锁和死锁检测
【4月更文挑战第19天】在高并发环境下,死锁发生在多个线程间循环等待资源时,导致无限期等待。MySQL中,死锁可通过`innodb_lock_wait_timeout`参数设置超时或`innodb_deadlock_detect`开启死锁检测来解决。默认的50s超时可能不适用于在线服务,而频繁检测会消耗大量CPU。应对热点行更新引发的性能问题,可以暂时关闭死锁检测(风险是产生大量超时),控制并发度,或通过分散记录减少锁冲突,例如将数据分拆到多行以降低死锁概率。
17 1
|
2天前
|
Linux Android开发
Linux(6)CH9434 SPI调试笔记
Linux(6)CH9434 SPI调试笔记
10 0
|
2天前
|
Linux
Linux(5)WIFI/BT调试笔记
Linux(5)WIFI/BT调试笔记
16 0
|
7天前
|
存储 关系型数据库 MySQL
Linux | MySQL基础
Linux | MySQL基础
|
7天前
|
关系型数据库 MySQL Linux
Linux联网安装MySQL Server
Linux联网安装MySQL Server
20 0
|
11天前
|
存储 关系型数据库 MySQL
【MySQL实战笔记】 04 | 深入浅出索引(上)-02
【4月更文挑战第9天】InnoDB数据库使用B+树作为索引模型,其中主键索引的叶子节点存储完整行数据,非主键索引则存储主键值。主键查询只需搜索一棵树,而非主键查询需两次搜索,因此推荐使用主键查询以提高效率。在插入新值时,B+树需要维护有序性,可能导致数据页分裂影响性能。自增主键在插入时可避免数据挪动和页分裂,且占用存储空间小,通常更为理想。然而,如果场景仅需唯一索引,可直接设为主键以减少查询步骤。
13 1
【MySQL实战笔记】 04 | 深入浅出索引(上)-02
|
13天前
|
存储 SQL 关系型数据库
【MySQL实战笔记】03.事务隔离:为什么你改了我还看不见?-02
【4月更文挑战第7天】数据库通过视图实现事务隔离,不同隔离级别如读未提交、读已提交、可重复读和串行化采用不同策略。以可重复读为例,MySQL使用多版本并发控制(MVCC),每个事务有其独立的视图。回滚日志在无更早视图时被删除。长事务可能导致大量存储占用,应避免。事务启动可显式用`begin`或设置`autocommit=0`,但后者可能意外开启长事务。建议使用`autocommit=1`并显式管理事务,若需减少交互,可使用`commit work and chain`。
29 5
|
监控 关系型数据库 应用服务中间件