mysql--2-- 数据存储文件及6类日志

数据存储文件

配置文件:  
    windows系统 : my.ini
    linux系统 : my.cnf
物理文件:
    数据库文件保存目录: mysql安装目录/data/  ; 新建一个数据库, data目录下会生成一个对应数据库名的文件夹; 
    不同存储引擎对应的表文件:
        myisam存储引擎的表: 表名.MYD (表数据文件) ;  表名.MYI (表索引信息文件) ; 表名.frm (mysql8.0之前主要存储表结构信息的文件)
        innodb存储引擎的表: 表名.idb (独享表的数据和索引信息文件) 或者 表名.idbata (共享表的数据和索引文件)

六类日志文件

查询日志:
    主要记录查询语句, 默认关闭, 不推荐开启 (耗资源)
    show variables like "%general_log%";   查询 查询日志是否开启和日志文件位置
        general_log             查询日志是否开启变量
        general_log_file        查询日志位置
    set global general_log = "on";        开启查询日志
    开启查询日志后, 没执行一次查询, 查询日志会记录下对应的信息, 如下图

mysq 数据存储文件及6类日志

使用set设置变量的值只会对当前数据库生效,如果mysql重启就会失效,永久生效的方法是将变量加到配置文件中. (mysqld选项中增加)

慢查询日志:
    记录mysql中运行时间超过long_query_time值的sql. 建议开启, 有利于排查sql的问题
    show variables like "%slow%";
        slow_query_log        慢查询是否开启
        slow_query_log_file    慢查询日志位置
    show variables like "long_query_time";    慢查询阈值
    set gloabal long_query_time = 3;    设置慢查询阈值
    测试: 
        select sleep(3);
        查看对应日志文件信息

错误日志: 
    记录mysql服务运行中产生的异常错误 (: 这个异常不是指sql异常,指的是服务异常)
    show variables like "log_error";  查看错误日志位置

二进制日志:
    记录数据库的变化, 包含DML,DDL语句. 误删数据库时, 可以通过二进制文件恢复数据
    show variables like "log_bin";    查看二进制日志是否开启
    show binary logs;    查看所有的二进制日志文件
    show master status; 查看当前二进制日志文件
    reset master;    删除所有的二进制日志文件
    flush logs;    清空所有的日志文件
    show binlog events in "二进制日志文件";    查询指定二进制文件信息,包含数据变化记录的节点
    使用二进制文件恢复数据:
    先模拟操作:
        create database mytest;    创建mytest数据库
        use mytest;    进入mytest数据库
        创建表 插入数据
        CREATE TABLE `user` (
          `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
          `username` varchar(20) DEFAULT NULL,
          `age` int(11) DEFAULT NULL,
          PRIMARY KEY (`id`)
        ) ENGINE=InnoDB DEFAULT CHARSET=utf8

        insert into `user`(username,age)values('name1',10);
        insert into `user`(username,age)values('name2',20);
        insert into `user`(username,age)values('name3',30);
        //删除表数据 删除表 删除数据库
        delete from user where id > 0;
        drop table user;
        drop database test;
    开始数据恢复
        /usr/local/mysql/bin/mysqlbinlog --start-position=初始节点 --stop-position=结束节点 /usr/local/mysql/bin/mysql-bin.000007 | mysql -uroot -p 
        输入root用户的密码,执行完成数据恢复
        注: 开始节点和结束节点可以通过 show binlog events in "二进制日志文件" 命令查看, "mysql-bin.000007" 是我正在使用的二进制日志文件. 如下图

mysq 数据存储文件及6类日志

中继日志: (暂不做解释)
    主要是在主从中做运用,同时这个文件会记录主节点binlog日志,再到从节点根据这个文件进行数据恢复

事务日志:
    1.重做日志: 主要是在事务已经提交了但是数据还未刷新到磁盘,mysql宕机了,在一次开启mysql服务的执行, 保证数据的一致性.
    2.回滚日志: 
        主要是在事务没有提交,在下一次mysql服务重启的时候执行
        当我们执行rollback命令的时候
本作品采用《CC 协议》,转载必须注明作者和本文链接
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!